Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
20 KiB
12 — Bağımsız kod denetimi (Tur 5)
Dal: gece/0922-entegrasyon @ 9e1506d · Taban: main @ 9bd448b · Denetçi: cto (kodu yazmadı)
Kapsam: git diff 9bd448b..HEAD — 20 dosya, +948/−38, data/yokatlas.db binary dahil. Salt okuma; hiçbir dosya değiştirilmedi, commit atılmadı, git status entegrasyon worktree'sinde temiz.
HÜKÜM
İncelemeye çıkabilir. Kritik bulgu yok; veri bütünlüğü bağımsız olarak doğrulandı ve iddia edildiği gibi çıktı. Ancak dalı Bilal'in önüne koymadan önce iki tek-satırlık düzeltme yapılmasını öneriyorum (Y1 ve O2 aynı dosyayı ilgilendirmiyor, ikisi birlikte ~10 dk): biri P4'ün tek çıktısını okunabilir kılıyor, diğeri yanlış bir doğrulama rakamını kayda geçiriyor. Bunlar yapılmazsa da dal çalışır ve kullanıcıya zarar vermez — yalnız 2 Kasım'daki ölçüm okuması bozuk olur.
Özet (5 madde)
- Veri commit'i temiz.
data/yokatlas.db'nin iki sürümünü ayrı kopyalara çıkarıp 45 kolonu tek tek kıyasladım: değişen yalnızunitur(100 satır) veil(26 satır).idkümesi aynı,programs_arsiv/netler/veri_metasıfır fark, 2021–2026 puan/sıra/kontenjan/yerleşen kolonlarında 0 satır değişti. P2'nin iddiası birebir doğru. - Paketler birleşince doğru davranıyor. P3'ün boş durum varyantı P2'nin yeni
uniturdeğerleriyle üç kurumun üçünde de doğru cümleyi veriyor — kod okumasıyla değil, dalın kendi ürettiği statik HTML'den doğrulandı (Kıbrıs Amerikan, Balkan, Saraybosna → "URAP yalnız Türkiye'deki üniversiteleri sıralıyor"). Hub'da üçü de "KKTC ve Yurt Dışı" bölümüne geçmiş. - P4'ün tek çıktısı ölçüm olarak kullanılamaz durumda.
sihirbaz_adim{1}oturum başına tekil (olayBirKez),{2}/{3}ise geçiş başına atılıyor. Paydayla pay farklı birimde olduğu için huni oranı %100'ü aşabilir. Kodun kendi yazılı kuralı (analitik.ts:23) bu tercihe karşı. Tek kelimelik düzeltme. - P2'nin rapor/commit rakamlarından biri yanlış: "
/universitelerhub'ında Devlet listesi 170 → 166". Gerçek sayı üretilmiş HTML'de 129 (öncesi 132). Kriterin kendisi karşılanıyor, yalnız kanıt rakamı ham DB adlarını sayıyor ve yanındaki "iki yazım iki ayrı slug" gerekçesi de yanlış. - P1'in mobil iddiası doğru, P3'ün atıf şartı sağlam.
TableCell/TableHeadvarsayılanıwhitespace-nowrap+ kapoverflow-x-auto+ program hücresitruncate→ etiket kesilmez, satır taşmaz. URAP sayısı 198 sayfada, hepsinde aynı ekrandarel="noopener"link,nofollowyok; sayı derin sayfalarda hiç çizilmiyor, dolayısıyla "linksiz sayı" hiçbir yerde oluşmuyor.
Bulgular (şiddet sırasına göre)
KRİTİK — yok
YÜKSEK
Y1 · Huninin paydası ile payı farklı birimde; oran %100'ü aşabilir
Dosya: src/features/sihirbaz/components/sihirbaz-adimlar.tsx:154-156 (yeni) ile :220 (mevcut)
// :154-156 — oturum başına EN FAZLA BİR KEZ
useEffect(() => { olayBirKez("sihirbaz_adim", { adim: 1 }, "adim1"); }, []);
// :220 — her ileri geçişte, sınırsız
if (yeniAdim > adim) olay("sihirbaz_adim", { adim: yeniAdim + 1 });
olayBirKez sessionStorage anahtarıyla tekilleştiriyor (src/lib/analitik.ts:169-184), olay tekilleştirmiyor.
Somut senaryo (tek sekme, tek oturum): Öğrenci ana sayfadaki hero formundan sıralamasını girer, sihirbazı 1→2→3 tamamlar → adim:1 ×1, adim:2 ×1, adim:3 ×1. /sonuc'a düşer, "Tercihlerini güncelle" ile tercih kapısını açar → SihirbazAdimlar yeniden mount olur ama sessionStorage'da kolaytercih.olay.sihirbaz_adim.adim1 zaten yazılı, adim:1 atılmaz; öğrenci yine 1→2→3 gider → adim:2 ×2, adim:3 ×2. Panelde adım 1→2 geçiş oranı %200 görünür. Aynı şey /bolum ve /universite sayfalarında iki ayrı CtaSiraForm (üst ve alt) bulunduğu için tek sayfada da olur.
Neden bu bir tasarım tercihi değil: src/lib/analitik.ts:22-24 aynı sorunu daha önce yaşayıp yazıya dökmüş:
liste_uretim_basladi… BilerekolayBirKezKULLANILMAZ: aynı oturumdaki ikinci deneme de sayılmalı, yoksa payda başarıdan (liste_olusturuldu) küçük kalır.
P4 tam tersini yapmış ve bunu raporunda tartışmamış (08-p4-olcum.md, kabul kriteri 1 yalnız "iki kez düşmesin"e bakıyor — kriter karşılanıyor, ölçüm bozuluyor).
Önerim (tek kelime, mevcut serileri bozmaz): olayBirKez → olay. Mount zaten "sihirbaz bir kez açıldı"ya eşit; 1→2→1→2 gezinmesi unmount etmediği için CEO'nun "tekrar düşmesin" kriteri korunur, ikinci açılış ise adim:2/{3} ile aynı mantıkla yeniden sayılır. Alternatif (2 ve 3'ü de oturum-tekil yapmak) doğru ama sihirbaz_adim{2,3} serisinde ikinci bir kırılma yaratır — o yüzden önermiyorum.
ORTA
O1 · P2'nin hub rakamı yanlış; yanındaki gerekçe de yanlış
Dosya: 1df86cf commit gövdesi ("/universiteler hub'ında Devlet listesi 170 → 166 kurum") ve docs/gece-vardiyasi/2026-09-22/09-p2-unitur.md:107,110
Dalın kendi build'inin ürettiği HTML (.next/server/app/universiteler.html):
Devlet Üniversiteleri …>129 Vakıf Üniversiteleri …>78 (üçüncü bölüm: "KKTC ve Yurt Dışı")
Düzeltme öncesi DB üzerinde getAllUniversitelerin algoritmasını birebir koşturduğumda 132 çıkıyor. Yani gerçek değişim 132 → 129 (3 kurum); raporun yazdığı 170 → 166 ham programs.universite ad sayısıdır (eski DB'de DEVLET etiketli 170 farklı ad, yenide 166), hub satırı değil.
Rapordaki gerekçe de yanlış: "Kıbrıs Amerikan'ın iki yazımı bugün iki ayrı slug". uniAdiNormalize (src/lib/harita.ts:32-34) sondaki parantezli eki atıyor, uniSayfaSlug (src/lib/slug.ts:41-43) da aynı kuralı uyguluyor → iki yazım tek slug (kibris-amerikan-universitesi, 42 program, tek sayfa). Buna bağlanan BACKLOG #10 atfı da bu satır için geçersiz.
Etkisi: Davranış doğru — üç kurumun üçü de "Devlet" listesinden çıkmış, "KKTC ve Yurt Dışı" bölümüne geçmiş (HTML'de konumları doğrulandı). Yalnız kanıt rakamı yanlış. Bu commit [BİLAL] onayına gidiyor ve onay mesajdaki fark raporuna dayanıyor; rakam düzeltilmeden gitmemeli.
O2 · P4 ikinci bir seri kırılması yaratıyor, commit'te yazmıyor
Dosya: src/features/odeme/components/paket-gorunum-olayi.tsx:16-38 (allowlist 3 → 13) ile :45-47
const kaynak = KAYNAKLAR.find((k) => k === ham) ?? "diger";
olayBirKez("paket_goruntulendi", { kaynak }, kaynak); // tekilleştirme anahtarı = kaynak
Tekilleştirme anahtarı kaynak olduğu için allowlist genişleyince olayın oturum başına atılabilme sayısı 4'ten 14'e çıkıyor.
Somut senaryo: Bir oturumda kullanıcı ana sayfanın fiyat bölümünden /paket'e gidiyor, geri dönüyor, sonra danışman ekranındaki kredi rozetinden tekrar gidiyor. Önce: iki gidişte de kaynak="diger" → tek paket_goruntulendi. Sonra: fiyat_paket ve danisman_rozet → iki ayrı olay. Yani paket_goruntulendi toplamı trafikten bağımsız olarak yükselecek ve diger kovasının anlamı tamamen değişecek (eskiden "10 bilinen yüzey + gerçekten bilinmeyen", şimdi yalnız "gerçekten bilinmeyen"). Deploy tarihinden önceki/sonraki paket_goruntulendi karşılaştırılamaz.
Commit gövdesi (26893ce) seri kırılması notunu yalnız sihirbaz_adim için yazıyor. program_eklendi için 21 Eylül'de konan kuralın gereği: bu da yazılmalı.
O3 · P2 + P3 birleşince üç üniversite sayfasında bozuk Türkçe etiket
Dosya: src/features/katalog/components/universite-icerik.tsx:381-385 → trBaslikDuzeni (src/lib/slug.ts:56-62)
trBaslikDuzeni toLocaleLowerCase("tr-TR") kullanıyor; tr-TR'de I → ı, dolayısıyla "YURTDISI KAMU" → "Yurtdısı Kamu". (Orkestratör günlüğü bunu "Yurtdisi Kamu" diye kaydetmiş; üretilen HTML'deki gerçek çıktı "Yurtdısı Kamu" — Türkçede var olmayan bir kelime.)
Hangi paket yaptı: ikisi birden. P2 unitur'ü DEVLET → YURTDISI KAMU/KKTC yaptı; P3 "Tür" kartını yalnız URAP dışındaki 31 kurumda bıraktığı için bu değerler o sayfaların tek metrik kartı hâline geldi. Ayrı ayrı iki dal da sorunsuz görünüyordu.
Kanıt (dalın ürettiği HTML):
uluslararasi-balkan-universitesi.html : <dd …>Yurtdısı Kamu</dd> (dün: "Devlet")
uluslararasi-saraybosna-universitesi.html : <dd …>Yurtdısı Kamu</dd> (dün: "Devlet")
kibris-amerikan-universitesi.html : <dd …>Kktc</dd> (dün: "Devlet")
"Yurtdısı" içeren sayfa: 6 · ">Kktc<" içeren sayfa: 16 · "Tür" kartı olan toplam sayfa: 31.
Not: doğruluk arttı (KKTC kurumuna "Devlet" demekten iyidir), görünürlük kalitesi düştü. Düzeltme unitur → görünen etiket için 5 satırlık bir harita; trBaslikDuzeni'ye dokunmaya gerek yok. Bilerek yapılmadığı günlükte yazılı, itiraz etmiyorum — ama sabah incelemesinde gözle görülecek ilk şey bu.
O4 · 198 üniversite sayfasında "devlet mi, vakıf mı" bilgisi tamamen kayboldu
Dosya: src/features/katalog/components/universite-icerik.tsx:363-397 (kart takası)
CEO kararı bunu açıkça "takas" diye tanımlamış (§3/P3), yani şartname ihlali değil. Ama karar kaydında "bilgi yerine başka bir yerde kalıyor" demiyor; kalmıyor:
.next/server/app/universite/bogazici-universitesi.html → "Devlet" kelimesi 0 kez
.next/server/app/universite/koc-universitesi.html → "Vakıf" kelimesi 0 kez
H1'de yok, giriş paragrafında yok (:310-330), uniSayfaMetadata açıklamasında yok (:180-183), breadcrumb'da yok, program tablosunda yok (UniDetay.stats.devletMi üretiliyor ama katalog.ts:409'dan sonra hiç okunmuyor). Sitenin en kalabalık yüzeyinde (/universite/*) bir öğrencinin ilk sorduğu ikili bilgi ekrandan çıktı.
Ucuz telafi (ızgaraya dokunmadan): giriş paragrafındaki cümleye tek sıfat — "… bir devlet üniversitesi olarak 2026 YKS yerleştirme sonuçlarına göre N programda öğrenci aldı." Kart sayısı 4'te kalır, yeni kutu açılmaz. Bu bir [BİLAL] kararı; ben yalnız kaybın gerçek olduğunu belgeliyorum.
DÜŞÜK
- D1 ·
/listemrisk sütunu artık kendi içinde tutarsız. Kilitli satırrapor-listesi.tsx:259hâlâsr-only sm:not-sr-only"Pakette", kilitsiz satır:267görünür etiket. Paketsiz kullanıcıda 24 satırın 21'i kilitli, yani P1'in mobil kazancı o kullanıcı için 3 satır. Sütun genişliğini zaten "Az riskli" belirlediği için "Pakette"yi görünür yapmanın ek genişlik maliyeti yok. (P1 raporu ve orkestratör günlüğü bunu zaten not etmiş.) - D2 · AGENTS.md renk kuralının açık kaldığı üçüncü yüzey.
src/features/liste/components/liste-cekmecesi.tsx:424-428— risk yalnız renkli nokta +aria-label; görünür metin yok. Kapsam dışı bırakılması bilinçliydi; kural hâlâ ihlal. - D3 · URAP sabitinde denetimsiz tek alan:
URAP_KAYNAK_URL.URAP_DONEM/URAP_TOPLAM/URAP_SIRAbirbirineveri-kalitekontrolleriyle bağlı (scripts/veri-kalite.ts:191-266), URL hiçbirine bağlı değil. Gelecek Ekim'de dönem2026-2027olup URL unutulursa sayfa "URAP Türkiye Sıralaması 2026-2027 … Kaynak: urapcenter.org" der ve 2025-2026 sayfasına link verir — izin şartı biçimsel olarak ihlal edilir,pnpm veri-kalitesessiz kalır. Tek satır kapatır:zorunlu("URAP: kaynak URL dönemi tutuyor", URAP_KAYNAK_URL.includes(URAP_DONEM), URAP_KAYNAK_URL). (URL'nin kendisi doğru: URAP'ın izin e-postasındaki adres —00-brief.md:8; veri mühendisi 22 Eyl'de tarayıcı paneliyle okumuş —05-urap.md:17. Bu oturumda tarayıcı açmadım.) - D4 · Yeni
veri-kalitekontrolünün bilgi kolu hiçbir zaman uyarı üretmiyor.scripts/veri-kalite.ts:318bilgi(..., false, ...)— sabitfalse. Bugün iki kurum bu kolda: Kırgızistan-Türkiye Manas ve Hoca Ahmet Yesevi, iki yazımıYURTDISI KAMU+YURTDISI VAKIF. Kullanıcıya yansımıyor (devlet/vakıf ayrımını bölmüyor, sayfa tek slug'da birleşiyor), ama P2'nin kapattığı hata sınıfı iki kurumda hâlâ açık ve sayaca girmiyor. - D5 · URAP dışı 9 Türkiye kurumunda gerekçesiz olumsuz cümle. "Bu üniversite URAP Türkiye Sıralaması 2025-2026 listesinde yer almıyor." — dördü MYO, üçü yeni devlet üniversitesi (Sivas Bilim ve Teknoloji, Türk-Japon, Ankara Müzik ve Güzel Sanatlar), biri de üniversite bile değil (
icisleri-bakanligi-ve-milli-savunma-bakanligi-adina-…). Sabitin kendi yorumu ("kötü demek değildir; MYO'lar ve yeni üniversiteler listeye girmiyor" —src/lib/urap-siralama.ts:13-16) kullanıcıya ulaşmıyor. CEO'nun yazdığı kanonik cümle birebir uygulandığı için şartname ihlali değil. - D6 ·
data/yokatlas.db-shm/-walgit'te izleniyor. Veri commit'i ana dosyayı değiştirdi, yan dosyalar commit'e girmedi. Bugün zararsız (-wal0 bayt) ama repoda tutulmaları ileride tutarsız çift üretebilir. P2 raporu da not etmiş; backlog. - D7 · Tür rozeti hâlâ ikili.
program-tablosu.tsx:311verapor-listesi.tsx:225-233:unitur === "DEVLET" ? "Devlet" : "Vakıf". P2'den sonra düzeltilen 27 program artık "Vakıf" rozetiyle görünüyor. "Devlet"ten doğru, gerçekten doğru değil; aynı durumda ~1.350 KKTC/yurt dışı satırı zaten vardı. Backlog.
Temiz çıkanlar (denetlendi, bulgu yok)
Veri (P2) — bağımsız SQL doğrulaması. git show ile iki sürüm ayrı kopyalara çıkarıldı, sqlite3 "file:…?immutable=1" ile ATTACH edilip 45 kolon tek tek kıyaslandı:
programs: 21.493 → 21.493,idkümesi farkı 0/0. Değişen kolon yalnızunitur(100) veil(26); diğer 43 kolonda değişen satır 0.programs_arsiv3.735 → 3.735 (unitur/il/universite farkı 0) ·netler62.975 → 62.975 (fark 0) ·veri_meta37 → 37 (fark 0).- Değişimler: Kıbrıs Amerikan (iki yazım, 36+6)
DEVLET→KKTC; Balkan (34) ve Saraybosna (24)DEVLET→YURTDISI KAMU; Balkan'ın 26 satırında ilSARAYBOSNA - BOSNA - HERSEK→ÜSKÜP-MAKEDONYA. Başka kuruma dokunulmamış. - Havuz etkisi bağımsız sayıldı:
unitur='DEVLET'+ efektif sırası dolu bu dört adda 27 → 0. - Düzeltme sonrası
programs'taunitur IS NULLsatır yok ve aynı ham adın iki farklıunitur'ü yok.
P2 + P3 birleşik davranışı (denetim sorusu #1). UrapKaynakSatiri (universite-icerik.tsx:129-133) unitur === "KKTC" || unitur?.startsWith("YURTDISI") bakıyor. DB'deki 229 slug'ın tamamını uniSayfaSlug ile üretip URAP sabitiyle kesiştirdim: URAP dışı 31 slug'ın 22'si KKTC/YURTDISI * → yurt dışı cümlesi, 9'u Türkiye → liste cümlesi. Üç düzeltilen kurumun üçü de yurt dışı kolunda. Dalın ürettiği HTML de aynı sonucu veriyor. Ek kod gerekmemiş, iddia doğru.
olayBirKez dayanıklılığı (denetim sorusu #3). src/lib/analitik.ts:169-184: SSR'da typeof window === "undefined" ile çıkıyor; window.sessionStorage'a erişimin kendisi try bloğunun içinde, dolayısıyla storage kapalı/engelli ortamda SecurityError yutuluyor ve olay tekilleştirmesiz yine atılıyor — patlamıyor, sessizce düşmüyor. Gizli sekmede sessionStorage normal çalışır. Dev StrictMode'un çift effect'i ilk koşuda yazılan anahtarla yutulur (ve Rybbit script'i zaten yalnız prod build'de yükleniyor). Sihirbaz dynamic(..., { ssr: false }) ile yükleniyor (sihirbaz-adimlar-lazy.tsx:46-53), sunucuda hiç koşmuyor.
"Mount = 1. adım görüldü" varsayımı. SihirbazAdimlar'ın beş mount noktasının beşi de koşullu: sihirbaz-modal.tsx:47 (Radix Dialog, kapalıyken unmount), hero-form.tsx:216 (facetler && sira), cta-sira-form.tsx:328 (facetler && sira != null, form dalıyla ayrık ternary), tercih-profili-kapisi.tsx:450 (facetler yalnız facetYukle sonrası doluyor). Sayfa yüklenirken kendiliğinden mount olan bir yüzey yok. Varsayım tutuyor; sorun yalnızca Y1'deki birim uyuşmazlığı.
P1'in mobil taşma iddiası (denetim sorusu #2). src/components/ui/table.tsx:86 TableCell varsayılanı whitespace-nowrap, :73 TableHead aynı, :11 tablo kabı overflow-x-auto; program hücresi program-tablosu.tsx:324 max-w-0 w-full + içeride truncate. Yani etiket sarmalanamaz/kesilemez, artan genişliği program adı sütunu yutar, en kötü durumda tablo yatay kayar — sayfa taşmaz. İddia doğru. "Az riskli" en uzun etiket (src/lib/risk.ts:8-12); kalan genişlik Bilal'in gözle bakacağı bir tasarım kararı, hata değil.
P4 link envanteri. grep -rn '"/paket' src/ → gezinme amaçlı 14 <Link>'in 14'ünde ?kaynak= var, 13 tekil değerin 13'ü de KAYNAKLAR allowlist'inde (fazlası/eksiği yok). Kalan /paket geçişleri redirect() ve giriş callback'leri — kullanıcı tıklaması değil, CEO'nun listesinde de yoklar.
P3 sızıntı denetimi. src/lib/urap-siralama.ts'i içe aktaran yalnız src/lib/katalog.ts:13, universite-icerik.tsx:33-37 ve scripts/veri-kalite.ts:129. LLM prompt'una (src/lib/ai/rapor.ts), /sonuc tablosuna, OG görsellerine, hub'a girmiyor. universite-icerik.tsx sunucu bileşeni ("use client" yok) → 14 KB'lık sabit tarayıcıya inmiyor, standalone/bellek etkisi yok.
Atıf şartı. Metrik ızgarası ilkSayfa koşulunun içinde (:308 açılıyor, :400 kapanıyor), kaynak satırı da :441'de aynı koşulla. Yani URAP sayısının göründüğü tek yüzeyde link her zaman aynı ekranda. Üretilen HTML: 198 sayfada URAP Türkiye</dt>, 31 sayfada Tür</dt>, toplam 229 — delik yok, "—" yok.
veri-kalite #14'ün sezgisi veriyle tutuyor. Türkiye ili sezgisi "tire yok + KKTC_ILLERI'nde değil". DB'deki tireli il değerleri yalnız 5 yurt dışı değer (BAKÜ-AZERBAYCAN, BİŞKEK-KIRGIZİSTAN, SARAYBOSNA - BOSNA - HERSEK, TÜRKİSTAN-KAZAKİSTAN, ÜSKÜP-MAKEDONYA); KKTC il değerlerinin hepsi sabitte (GİRNE, LEFKOŞA, GAZİMAĞUSA, LEFKE, GÜZELYURT, KIBRIS); ili NULL olan kurumlar HAVING SUM(il IS NOT NULL) > 0 ile eleniyor. Yanlış pozitif/negatif üretecek bir boşluk bulamadım.
AGENTS.md (denetim sorusu #6). Yeni badge/eyebrow yok (SectionEyebrow dışı pill eklenmemiş), yeni modal/kapatma çarpısı yok, yeni CTA butonu yok — dokunulan CTA'ların ArrowRight deseni korunmuş. /meraklisina şeması doğru olarak güncellenmedi: sihirbaz adımlarının sayısı-sırası-içeriği, aday havuzu kuralları, 24'lük iskelet, gevşetme sırası ve havuz-dışı kuralı değişmedi; P2 havuzun içeriğini düzeltti, mimarisini değil. Risk renk dili P1 ile güçlendi (tek kalan ihlal D2).
Backlog önerileri (kapsam dışı, kayda değer)
unitur→ görünen etiket haritası (Devlet / Vakıf / KKTC / Yurt dışı — kamu / Yurt dışı — vakıf), tek kaynak;trBaslikDuzeniham DB değerlerine uygulanmasın (O3, D7 aynı kökten)./sonucve/listemsatır rozetinde üçüncü değer (KKTC/yurt dışı) — bugün ~1.350 satır "Vakıf" diye etiketleniyor.veri-kalite'yeURAP_KAYNAK_URL ⊃ URAP_DONEMkontrolü (D3) ve #13'ün bilgi kolunun gerçekten uyarı sayması (D4).data/yokatlas.db-shm/-walgit izlemesinden çıksın (D6).listem-govde.tsx:288ve:369iki ayrı kilit yüzeyi, ikisi dekaynak=kilit— P4'ün kendi raporunda not edilmiş, ayrılmalı.
Bilal'den istenen (3 madde)
- Y1'i merge öncesi düzelttir —
sihirbaz-adimlar.tsx:155'teolayBirKez→olay; yoksa 2 Kasım'daki huni okuması payda/pay uyuşmazlığı yüzünden şişik çıkar. ~5 dk. - O1'i kayda geçir — veri commit'inin gövdesindeki "170 → 166" gerçek hub sayısı değil; doğrusu 132 → 129, düzeltme mesajı onayla birlikte girsin. ~3 dk.
- O4'e karar ver — üniversite sayfalarında "devlet mi vakıf mı" bilgisi tamamen kayboldu; giriş cümlesine tek sıfat ekleyelim mi, yoksa takas bu hâliyle mi kalsın? ~2 dk.