diff --git a/docs/quality/qa-items-source-message.json b/docs/quality/qa-items-source-message.json
new file mode 100644
index 0000000..6bcc41f
--- /dev/null
+++ b/docs/quality/qa-items-source-message.json
@@ -0,0 +1,5 @@
+{
+ "scenario": "One tender-record item, empty shared document inventory",
+ "messageConsistent": true,
+ "text": "Listeye Geri Dön\nİncelendi olarak işaretle\nTakip Et\n🗂 Hazırlık Görevi Aç\nMal Alımı\nİKN: 2026/1582991\nEkleme:\nQA — Giresun laboratuvar\nKurum Adı\nGiresun TEST KURUMU\nİhale Tarihi & Saat\n10.09.2026 - 10:00\nŞehir / Bölge\nGiresun ()\nYaklaşık Maliyet\nGizli / Belirtilmemiş\nİhale Detayları\nBirim Fiyat Cetveli (PDF & Kaşe)\nİnteraktif\nYapay Zeka Asistanı\nHazırlık Checklist\nTeklif Asistanı\nAI\nİhale Açıklaması & Teslimat Koşulları\n\nBu yalnızca yerel arayüz test verisidir. Teklif geçerlilik süresi 120 takvim günü. Birim fiyat teklif. Bu yalnızca yerel arayüz test verisidir. Teklif geçerlilik süresi 120 takvim günü. Birim fiyat teklif. Bu yalnızca yerel arayüz test verisidir. Teklif geçerlilik süresi 120 takvim günü. Birim fiyat teklif.\n\nTeslimat Süresi\nTeslimat Yeri\nTeklif Cetveli Kalemleri\n\nİhale kaydında aşağıda gösterilen 1 kalem var. Ortak doküman havuzunda ayrıca çıkarılmış bir cetvel bulunamadı; mevcut kalemleri resmi dokümanla karşılaştırın. İhale dokümanından ortak havuza aktarılan kalemler diğer kullanıcılara da görünür.\n\nMalzeme / Kalem Listesi (1 Kalem)\n#\tMalzeme Adı\tMiktar\tTahmini Birim Fiyat\tToplam Tutarlar\n1\tSentetik test kalemi\t2 adet\t—\t—\nEkip Notları\nNot Ekle\nKUR FARKI HESAPLAYICI\nTCMB döviz satış\n\nTCMB bülteni: 04.09.2026 · Alındı: 06.09.2026 10:13:15\n\nUSD / TRY\n₺48.3195\nEUR / TRY\n₺56.1581\nTeklif Tutarı (TL)\nDolar Karşılığı:\n$310.43\nEuro Karşılığı:\n€267.10\nİHALE DOSYALARI & TAKVİM\nBirim Fiyat Cetveli (PDF Aç/Düzenle)\nGoogle / Outlook Takvime Ekle"
+}
\ No newline at end of file
diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md
index 02c8270..f4fefa9 100644
--- a/docs/quality/uygulama-durumu.md
+++ b/docs/quality/uygulama-durumu.md
@@ -481,3 +481,13 @@ Mevcut localhost:5175 QA sunucusunun canlı olduğu doğrulandı; yeniden başla
Değişiklikten sonra aynı tarayıcı akışı tekrarlandı: yeni alert, aynı taslak ve kullanılabilir Denetle düğmesi doğrulandı. Kanıtlar: `qa-offer-provider-error.json`, `qa-offer-provider-error-after.json`. Bu kayıtlar sağlayıcı yokluğu hata yolunu kanıtlar; gerçek AI üretimi, iki hesaplı tarayıcı geçişi, uzun analiz veya başarılı çıktı kabulü değildir. Yeni backend metni çalışan eski sunucuda ayrıca sınanmadı; tarayıcı yeni istemci dönüşümünü doğruladı.
Tüm 104 test ve üretim derlemesi geçti. Büyük paket uyarıları sürüyor. Planın kalan kapsamı açık; canlı yayın yapılmadı.
+
+### D05 / D09 — Kalem kaynakları ve boş/hata durumu ayrımı
+
+Tarayıcıda ihale kaydının bir kalemi görüntülenirken ortak havuz panelinde “kalem listesi henüz yok” mesajı görülmüştü. Panel artık ihale kaydında kalem varsa sayısını açıkça belirtir ve yalnız ortak doküman havuzunda ayrı cetvel bulunamadığını söyler. Kaynaklar sessizce birleştirilmedi; resmi dokümanla kontrol gereği korunur. Ortak liste doluyken başlık kaynağını belirtir.
+
+Ortak havuz istemcisi HTTP hata/bozuk yanıtı boş liste gibi sunmaz. Panel hata ve yeniden yükleme düğmesi gösterir. Otuz saniyelik bekleme sınırı, ihale değişiminde iptal ve İKN başına yeniden oluşturulan panel durumu eklendi; önceki ihalenin filtre/kalemleri yeni ihaleye taşınmaz.
+
+Gerçek tarayıcı kabulü: localhost:5175 QA Giresun detayında “İhale kaydında aşağıda gösterilen 1 kalem var” mesajı ve “Malzeme / Kalem Listesi (1 Kalem)” tablosu birlikte doğrulandı. Kanıt: `qa-items-source-message.json`. Bu sentetik veriyle kaynak gösterimi testidir; resmi cetvel doğruluğu veya tüm kaynak uyuşmazlıklarının çözümü değildir. Ağ hatası/iptal/zaman aşımı ise otomatik testlerde sınandı.
+
+Tüm 106 test ve üretim derlemesi geçti. Büyük paket uyarıları sürüyor. Planın tamamı ve canlı yayın açık.
diff --git a/src/components/TeklifCetveliKalemleri.jsx b/src/components/TeklifCetveliKalemleri.jsx
index 98e9ad1..7c5c88c 100644
--- a/src/components/TeklifCetveliKalemleri.jsx
+++ b/src/components/TeklifCetveliKalemleri.jsx
@@ -9,19 +9,23 @@ import { kalemleriGetir } from '../services/kalem';
* sunucu otomatik indiremiyor. Bir kullanıcı ihale dokümanını yüklediğinde
* kalemler ayrıştırılıp havuza yazılıyor ve bu liste herkese görünür oluyor.
*/
-export const TeklifCetveliKalemleri = ({ ikn }) => {
+export const TeklifCetveliKalemleri = ({ikn, knownItemCount = 0}) =>
Ortak doküman kalemleri yüklenemedi. {durum.hata}
+ +- Bu ihalenin kalem listesi henüz havuzda yok. Kalemler EKAP'ın API'sinde yayımlanmıyor; - yalnızca ihale dokümanının içinde bulunuyor. Aşağıdan dokümanı yüklerseniz kalemler - otomatik çıkarılır ve bu ihale tüm kullanıcılarda kalemleriyle listelenir. + {knownItemCount > 0 + ? `İhale kaydında aşağıda gösterilen ${knownItemCount} kalem var. Ortak doküman havuzunda ayrıca çıkarılmış bir cetvel bulunamadı; mevcut kalemleri resmi dokümanla karşılaştırın.` + : 'Ortak doküman havuzunda bu ihale için kalem bulunamadı. Resmi ihale dokümanını yükleyerek kalemleri çıkarmayı deneyebilirsiniz.'} + {' '}İhale dokümanından ortak havuza aktarılan kalemler diğer kullanıcılara da görünür. +