Some checks failed
QA Gate (P0/P1) / Test affected app (pull_request) Has been cancelled
Sorun (2026-08-01): wait=0/active=0 iken scan backlog=11495 hesaplıyordu — hepsi günlük-bütçe ile ertesi gün 00:00'a park edilmiş pcat job'ı. backlog>maxBacklog olduğu için Phase-2 günün çoğunda askıdaydı; 2143 kısmi araç ilerlemiyordu. Adversarial analiz kritik uyarı verdi: delayed'ı gate'ten çıkarmak TEK BAŞINA 470k runaway'i tekrarlar (üretim ~288k job/gün vs bütçe 65k/gün; bütçe-defer'leri skipAttempt ile attempts tüketmediğinden asla düşmez). Bu yüzden üretim kaynağında kesiliyor + ikinci tavan ekleniyor: - Gate ikiye ayrıldı: pressure (waiting+active+10dk içinde vadesi gelen delayed, HER İKİ kuyruk) vs maxBacklog; total (tüm bekleyen) vs HARD_MAX_TOTAL_JOBS=50k. zcount BullMQ delayed ZSET score'u (dueMs*4096+seq) ile; hata halinde fail-CLOSED. - ÜRETİMİ KES: scan, günlük main-lane bütçesi dolmuş kaynağı eligible'dan düşürür. - Admission control JOB cinsinden (EST_JOBS_PER_VEHICLE=400), araç cinsinden değil. - Günlük bütçe lane-aware (fast lane'e %20 rezerv) + READ-then-INCR (sayaç artık defer'lerle şişmiyor; 48531 vs 30000 gözlemi) + 45dk jitter (thundering herd). - KÖK NEDEN: addJob artık boolean, queueCategoryJob sayı döndürüyor; progress.total yalnız GERÇEKTEN kuyruğa giren job'ı sayıyor. Şişmiş total zinciri asla "finished"a ulaştırmıyordu → araç fullyFetched işaretlenmiyor → scan sonsuza dek yeniden seçiyordu (~25/gün platosu). processInit queued===0 ise finalizeVehicle. - prefetch:scheduled:<id> ÇAKIŞMASI: backfill artık :backfill: namespace'i yazıyor; eski 6h TTL kullanıcının fresh-decode fast-lane init'ini sessizce atlatıyordu. TTL 6h→36h (bütçe-park edilmiş zincir ~24h yaşıyor). - Phase-2 artık kalıcı vehicles.fullyFetched'i hedefliyor (efemeral marker değil). - CATEGORY_CAP DB'den ölçülüyor (her processInit'te sıfırlanan sayaçtan değil). 537 test geçti. Bütçe artışı (PREFETCH_DAILY_PCAT) BU PR'da DEĞİL — ayrı adım. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>