diff --git a/docs/quality/uygulama-durumu.md b/docs/quality/uygulama-durumu.md
index e485222..e01a768 100644
--- a/docs/quality/uygulama-durumu.md
+++ b/docs/quality/uygulama-durumu.md
@@ -1131,3 +1131,10 @@ Taslak türü seçicisine erişilebilir ad eklendi. Üretim derlemesi geçti. Ö
- Tarayıcı testinde bağlantı kaldırıldıktan sonra tüketilmiş kodun ekranda kaldığı ve Doğrula düğmesinin açık olduğu bulundu. Bağlama/kaldırma tamamlandığında kod artık temizleniyor. Kod yenileme başlarken eski kod kaldırılıyor. Sunucunun geçersiz/süresi dolmuş kod hatası ayrı `TELEGRAM_CHALLENGE_INVALID` koduyla taşınıyor; istemci bu durumda eski kodu temizliyor.
- Dokuz tarayıcı kontrolü geçti: koddan önce doğrulama kapalı, sunucu kodu görünür, süre açıklaması, farklı yeni kod, önceki mesajın reddi, başarılı sentetik bağlama, kaldırmada eski kodun temizlenmesi, doğrulamanın kapanması ve kaldırma onayı. Kanıt `rapor/qa-telegram-link-flow.json`. Test sekmeleri ve bu çalışmanın geçici sunucusu kapatıldı.
- 266 test ve build başarılı; son hata-kodu doğrulaması için üç Telegram birim testi ayrıca geçti. Süre dolması sunucu testinde doğrulandı; süre hatası sonrası kod temizleme kolu bu tarayıcı koşusunda ayrıca tetiklenmedi. Gerçek sağlayıcıda bağlama/gönderim yapılmadı. Genel planın diğer kabul maddeleri açık.
+
+### 2026-09-06 — Telegram sağlayıcı hatası ile başarılı test ayrımı
+
+- Kayıtlı sohbet varken sunucu bot tokenı kaldırılmışsa eski test endpointi sendTelegram'ın false dönüşünü yok sayıp success:true veriyordu. Artık yapılandırılmamış hizmet 503, kimliği olmayan kabul hata döndürür. İstek gerçek sohbet/mesaj kabul kimliğini ister; istemci de dolu kimlik olmadan başarı göstermez ve otomatik tekrar yapmaz. UI 'sağlayıcı kabul etti, sohbetinizde kontrol edin' der.
+- getUpdates doğrulaması HTTP başarısı, boolean ok:true ve gerçek sonuç dizisi gerektiriyor. Eksik/yanlış tipte sonuçlar artık boş liste gibi 'kod bulunamadı' sayılmıyor; sağlayıcı yanıt hatası olarak bildiriliyor.
+- 269 test ve build başarılı. Yeni testler kaydedilmiş bağlantı + yapılandırılmamış hizmetin HTTP 503 vermesi, kimliksiz test kabulünün istemcide reddi/tekrarlanmaması ve bozuk güncelleme yanıtlarını kapsıyor. HTTP test sunucusunda Telegram tokenı açıkça boş bırakılıyor; yalnız geçici veri deposu kullanılıyor. Gerçek Telegram mesajı gönderilmedi.
+- Test gönderimi yanıtında id alanı zorunlu hale geldi; ön yüz/sunucu birlikte güncellenmeli. Test mesajı düğmesi için kalıcı istek tekrar engeli ve gerçek sağlayıcı uçtan uca kabulü henüz doğrulanmadı. Genel plan açık.
diff --git a/server/index.js b/server/index.js
index 69746d9..6e1a216 100644
--- a/server/index.js
+++ b/server/index.js
@@ -911,8 +911,10 @@ const server = http.createServer(async (req, res) => {
const body = await readBody(req);
if (body.islem === 'test') {
if (!tg?.chatId) return json(res, 400, { success: false, error: 'Telegram bağlı değil' });
- await sendTelegram(tg.chatId, '✅ İhaleist bağlantı testi — bildirimler bu sohbete gelecek.');
- return json(res, 200, { success: true });
+ if(!telegramConfigured())return json(res,503,{success:false,error:'Telegram hizmeti etkin değil.'});
+ const receipt=await sendTelegram(tg.chatId,'✅ İhaleist bağlantı testi.',{parseMode:null,returnReceipt:true});
+ if(!receipt?.id)throw new Error('Telegram gönderim kabulü doğrulanamadı.');
+ return json(res,200,{success:true,id:receipt.id});
}
const linker=createTelegramLinker(store);
if(body.islem==='kod'){
diff --git a/server/telegram.mjs b/server/telegram.mjs
index 526bd77..2443224 100644
--- a/server/telegram.mjs
+++ b/server/telegram.mjs
@@ -57,7 +57,7 @@ export async function kodIleBagla(kod, {issuedAt,expiresAt,now=Date.now()} = {})
if(!/^[a-f0-9]{48}$/.test(String(kod))||!Number.isFinite(issuedAt)||!Number.isFinite(expiresAt)||now>=expiresAt)return null;
const r = await fetch(`${API()}/getUpdates?limit=100`, { signal: AbortSignal.timeout(15000) });
const d = await r.json().catch(() => ({}));
- if (!d.ok) throw new Error(d.description || 'getUpdates başarısız');
+ if (!r.ok || d.ok!==true || !Array.isArray(d.result)) throw new Error(d.description || 'Telegram güncelleme yanıtı doğrulanamadı. Yeniden deneyin.');
const aranan = String(kod);
for (const u of [...(d.result || [])].reverse()) {
const m = u.message;
diff --git a/src/components/tools/TelegramBaglanti.jsx b/src/components/tools/TelegramBaglanti.jsx
index 72ed16b..a331d7d 100644
--- a/src/components/tools/TelegramBaglanti.jsx
+++ b/src/components/tools/TelegramBaglanti.jsx
@@ -71,7 +71,7 @@ const TelegramPanel = ({isAdmin}) => {
) : d.bagli ? (