# WP-3/A — spec'te normatif hükmü olan ama emit_proof korpusunda hiçbir
# GtfsSpec notice'ının ÇAPALANMADIĞI alanlar. Biçim: dosya:alan  hükümler [kanıt].
# 1 alan.
#
# Bu bir BORÇ defteridir, kapı değil: eksik kural kimseyi yanlış REDDETMEZ,
# ama boşluk sessizce BÜYÜMEMELİ. Kural eklenince satır düşer.
#
# ⚠️ ALT SINIR — "hiçbir kural yok" DEMEK DEĞİL. Bir hüküm ölçülüyor olduğu
# hâlde burada GÖRÜNEBİLİR: fixture kuralın yalnız bir dalını tetiklerse ya da
# kural `field=None` emit ederse çapa düşmez. İkisi de 2026-08-02'de gerçekten
# oldu ve İKİSİ DE GİDERİLDİ (aşağıya bak) — ama desen tekrar edebilir.
# DOĞRU İFADE: "bu alanların normatif hükmü var ama emit_proof korpusunda
# bunlara bağlı bir Spec notice çapası görünmüyor" — "N eksik kuralımız var" DEĞİL.
#
# ⚠️ HÜKÜM ÜRETİMİ KABA: yalnız alan tablosunun Presence/Type/PK sütunlarından
# türetilir. Düzyazı koşullar ("yalnız B=1 iken", "ikisinden biri zorunlu",
# "A ve B birlikte"), dosyalar arası koşullar, sefer içi tutarlılık ve GeoJSON
# iç yapı şartları KAPSAM DIŞIDIR. Bu defter spec'in TÜM normatif hükümlerini
# ölçmez, yalnız alan tablosundan türetilebilen bölümünü ölçer.
#   [denetim-yok] = alan adı k2–k7 denetim aşamalarında hiç geçmiyor → boşluk KESİN
#                   (k1_parse.rs dışlanır: known_columns her sütunu zaten sayar).
#   [yalnız: …]   = alanı ölçen kural VAR, ama Spec sınıfı DEĞİL. Boşluk değil;
#                   karar: hüküm Spec meselesi mi, mevcut kural yeterli mi?
#                   ⚠️ Bu işaret "hüküm KARŞILANDI" DEMEZ — yalnız "bu kural bu
#                   alanda notice üretti" der. Ör. route_text_color → RTS_007
#                   (hex format) + RTS_008 (kontrast); RTS_008 meşru Quality'dir
#                   ama spec'in Color-tipi hükmünü karşılamaz.
#   kanıtsız satır  = ADJUDİKASYON gerekir; ÖNCE MEVCUT KURALI ARA.
#
# ── DURUM (2026-08-02): DEFTER BOŞ — ölçülebilen her hüküm çapalanıyor ────
# Defter 32 satırla açıldı; 9'u KAPANDI (RTS_007 Spec'e taşındı;
# AGN_012/RTS_024/TRN_008 sınıfı düzeltildi; `Phone number` hükmü uydurmaydı,
# atom kaldırıldı → 3 satır düştü; attributions route_id/trip_id issue #62
# ile ATR_011/ATR_012'ye ayrıldı → 2 satır düştü). Kalanların HER BİRİ incelendi:
#   • booking_rules booking_url/info_url .. ✅ KAPANDI (BKR_020/021)
#   • fare_leg_join_rules (4 alan) ........ ✅ KAPANDI (FLJ_001..004)
#   • issue #61 ........................... TAMAMI KAPANDI (9 satır):
#     STM_058 · DQ_021 genişletildi (attribution_id + route_networks.route_id)
#     PTH_027 · STP_042 · NET_002 · NET_003 · RCT_007 · RTS_029 · TRN_015
#   • calendar 6 gün (enum) ............... ✅ KAPANDI: artefakt olduğu
#     doğrulandı ve GİDERİLDİ — fixture yedi AYRI servisle yedi günü de bozuyor
#     (tek satır yetmez: CAL_002 dedup düzeyi Entity, servis başına tek notice).
#   • routes route_short_name/route_long_name  ✅ KAPANDI: RTS_003 hükmü zaten
#     ölçüyordu ama `field=None` emit ediyordu. Artık iki alanı da adlandırıyor
#     (`route_short_name|route_long_name`) — repoda yerleşik boru konvansiyonu.
#     Değişikliğin gerekçesi defter DEĞİL: R2'nin "Alan" sütunu, feed'i yayından
#     alıkoyan bir bulguda boş kalıyordu.
#
# ⚠️ DEFTERİN BOŞ OLMASI "SPEC'İN TAMAMI ÖLÇÜLÜYOR" DEMEK DEĞİLDİR — yalnız
# ALAN TABLOSUNDAN türetilebilen hükümler için geçerlidir (yukarıdaki kapsam
# uyarısına bak). YENİ bir satır çıkarsa ya spec değişmiştir ya bir kural
# kalkmıştır ya da bir fixture zayıflamıştır — testi düşürür, adjudike edilmelidir.
#
# Yeniden üretmek: UPDATE_LEDGER=1 cargo test -p gtfs-pipeline --test emit_proof \
#   spec_coverage_gaps_match_ledger
attributions.txt:attribution_id  unique  [yalnız: ATR_001]
