İçeriğe geç

Stable kimlikler

Geliştirme · 0.0.0-dev

Yayın

Doküman
0.0.0-dev
Uygulama
0.0.0

Bu sayfa

Uygulama
0.0.0
Şema
munderecat-id-v1
Veri
tr-2026-v1

Stable ID, bir kaydın güncel etiketinin hash’i değil, tarihsel referent’ine ait kalıcı ve opaque UUID’dir. Yayınlanan ID değiştirilmez, başka referent’e atanmaz ve silinince tekrar kullanılmaz. Aynı text’in farklı corpus occurrence’ları farklı ID; bir semantic tanım ile onun occurrence’ı da farklı ID taşır.

Normatif identity ve supersession kuralları ADR-002 belgesindedir.

Kanal Kullanım UUID
package_deterministic Canonical, tekrar üretilebilir package entity’leri UUIDv5
curation_generated Interactive veya package sonrasında bir kez yaratılan entity’ler UUIDv7

Bir entity kind ilk public ID’sinden önce kanalını sabitler ve sonradan kanal değiştiremez. Mevcut Turkish Latin core, package_deterministic kanalındadır. Core baseline UUIDv5 formatını DB domain’iyle de zorunlu tutar. Gelecekte annotation curation ile üretilen UUIDv7 ID’leri package’a girse bile yeniden UUIDv5 olarak basılmaz.

Münderecat root namespace’i sabittir:

da8a3026-eca7-56e9-ba87-c4b5080271a8

UUIDv5 adı, NFC uygulanmış input değerlerinden RFC 8785 canonical JSON ile oluşturulan exact munderecat-id-v1 payload’udur:

{"identity_schema":"munderecat-id-v1","kind":"sentence_occurrence","path":["tr-2026-v1","<paragraph-id>",3]}

Her path’in ilk elemanı immutable identity_release_key değeridir. İlk release için bu değer tr-2026-v1 olup source input, identity schema ve path manifest’ine issuance öncesinde bağlanmıştır.

config/identity-paths/tr-2026-v1.json path grammar’ını kapatır:

Kind Path’i belirleyen fact’ler
work Release key + stable source work locator
text_version Release key + work ID + stable source version locator
book, chapter, paragraph, sentence_occurrence Release key + parent ID + source position
token_occurrence Release key + sentence ID + source position
token_form Release key + text version ID + exact formun ilk canonical sentence/position koordinatı

token_form equality, normalize edilmiş yazıma değil exact UTF-8 body byte’larına dayanır. Database sequence, insertion order, timestamp, normalized label veya legacy integer path girdisi değildir. Aynı accepted package’ın temiz iki build’i bu nedenle aynı ID setini üretir.

Display notu, provenance veya lifecycle status gibi identity taşımayan fact’ler ID’yi değiştirmez. Buna karşılık accepted core’un exact text’i, parent’ı, sınırı veya sırası değişirse yeni core release ve etkilenen occurrence’lar için yeni ID gerekir. Eski ID tarihsel referent’i göstermeye devam eder.

ADR-002; replacement, split, merge, restructure ve retirement olaylarını append-only supersession modeliyle tanımlar. Bu policy core baseline tablolarının içinde henüz bir supersession katalogu olduğu anlamına gelmez; ilgili domain schema’sı geldiğinde tarihçe korunarak uygulanacaktır. Legacy ve external ID’ler source system, source release ve entity kind ile nitelendirilmiş crosswalk’tır; canonical ID değildir.

UUIDv5 canonicalization fixture’larını ve Birinci Söz identity oracle’ını doğrulayın:

Terminal window
make corpus-stable-identity-check

Komut source fixture veya accepted config’i değiştirmez. Aynı path’in başka UUID üretmesi, duplicate path, yanlış UUID version’ı, membership/count farkı ya da identity release binding ayrışması halinde başarısız olur. Böyle bir farkı mevcut ID’leri yeniden basarak kapatmayın; source, manifest veya contract uyuşmazlığını tespit edin.