Tekrar keşfi ve canonical seçim mimarisi
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
- f8-010
- Veri
- repetitions-v1
Tekrar katmanı, aynı veya benzer pasajların corpus içindeki bağımsız geçişlerini ilişkilendirir. Metni deduplicate etmez. Her kitap, chapter, paragraf, cümle ve token occurrence kendi kaynak konumunda kalır; tekrar kayıtlarının tamamı silinse bile core release aynı byte’larla reconstruct edilebilir.
Normatif model ADR-009’da, core/annotation sınırı ADR-001’de ve ortak seçim geometrisi yapısal annotation rehberinde tanımlanır. Bu rehber, accepted F6 uygulamasının fiziksel durumunu ve review sırasında korunacak sınırları operasyonel sırayla açıklar.
Zihinsel model
Bölüm başlığı “Zihinsel model”flowchart LR accTitle: Tekrar verisinin authority akışı accDescr: Immutable core metni shared selectionlara, selectionlar exact occurrence ve classlara, ayrı candidate ve diff evidenceına, optional reviewed canonical seçime ve private readerlara bağlanır. core[immutable core release] --> anchor[span ve selection] profile[versioned repetition profile] --> occurrence[passage occurrence] anchor --> occurrence occurrence --> exact[exact class] occurrence --> candidate[pending candidate] candidate --> diff[replayable diff] exact --> choice[reviewed canonical choice] exact --> reader[private exact reader] reader --> api[release-pinned public exact projection] choice -. yayınlanmadı .-> reader
Bu akış dört ayrı soruyu cevaplar:
| Soru | Authority | Otomatik karar verebilir mi? |
|---|---|---|
| Metnin neresi seçildi? | anchor_control span/selection |
Exact geometry doğrulanabiliyorsa evet |
| İki seçim exact eşit mi? | Profile-qualified exact evidence | Certified build içinde evet |
| İki farklı seçim aynı pasajın varyantı mı veya biri alıntı mı? | Reviewed semantic relation | Hayır; insan review gerekir |
| Hangi geçiş önerilen navigation hedefi? | Reviewed canonical choice | Hayır; seçim olmaması geçerlidir |
Normalization, MinHash skoru, lexical kök, Osmanlıca rendering ve diff özeti ilk iki seçimi bulmaya yardım edebilir. Bunların hiçbiri exact equality, repeat family, quotation veya canonical tercih authority’si değildir.
Değişmez sınırlar
Bölüm başlığı “Değişmez sınırlar”repetition_control,publiccore’a FK ile bağlanır; core tablosu repetition tablosuna bağlanmaz.passage_occurrencereplacement text saklamaz. Exact prose her zamanselection_idüzerinden core’dan reconstruct edilir.- Aynı visible metnin iki geçişi iki ayrı occurrence ID’sidir. Eşitlik
exact_classmembership’inde ifade edilir. - Canonical seçim yalnız bir navigation tavsiyesidir; text source, alias, redirect, deduplication talimatı veya translation alignment değildir.
- Nested ve overlapping seçimler geçerlidir. Geometri tek başına semantic membership, quotation veya canonical ilişki üretmez.
- Published package entity’leri immutable’dır. Algoritma, profile, kaynak release veya member seti değişirse eski ID güncellenmez; successor release/entity çıkar.
F6-012 disposable fixture’ı canonical create, supersede ve retire
işlemlerinden önce ve sonra iki bağımsız text version’ın tüm core fingerprint’ini,
exact reconstruction’ını, hierarchy kimliklerini ve token inventory’sini
karşılaştırdı. Constraint veya trigger bypass kullanılmadan eşitlik korundu. Bu,
bir İngilizce release ya da alignment yayımlamaz; yalnız repetition curation’ın
metin authority’sine dönüşemediğini kanıtlar.
Profile ve exact kapsam
Bölüm başlığı “Profile ve exact kapsam”repetition-scope-policy-v1 dört immutable profile bağlanır:
| Projection | Enumerator | Predicate | Dominance |
|---|---|---|---|
full_context_v1 |
whole_paragraph_v1 |
exact_passage_bytes |
structural_units |
full_context_v1 |
sentence_run_2_12_v1 |
exact_sentence_sequence |
maximal_only |
prose_only_v1 |
whole_paragraph_v1 |
exact_passage_bytes |
structural_units |
prose_only_v1 |
sentence_run_2_12_v1 |
exact_sentence_sequence |
maximal_only |
Profile; core release/root, text version, coordinate profile, analysis projection, enumerator, exact predicate, annotation treatment ve dominance kuralını identity fact olarak taşır. Runtime’da bir filter değiştirerek başka profile elde edilmez.
exact_passage_bytes unnormalized UTF-8 pasaj witness’ını,
exact_sentence_sequence ise ordered exact sentence digestlerini ve separatorları
karşılaştırır. NFC, case, apostrof, noktalama veya whitespace folding exact
preimage’a giremez. Digest yalnız indexleme yapar; class kurulmadan önce gerçek
length/member/byte eşitliği doğrulanır.
prose_only_v1 içinde accepted heading marker veya note body ile kesişen bütün
enumerated occurrence excluded olur; extent kırpılmaz. Dahil kalan
occurrence’larda yalnız note marker byte’ları comparison preimage içinde typed,
length-delimited note_marker_v1 boundary ile değiştirilir. Core byte’ları ve
occurrence extent’i değişmez. excluded bir profile sonucudur; metnin corpus’tan
çıkarıldığı anlamına gelmez.
Fiziksel veri modeli
Bölüm başlığı “Fiziksel veri modeli”Accepted migration zinciri private repetition_control şemasını kullanır.
| Relation grubu | Amaç | Permanence/authority |
|---|---|---|
identity_packages |
UUIDv5 identity release ve input/path manifest closure | Immutable package authority |
repetition_profiles |
Dört profile’ın exact scope ve predicate binding’i | Immutable policy instance |
repetition_releases, repetition_release_profiles |
Profile, inventory, partition ve evidence root’larını tek release’te bağlar | Immutable publication |
passage_occurrences |
Shared selection’ın profile-qualified repetition kullanımı ve sonuç durumu | Immutable occurrence annotation |
exact_classes, exact_class_members |
Certified exact equivalence ve ordered complete member inventory | Immutable exact authority |
repeat_candidate_profiles, repeat_candidate_endpoints, repeat_candidates |
Near/variant discovery feature ve pair evidence’ı | Immutable, pending_review; semantic authority yok |
passage_diffs, passage_diff_operations |
Ordered endpointler arasında replayable exact-coordinate edit script | Immutable evidence |
canonical_choice_policies |
Editorial canonical seçim politikası | Immutable domain policy |
exact_class_curation_endpoints, canonical_choice_curation_endpoints |
Repetition entity’lerini shared curation/provenance sistemine bağlar | Immutable control bridge |
canonical_choices, canonical_choice_events |
UUIDv7 seçimler ile replacement/retirement history | Append-only reviewed authority |
canonical_choice_applications, canonical_choice_requests |
Atomic apply ve idempotent operation audit’i | Append-only audit |
canonical_choice_working_heads |
Bir class/policy için rebuildable current state cache’i | Tek mutable derived head |
Rol ve yürütme yüzeyi
Bölüm başlığı “Rol ve yürütme yüzeyi”Tablo sahipliği ile çağırma yetkisi aynı şey değildir. Migration’ların kabul ettiği sınır şöyledir:
| Rol | Sahiplik/yetki | Sahip olmadığı yetki |
|---|---|---|
munderecat_repetition_owner |
Login olmayan sealed owner; repetition_control schema, relation, trigger ve routine’lerinin sahibidir |
Runtime, review veya migration oturumu değildir |
munderecat_anchor_owner |
Shared anchor tablolarının sahibidir; publication sırasında repetition staging seçimlerini anchor authority’sine yazar | Repetition class/candidate/canonical authority’sini yönetmez |
prod_migrator |
publish_repetition_anchors_from_staging, publish_repetition_from_staging ve publication verifier’ı kontrollü release işleminde çağırır |
Repetition tablolarına doğrudan DML veya reader erişimi yoktur |
curation_executor |
Canonical curation endpoint’ini hazırlar ve current state root’u hesaplar | apply_canonical_choice_v1 execute hakkı activation adapter kurulana kadar yoktur; exact/candidate tablolarını değiştiremez |
auditor |
Private tabloları, publication verification’ını, canonical review member listesini ve üç bounded exact reader’ı salt okunur inceler | Publication, canonical apply veya public API yetkisi yoktur |
munderecat_api_owner |
Accepted exact release’i API manifestine bağlar; dar public-safe projection fonksiyonlarını çağırır | Private candidate, diff, benchmark veya canonical working state okuyamaz |
anon, authenticated, app_runtime |
Yalnız api_v1.get_chapter_repetitions_v1 ve api_v1.list_repetition_members_v1 public envelope’larını çağırır |
repetition_control tablo ve private reader erişimi yoktur |
public, anon, authenticated ve app_runtime bu private yüzeylerin hiçbirini
çağıramaz. Owner rolün SECURITY DEFINER routine’e sahip olması caller’a owner
üyeliği vermez; migration sonunda geçici owner edge’leri geri alınır. Private
reader’lar ayrıca SECURITY INVOKERdır ve yalnız açık auditor grant’iyle çalışır.
Release’in exact coverage universe’ü matched, evaluated_unique, excluded,
not_evaluated ve failed kümelerine ayrılır. Boş satır “unique” demek değildir.
Accepted F6 release’te exact_status = complete, semantic_status = opendır:
- 2.678.256 passage occurrence,
- 443.332 matched exact-class member,
- 192.797 exact class,
- 1.843.526 evaluated-unique occurrence,
- 391.398 profile-qualified exclusion,
- 2.202 pending near/variant candidate,
- 2.202 replayable diff ve 14.233 diff operation,
- sıfır exact processing failure.
Candidate publication yalnız gerçekten kullanılan 3.727 endpoint witness’ını saklar; kullanılmayan comparison node inventory’si DB’yi şişirmez. Exact coverage complete olsa bile 2.202 candidate semantic review beklediği için semantic status open kalır.
Bugünkü gerçekleşme durumu
Bölüm başlığı “Bugünkü gerçekleşme durumu”ADR-009 gelecekteki tam modeli de tarif eder. Aşağıdaki ayrım uygulama kodu için zorunludur:
| Yetenek | Durum | Bugün güvenilir kaynak |
|---|---|---|
| Exact paragraph ve 2-12 sentence-run discovery | Uygulandı ve accepted | F6-002/F6-003 evidence |
| Heading/note-aware full-context ve prose-only projection | Uygulandı ve accepted | F6-004 evidence |
| Near-candidate generation ve replayable passage diff | Uygulandı, evidence-only | F6-005/F6-006 artifacts |
| Stable occurrence/class identity | Uygulandı | F6-007 package contract |
| Atomic private PostgreSQL publication | Uygulandı ve isolated full run ile doğrulandı | F6-008 report |
| False-positive/positive benchmark | 17 accepted fixture; benchmark-only | F6-010 fixture |
| Exact-class canonical choice schema/lifecycle | Kurulu fakat apply activation kapalı | F6-009 migration |
| Private exact lookup ve chapter annotation reader | Uygulandı; yalnız auditor |
F6-011 migration |
| Canonical choice’in reader’da yayımlanması | Henüz yok | Her row not_published döner |
Reviewed repeat_family |
Henüz tablo/release yok | ADR-009’da reserved |
Directed quotation_relation |
Henüz tablo/release yok | ADR-009’da reserved |
Public api_v1 exact repeat endpointleri |
Uygulandı; release-pinned ve bounded | F8-010 migration |
| User-facing exact işaret ve diğer konumlar | Uygulandı; texti sarmayan start marker | F8-010 web reader |
| User-facing variant/canonical işaretleri | Henüz yok | Reviewed publication’a deferred |
“Near candidate var” ifadesi “variant family var” anlamına gelmez. Benzer şekilde benchmark label’ı production disposition, suppression rule veya curation kararı değildir.
Uçtan uca publication akışı
Bölüm başlığı “Uçtan uca publication akışı”- Core package ve annotation release root’ları profile’a bağlanır.
- Finite enumerator her in-scope paragraph veya 2-12 sentence run selection’ını source order ile çıkarır.
- Exact predicates bütün work universe’ünü değerlendirir; exact class ve dominance evidence’ı üretir.
- Stable identity compiler profile, occurrence, class ve release UUIDv5 path’lerini package release key altında üretir.
- Near generator normalized token features ile candidate çıkarabilir; passage diff exact endpoint witness’ları arasında replay edilir.
- Publisher zstd streamlerini temporary staging’e alır, FK/root/count/identity ve partition closure’ı doğrular; shared anchor ve repetition satırlarını tek transaction’da yayımlar.
- Candidate ve diff satırları
pending_reviewkalır. Otomatik threshold semantic relation veya canonical seçim üretemez. - Private reader yalnız accepted exact relationları release ID ile okur; candidate, benchmark, private provenance ve canonical working head okumaz.
Runtime legacy SQLite, ad hoc rapor, normalized-text fallback veya untracked candidate dosyası okuyamaz.
Canonical seçim ve review
Bölüm başlığı “Canonical seçim ve review”Canonical policy editorial-primary-placement-v1dir. Bir exact class için geçerli
durum başlangıçta unselecteddır. İlk/uzun/en yüksek skorlu member otomatik
seçilmez.
Review akışı şöyledir:
ensure_exact_class_curation_endpoint_v1exact class için lazy curation target kaydını oluşturur.list_canonical_choice_review_members_v1immutable member order’ını ve current state’i en fazla 100 satırlık sayfalarda verir. Passage prose taşımaz; yetkili review aracı selection/core reader üzerinden metni ayrıca çözer.- Proposal exact target, expected state root, action bytes, rationale, evidence ve UUIDv7 successor ID’sini freeze eder.
- En az iki distinct, yetkili non-author approval aynı proposal bytes’ına bağlanır.
- Apply işlemi class membership, core witness, review roots, stale state, idempotency key ve transition’ı tek transaction’da doğrular.
Üç action vardır:
| Action | Ön koşul | Sonuç |
|---|---|---|
create |
State unselected, successor member class içinde |
Yeni immutable choice, state selected |
supersede |
Expected current choice eşleşir | Yeni choice + replacement event; eski choice çözülür kalır |
retire |
Expected current choice eşleşir | Retirement event; state tekrar unselected |
apply_canonical_choice_v1 bugün installed_but_not_activated durumundadır.
Trusted authority/signature adapter; reviewer capability, revocation, epoch, freeze ve
lane state kontrollerini sağlamadan curation_executor execute hakkı alamaz.
Disposable fixture’ın owner ile lifecycle çalıştırması production activation değildir.
Private reader yüzeyi
Bölüm başlığı “Private reader yüzeyi”Accepted exact relationlar üç bounded fonksiyonla okunur:
select * from repetition_control.get_passage_repeat_context_v1( :repetition_release_id, :passage_occurrence_id);
select * from repetition_control.list_exact_repeat_members_v1( :repetition_release_id, :exact_class_id, :after_member_position, :limit);
select * from repetition_control.list_chapter_repeat_annotations_v1( :repetition_release_id, :chapter_id, :after_document_position, :after_occurrence_id, :limit);İlk fonksiyon exact_repeat, evaluated_unique veya excluded durumunu açıkça
döndürür. İkinci fonksiyon immutable class-member position ile sayfalar. Üçüncü
fonksiyon yalnız prose_only_v1 ve structural_unit/maximal exact annotationları
source order ile verir; nested ve overlap kayıtlarını birleştirmez.
Bu fonksiyonlar SECURITY INVOKERdır ve yalnız auditor tarafından çağrılabilir.
public, anon, authenticated ve app_runtime denied durumdadır. Passage prose,
pending candidate, diff, benchmark label veya private canonical working state
döndürmez. F8-010 bu private authority’yi doğrudan açmaz; API owner’a ait ayrı,
SECURITY DEFINER public-safe projectionlar üzerinden yalnız accepted exact alanları
release envelope, exposure manifest ve generated client types ile yayımlar.
Public exact tekrar yüzeyi
Bölüm başlığı “Public exact tekrar yüzeyi”API v1.7 iki işlem ekler:
select api_v1.get_chapter_repetitions_v1(:chapter_id, :deployment_id);select api_v1.list_repetition_members_v1( 'exact_class', :exact_class_id, :cursor, :page_size, :deployment_id);get_chapter_repetitions_v1, pinned repetition release’teki yalnız
prose_only_v1 ve structural_unit/maximal exact occurrence’ları döndürür.
Her kayıt stable occurrence/class/selection ID’lerini, exact member sayısını ve
ordered shared span geometrisini taşır. Span texti canonical core sentence’dan
yeniden çıkarılır ve immutable span hash’iyle doğrulanır. Bir chapter en fazla
1.000 görünür annotation ve 16 MiB response sınırındadır.
list_repetition_members_v1, exact class member position’ını signed opaque cursor
ile en fazla 100 satır sayfalar. Sonuç yalnız chapter, optional paragraph,
start/end sentence ve kısa excerpt gibi navigasyon alanlarını taşır. repeat_family
isteği repeat_family_not_published olarak unavailable döner; pending adaylardan
family uydurulmaz. Canonical publication alanı public shape’ta yoktur.
API manifesti accepted F6 exact release’in mevcut root’larından deterministik bir
repetition_publication_root_sha256 üretir. Aktivasyon exact discovery veya 2,6
milyon occurrence sayımı yapmaz; pinned complete release, core root ve selef API
deployment bağını doğrular. Binding ve deployment immutable/idempotenttir.
Web okuyucu passage textini wrap etmez ve render unit bölmez. Her cümleye sabit
sentence-<uuid> anchor’ı, aynı noktada başlayan exact kayıtlar için sıfır genişlikli
tek marker yerleştirir. Panel current occurrence’ı ayırır ve diğer member’ları chapter
anchor’ına bağlar. Repeat endpointi kullanılamazsa Latin, Osmanlıca, lügat, heading ve
note okuyucuları aynen çalışır.
Düzeltme karar ağacı
Bölüm başlığı “Düzeltme karar ağacı”| Gözlenen sorun | Doğru düzeltme | Yapılmaması gereken |
|---|---|---|
| Exact olmayan iki member aynı class’ta | Compiler/profile integrity incident; successor repetition release | Class member satırını update/delete etmek |
| Exact tekrar bulunmamış | Enumerator/profile/source evidence’ını düzeltip successor release üretmek | Normalized search sonucunu exact diye eklemek |
| Near candidate false positive | Immutable pending_review evidence’ını korumak; bugün yalnız F6-010 benchmark label’ıyla test etmek, gelecekte ADR-007 uyumlu curation ile disposition yayımlamak |
Benchmark label’ını production kararı saymak veya candidate’i global text kuralıyla silmek |
| Aynı pasajın varyantı | Gelecek ADR-007 repeat-family review’u ile complete member seti kabul etmek | Pairwise similarity edge’lerini transitively cluster etmek |
| Bir pasaj diğerini alıntılıyor | Gelecek directed quotation review’u ve exact extent | İki pasajı symmetric family yapmak |
| Canonical tercih yanlış | supersede veya retire |
Class/occurrence ID’sini ya da metni değiştirmek |
| Core kaynak düzeltildi | Yeni core/text version ve ona bağlı successor repetition release | Eski occurrence selection’ını retarget etmek |
| Reader boş sonuç verdi | Release ID ve explicit state/coverage’i incelemek | Başka release’e veya normalized text’e fallback yapmak |
Published occurrence ve class ID’leri atıf hedefi olabildiği için production’da “sil ve yeniden üret” curation yöntemi değildir. Disposable candidate worksetleri yeniden üretilebilir; accepted identity, membership ve manual choice history typed supersession ile yaşar.
Focused doğrulama
Bölüm başlığı “Focused doğrulama”Değişikliğin etkilediği katmanı çalıştırın:
make repetition-exact-paragraph-checkmake repetition-exact-sentence-sequence-checkmake repetition-annotation-projection-checkmake repetition-near-duplicate-checkmake repetition-passage-diff-checkmake repetition-stable-identity-checkmake repetition-identity-schema-checkmake repetition-importer-checkmake repetition-publication-schema-checkmake repetition-canonical-choice-checkruby -w tests/repetitions/false_positive_benchmark_test.rbruby scripts/repetitions/false_positive_benchmark.rb --verifyruby -w tests/db/repetition_reader_test.rbruby -w tests/db/repetition_canonical_text_isolation_test.rbmake repetition-links-checkpnpm --filter @munderecat/web testBu komutlar sample/statik sözleşme sınırındadır. Full 2,6 milyon occurrence publication’ı, persistent DB veya full corpus her doküman/reader değişikliğinde yeniden çalıştırılmaz. Full gate yalnız source release, profile/enumerator, stable identity grammar, publication schema/importer ya da certified root’lar değiştiğinde tekrar gerekir.
Bir failure’da önce authority katmanını belirleyin: core reconstruction, anchor geometry, profile/exact evidence, candidate/diff evidence, curation lifecycle, publication closure veya reader projection. Alt katmanı üst katman sonucuna uydurmak yerine hatayı kendi authority’sinde düzeltin.