# 01 · Arşiv tablosundaki yanlış `unitur` etiketi kapatıldı (BACKLOG #21) Dal: `gece/0922-unitur-kacagi` (dünkü dalın devamı) · Kaynak: `2026-09-22/09-p2-unitur.md` §5-A, `BACKLOG.md` #21 Commit'ler: `9722689` kod · `c5fd2cb` veri ## Özet (5 madde) 1. **`programs_arsiv`'de 85 satır düzeldi**: 61 `unitur` (`DEVLET` → `YURTDISI KAMU`; 31 ULUSLARARASI BALKAN + 30 ULUSLARARASI SARAYBOSNA) ve 24 `il` (Balkan'da `SARAYBOSNA - BOSNA - HERSEK` → `ÜSKÜP-MAKEDONYA`). Arşiv ile `programs` arasında `unitur` farkı olan kurum: **2 → 0**. 2. **Puan/sıra/kontenjan/yerleşen kolonlarında değişen satır: 0.** Her iki tablonun 45 kolonu id üzerinden tek tek karşılaştırıldı; `netler` ve `veri_meta` de dokunulmadı. Fark raporu §2'de ve veri commit'inin gövdesinde. 3. **Denetim de genişledi:** `veri-kalite` kontrol 13 ve 14 artık arşivi de tarıyor. Genişletme olmadan iki tablo sessizce ayrışabilirdi — kusur duran DB'de ikisi de `KALDI` verdi (çıkış kodu 1), düzeltmeden sonra `GEÇTİ`. Son durum: **0 ZORUNLU kontrol kaldı, 3 uyarı** (üçü de dünküyle birebir aynı, hiçbiri bu işten doğmadı). 4. **Dünkü yanlış rakam kayda geçti.** `cto` denetimi (`12-kod-denetimi.md` O1) haklı: `1df86cf` gövdesindeki "hub'da Devlet listesi 170 → 166" yanlıştı; 170/166 ham `programs.universite` ad sayısıdır. Doğru hub değişimi **132 → 129 kurum**. Yeni kod commit'inin gövdesinde düzeltme yazılı; entegrasyon build'inin ürettiği HTML de 129 gösteriyor (`.next/server/app/universiteler.html`). 5. **Betik idempotent**, entegrasyon dalı tazelendi: `gece/0922-entegrasyon`'a merge edildi (çakışma yok, `scripts/veri-kalite.ts` auto-merge), `pnpm build` temiz. `tsc` + `eslint` temiz. ## 1. Ne değişti | Dosya | Değişiklik | |---|---| | `scripts/unitur-onar.ts` | Aşama D (`KURUM_DUZELT`) artık `programs` **ve** `programs_arsiv` üzerinde koşuyor (tablo varsa). A/B/C aşamaları `programs`'ta kaldı — arşivde NULL `unitur` yok. Kapanış dağılımı iki tablo için basılıyor. | | `scripts/veri-kalite.ts` | Kontrol 13 (baz ad başına tek `unitur`) ve 14 (DEVLET etiketi Türkiye ili ile destekli) kaynak ilişkisi `programs` → `programs` ∪ `programs_arsiv`. Tek yeni sabit (`KURUMLAR`), kontrol gövdeleri aynı. | | `data/yokatlas.db` | 85 satır, ayrı commit. | Neden arşivde vardı: kapanan programlar `programs`'tan arşive olduğu gibi taşınıyor, yanlış etiket de beraberinde gitmiş. Dün Aşama D yalnız `programs`'a uygulandığı için arşiv geride kaldı. Kapsam dışı bırakılan (bilerek): Saraybosna Ü.'nin `il` değeri (**kurum gerçekten Saraybosna'da**), arşivdeki 28 boş `il` (eksik, eksik olarak görünmeli), ad normalizasyonu (arşivde tire-boşluklu duplikat ad yok — sorguyla doğrulandı). Kıbrıs Amerikan'ın arşivde hiç satırı yok. ## 2. Fark raporu (öncesi/sonrası) Düzeltme öncesi DB `sqlite3 -readonly … .backup` ile scratchpad'e alındı; `ATTACH` ile **her tablonun her kolonu** id üzerinden karşılaştırıldı. ``` programs: eski 21493 → yeni 21493 | 45 kolon | kayıp/yeni id 0 | DEĞİŞEN: yok programs_arsiv: eski 3735 → yeni 3735 | 45 kolon | kayıp/yeni id 0 | DEĞİŞEN: unitur=61, il=24 netler: eski 62975 → yeni 62975 veri_meta: eski 37 → yeni 37 her iki tabloda 34 yıl/ölçü kolonu (sıra/puan/kontenjan/yerleşen + 2025 ek kontenjanları, 2021-2026) Σ sağlaması: BİREBİR AYNI ✓ ``` `unitur` dağılımı (`programs_arsiv`): `DEVLET 1106→1045`, `YURTDISI KAMU 8→69`; toplam 3735 sabit. `programs` dağılımı hiç değişmedi. Dosya 4 KB (bir sayfa) büyüdü — WAL checkpoint; satır sayıları sabit. ## 3. Kabul kriterleri | # | Kriter | Sonuç | |---|---|---| | 1 | Arşivde üç kurumun `unitur`/`il` değerleri `programs` ile tutarlı | ✅ `programs_arsiv` ↔ `programs` `unitur` farkı olan kurum: **0** (önce 2). Balkan arşivde `YURTDISI KAMU`, ili `ÜSKÜP-MAKEDONYA` (24) / boş (7); Saraybosna `YURTDISI KAMU` | | 2 | `pnpm veri-kalite --yil 2026 --db data/yokatlas.db` → 0 ZORUNLU | ✅ `Sonuç: 0 ZORUNLU kontrol kaldı, 3 uyarı.` | | 3 | Puan/sıra/kontenjan kolonlarında hiçbir değişiklik yok, fark raporu commit'te | ✅ §2; rapor `c5fd2cb` gövdesinde | | 4 | `tsc` + `lint` temiz | ✅ `npx next typegen && npx tsc --noEmit` → 0; `npx eslint scripts/unitur-onar.ts scripts/veri-kalite.ts` → 0 | | 5 | İdempotent | ✅ İkinci koşu: `programs` 0/0, `programs_arsiv` 0/0, A/B/C 0 | Denetimin gerçekten yakaladığının kanıtı — **kusur duran DB'de** (yalnız arşiv yanlış, `programs` dün düzeltilmişti) genişletilmiş kontroller: ``` KALDI baz ad başına tek unitur — … ULUSLARARASI BALKAN ÜNİVERSİTESİ/YURTDISI KAMU,DEVLET/81 ; ULUSLARARASI SARAYBOSNA ÜNİVERSİTESİ/YURTDISI KAMU,DEVLET/68 KALDI DEVLET etiketi Türkiye ili ile destekli — … BALKAN/SARAYBOSNA - BOSNA - HERSEK/31 ; SARAYBOSNA/30 Sonuç: 2 ZORUNLU kontrol kaldı (çıkış kodu 1) ``` Kalan 3 uyarı (dünküyle aynı, bu işten doğmadı): `il boş` 110 satır, `kimlik ATLANDI` (`data/ham` repoda yok), `yetim netler` 2066. ## 4. Kullanıcıya yansıyan etki **Bugün: yok.** `src/` tarafında `programs_arsiv`'i okuyan hiçbir SQL yok (tablo yalnız `src/lib/kapanan-sluglar.ts`'te bir yorumda geçiyor); sihirbaz havuzu ve katalog yalnız `programs`'tan besleniyor. Bu düzeltme **önleyici**: arşiv ileride okunduğunda (kapanan program sayfası, "bu bölüm kapandı" bilgisi) aynı sızıntı — devlet filtresine giren Bosna/Makedonya programları — geri gelmesin diye. Entegrasyon build'inin HTML'inde hub sayıları değişmedi: Devlet **129**, Vakıf **78**. ## 5. Entegrasyon `gece/0922-entegrasyon` dalı `git merge --no-edit gece/0922-unitur-kacagi` ile tazelendi — çakışma yok (`scripts/veri-kalite.ts` auto-merge, dünkü `0e689e6` "Tür" kartı düzeltmesiyle çatışmıyor). `pnpm build` temiz: 259 üniversite sayfası + 493 sayfalama yolu prerender edildi, hata/uyarı yok. Çalışma ağacı temiz. ## Bilal'den istenen 1. **Dünkü rakam düzeltmesini gözden geçir** — `9722689` gövdesinde "170 → 166 yanlıştır, doğrusu 132 → 129" satırı duruyor; merge mesajına taşımak istersen oradan alabilirsin. **~2 dk.** 2. Karar: **§5-B (`data/yokatlas.db-shm` / `-wal` git'ten çıkarılsın mı)** hâlâ açık — dün `.gitignore`'da commit'lenmemiş değişiklikleriniz olduğu için dokunmadım, bugün de dokunmadım. **~2 dk.** 3. Yok (2. madde dışında bu iş için istenen bir şey kalmadı).