{
  "aciklama": "akrababul denetim manifesti. Her iddianın yanında nasıl doğrulanacağı (ve nasıl yalanlanacağı) yazar. Bu dosya derleme sırasında kaynaktan üretilir, elle yazılmaz.",
  "derleme": "2026-09-11T18:52:45.665Z",
  "gonderilen_alanlar": [
    {
      "alan": "Ad ve soyad — sizin ve belgedeki her kişinin",
      "bicim": "açık metin",
      "neden": "Eşleşen akrabaya kimin ortak olduğunu gösterebilmek için."
    },
    {
      "alan": "Doğum yılınız (yalnızca sizin)",
      "bicim": "yalnızca yıl; tam tarih gönderilmez",
      "neden": "Yaş sınırı denetimi."
    },
    {
      "alan": "İl-İlçe-Mahalle/Köy + Cilt-Hane-Birey Sıra No",
      "bicim": "Argon2id ile geri döndürülemez özet (64 karakter hex)",
      "neden": "Aynı kaydı iki kullanıcıda eşleştirmek. Ham hâli gönderilmez."
    }
  ],
  "hic_okunmayan_alanlar": [
    "T.C. kimlik numarası",
    "Medeni hâli",
    "Durumu",
    "Tanınmayan diğer tüm sütunlar"
  ],
  "okunan_ama_gonderilmeyen_alanlar": [
    "Belgenin kendisi (yüklediğiniz dosya)",
    "Baba adı, ana adı",
    "Doğum yeri ve tam doğum tarihi",
    "Yakınlık derecesi",
    "Cinsiyet, sıra no",
    "İl-İlçe-Mahalle ve cilt-hane-birey numarasının ham hâli"
  ],
  "iddialar": [
    {
      "id": "belge-gonderilmez",
      "metin": "Yüklediğiniz dosya sunucuya gönderilmez.",
      "dogrulama": {
        "tur": "kaynak",
        "kaynak": "validation.ts.txt",
        "not": "listUploadSchema, sunucunun kabul ettiği gövdenin tamamıdır. Şemada dosya alanı yoktur; şemaya uymayan istek reddedilir."
      }
    },
    {
      "id": "kayit-yeri-ozetlenir",
      "metin": "Kayıt yeri ve cilt-hane-birey numarası sunucuya ham hâliyle değil, geri döndürülemez özet olarak gider.",
      "dogrulama": {
        "tur": "kaynak",
        "kaynak": "key-text.ts.txt",
        "not": "Anahtar metin buradan üretilir, argon-worker.ts.txt içinde Argon2id ile özetlenir; api-types.ts.txt içindeki UploadRecord yalnızca bu özeti taşır."
      }
    },
    {
      "id": "ozet-tarayicida",
      "metin": "Özetleme sunucuda değil, sizin tarayıcınızda yapılır.",
      "dogrulama": {
        "tur": "kaynak",
        "kaynak": "argon-worker.ts.txt",
        "not": "Argon2id çağrısı bir Web Worker içindedir; sunucuya giden istek yalnızca sonucu taşır."
      }
    },
    {
      "id": "ad-soyad-acik-gider",
      "metin": "Ad ve soyadlar açık metin olarak sunucuya gider. Bunu gizlemiyoruz.",
      "dogrulama": {
        "tur": "kaynak",
        "kaynak": "api-types.ts.txt",
        "not": "UploadRecord içindeki firstName ve lastName alanları özetlenmez."
      }
    },
    {
      "id": "dis-baglanti-yok",
      "metin": "Sayfa, kendi sunucusu dışında hiçbir adrese veri gönderemez.",
      "dogrulama": {
        "tur": "http-baslik",
        "baslik": "Content-Security-Policy",
        "bekleniyor": "connect-src 'self'",
        "not": "Bu bir söz değil, tarayıcının zorla uyguladığı kısıttır. Başlığı herhangi bir HTTP isteğiyle görebilirsiniz."
      }
    },
    {
      "id": "yukleme-oturum-ister",
      "metin": "Yükleme uç noktası sunucuda oturum ister; yükleme sayfasının herkese açık olması yükleme yapılabildiği anlamına gelmez.",
      "dogrulama": {
        "tur": "davranis",
        "istek": "POST /api/list (oturum açmadan, boş gövdeyle)",
        "bekleniyor": "401 UNAUTHORIZED",
        "not": "Kendiniz deneyebilirsiniz. Yetkilendirme sunucudadır; sayfadaki yönlendirme yalnızca kullanıcı deneyimi içindir."
      }
    }
  ],
  "kaynaklar": [
    {
      "ad": "yukle.ts.txt",
      "url": "/kaynak/yukle.ts.txt",
      "depo_yolu": "apps/web/src/pages/yukle.ts",
      "kanit": "Yükleme sayfasının giriş noktası; akışın nereden başladığı."
    },
    {
      "ad": "deneyin.ts.txt",
      "url": "/kaynak/deneyin.ts.txt",
      "depo_yolu": "apps/web/src/pages/deneyin.ts",
      "kanit": "Hesapsız deneme sayfasının tamamı. api.ts ve report-error.ts ithal edilmez; tek ağ çağrısı, kullanıcının isteğiyle indirilen sahte örnek belgedir."
    },
    {
      "ad": "upload-flow.ts.txt",
      "url": "/kaynak/upload-flow.ts.txt",
      "depo_yolu": "apps/web/src/lib/upload-flow.ts",
      "kanit": "Yükleme akışının tamamı: dosyanın açılması, ayrıştırılması, özetlenmesi ve gönderilecek isteğin kurulması."
    },
    {
      "ad": "soy-parser.ts.txt",
      "url": "/kaynak/soy-parser.ts.txt",
      "depo_yolu": "apps/web/src/lib/parse/soy-parser.ts",
      "kanit": "Belgeden hangi sütunların okunduğu. COLUMNS listesinde T.C. kimlik numarası yoktur; tanınmayan sütunlar yok sayılır."
    },
    {
      "ad": "key-text.ts.txt",
      "url": "/kaynak/key-text.ts.txt",
      "depo_yolu": "packages/shared/src/key-text.ts",
      "kanit": "Özetlenen anahtar metnin yalnızca yer parçaları ile kayıt numarasından oluştuğu."
    },
    {
      "ad": "argon-worker.ts.txt",
      "url": "/kaynak/argon-worker.ts.txt",
      "depo_yolu": "apps/web/src/lib/hash/argon-worker.ts",
      "kanit": "Özetlemenin sunucuda değil, tarayıcıdaki worker içinde Argon2id ile yapıldığı."
    },
    {
      "ad": "api-types.ts.txt",
      "url": "/kaynak/api-types.ts.txt",
      "depo_yolu": "packages/shared/src/api-types.ts",
      "kanit": "Gönderilen alanların tipleri. ListUploadBody, yükleme isteğinin gövdesinin tamamıdır."
    },
    {
      "ad": "validation.ts.txt",
      "url": "/kaynak/validation.ts.txt",
      "depo_yolu": "packages/shared/src/validation.ts",
      "kanit": "Sunucunun kabul ettiği gövde şeması. listUploadSchema dışında bir alan sunucuya geçmez."
    },
    {
      "ad": "api.ts.txt",
      "url": "/kaynak/api.ts.txt",
      "depo_yolu": "apps/web/src/lib/api.ts",
      "kanit": "Sunucuya yapılan tüm isteklerin tek bir yerden ve yalnızca kendi kaynağımıza gittiği."
    }
  ],
  "calisan_kod": {
    "yukle_sayfasi": "/yukle.html",
    "yukle_modulleri": [
      "/assets/yukle-MppAB3jF.js",
      "/assets/styles-D97oyUon.js",
      "/assets/dom-DmcGARZK.js",
      "/assets/footer-C4araumQ.js",
      "/assets/auth-client-CzYR90m4.js",
      "/assets/nav-bUweRZjp.js",
      "/assets/session-guard-DIFWL6US.js",
      "/assets/params-HAryaIXz.js",
      "/assets/hash-version-D7pkfG-i.js",
      "/assets/report-error-B8GN1i-x.js",
      "/assets/device-guide-Cj7v0HW0.js",
      "/assets/paste-box-CGznYXRq.js",
      "/assets/upload-flow-dYeSBWFL.js"
    ],
    "kaynak_haritalari": [
      "/assets/yukle-MppAB3jF.js.map",
      "/assets/dom-DmcGARZK.js.map",
      "/assets/footer-C4araumQ.js.map",
      "/assets/auth-client-CzYR90m4.js.map",
      "/assets/nav-bUweRZjp.js.map",
      "/assets/session-guard-DIFWL6US.js.map",
      "/assets/params-HAryaIXz.js.map",
      "/assets/hash-version-D7pkfG-i.js.map",
      "/assets/report-error-B8GN1i-x.js.map",
      "/assets/device-guide-Cj7v0HW0.js.map",
      "/assets/paste-box-CGznYXRq.js.map",
      "/assets/upload-flow-dYeSBWFL.js.map"
    ],
    "not": "Bu adlar sayfanın kendisinden okundu, elle yazılmadı. Kaynak haritaları açıktır; paketi indirip fiilen çalışan kodun orijinal TypeScript kaynağını okuyabilirsiniz."
  },
  "dogrulanamayanlar": [
    "Sitede çalışan kodun burada yayınlanan kaynakla birebir aynı olduğu bağımsız olarak kanıtlanamaz; bunun için yeniden üretilebilir derleme (reproducible build) gerekir. Kaynak haritaları (/assets/*.js.map) boşluğu daraltır, çünkü fiilen çalışan paketin kaynağıdır.",
    "Sunucu tarafı kaynak kodu kapalıdır. Sunucunun aldığı veriyi ne yaptığı istemci kodundan doğrulanamaz; bu kısım için aydınlatma metnine ve hukuki sorumluluğumuza bakmanız gerekir.",
    "Argon2id tuzu istemci paketinde açıktır; tek başına sözlük saldırısını engellemez. Sunucu gelen özeti gizli bir anahtarla yeniden HMAC'ler, bu yüzden veritabanı sızsa bile özetler o anahtar olmadan denenemez — ama bu ikinci adım sunucuda olduğu için istemciden doğrulanamaz.",
    "Bugün doğruladığınız davranışın yarınki sürümde de geçerli olacağı garanti edilemez. kanit.json içindeki paket adları içerik özetidir; sürüm değiştiğinde onlar da değişir."
  ],
  "insan_sayfasi": "/kanit.html"
}
