I0806 — Udělat z pravidel relací doktríny s uchováváním a archivací
Dokončit pravidla relací: pravidla záznamů a životního cyklu jsou deklarována v share/standard/majordomus/ a rozesílána přes doctor a watch; zbývá odkaz na záznam, který neexistuje, retence nad deklarovaným stropem a archivace řízená politikou, která nikdy nemaže a nikdy nepřepisuje.
HOTOVO vlna 4 · p1 · profil implementation · běží samostatně
Součást M003 — Relace je trvalá obálka a znalost se kompiluje z toho, co už je kanonické.
Cíl
Dokončit pravidla relací: pravidla záznamů a životního cyklu jsou deklarována v share/standard/majordomus/ a rozesílána přes doctor a watch; zbývá odkaz na záznam, který neexistuje, retence nad deklarovaným stropem a archivace řízená politikou, která nikdy nemaže a nikdy nepřepisuje.
Proč
Pravidlo vynucené inline kontrolou v jednom příkazu je selhání „deklarováno, ale nezapojeno“, které tento nástroj měří v cizích repozitářích. Každé zde vynucené pravidlo je deklarováno v registru a z něj rozesíláno, nebo vynucováno není.
Aktuální stav
Změřeno na masteru 4090b2b8ae, 2026-10-08. Dvě pravidla relací jsou deklarována v share/standard/majordomus/rules a dispečována příkazy doctor a watch: majordomus.session-records (validátor session_records, test/cases/63_session_records.sh) a majordomus.session-lifecycle (validátor session_lifecycle, test/cases/54_session_lifecycle_hooks.sh), přistála v e9ffa54f1c. Doctor hlásí epizodu ponechanou otevřenou po session.stranded_after. Ne na masteru: politika (.ai/repo/policy.yaml od bd7cb2a579) nese limity uchování pro checkpointy, handovery a ledger a žádný pro relace; share/allow/policy.txt neuvádí žádný klíč uchování relací; majordomus.retention-caps relace nehlásí; lib/session.sh nemá archivaci. history --rotate zůstává precedentem pro uchování, které archivuje místo mazání a odmítá přepsat existující archiv.
Cílový stav
Existující pravidla relací zůstávají deklarována a dispatchována. Politika nese strop uchovávání relací a zda je zapnuto archivování, její klíče jsou v allowlistu politiky a majordomus.retention-caps hlásí relace vedle checkpointů a předávek. Relace jmenující neexistující checkpoint je nahlášena a jmenuje obojí. K archivaci dochází jen tehdy, když o ni požádá příkaz.
Rozsah
- share/standard/majordomus/
- share/allow/policy.txt
- share/skeleton
- lib/session.sh
- lib/doctor.sh
- lib/watch.sh
- .ai/repo/policy.yaml
- test/cases/63_session_records.sh
Mimo rozsah
- Jakákoli údržba na pozadí nebo automatická
- Smazání záznamu za jakýchkoli okolností
Závislosti
Co na tom čeká
Kritéria přijetí
- majordomus.session-records a majordomus.session-lifecycle se objeví v seznamu pravidel s existujícím validátorem a doctor dokazuje, že každý dosahuje příkazu, který tvrdí, že jej spouští
- Poškozený uzavřený záznam shodí doctor a způsobí drift ve watch a nález nese příkaz k reprodukci
- Relace, která uvádí neexistující cestu k checkpointu, je nahlášena s uvedením obou cest
- Archivace přesouvá záznamy bez mazání a odmítne přepsat existující archiv
- Relace ponechaná otevřená déle, než politika dovoluje, se hlásí příkazem watch a nic neblokuje
Validace
- bash test/run.sh 63_session_records
- bin/majordomus doctor
- bin/majordomus watch
Požadované důkazy
- session_doctrines_wired
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| session_doctrines_wired | test | test/run.sh 63_session_records 2985_session_records_are_capped_and_archived 54_session_lifecycle_hooks | testy: 3 prošly, 0 selhaly, 0 přeskočeny na master 97c4521f91 (2026-10-14 19:15-19:28Z). (1) majordomus.session-records (validátor session_records) a majordomus.session-lifecycle (validátor session_lifecycle) jsou deklarovány v share/standard/majordomus/manifest.yaml a od e9ffa54f1c je rozesílají doctor a watch; případ 54 řídí zapojení. (2) Špatně utvořený uzavřený záznam shodí doctor a způsobí drift watch s příkazem reprodukce: případ 63. (3) Záznam jmenující kontrolní bod nebo předávku, kterou tento checkout už nemá, se hlásí s oběma jmény: případ 2985. (4) majordomus session archive přesouvá záznamy do archive/, nic nemaže a odmítne, když je archivace vypnutá nebo je jméno už archivováno: případ 2985, dodáno ebe15d2e483. (5) Epizodu otevřenou déle než session.stranded_after hlásí validátor lifecycle (pravidlo majordomus.lifecycle-observed, vynucuje doctor a watch, ne check nebo finish; lib/doctor.sh mj_validate_lifecycle), takže nic neblokuje. | 97c4521 |
Riziko
Otevřená relace je po většinu svého života normální, takže pravidlo zastaralosti musí být informativní. Blokující kontrola otevřené relace by odmítla práci během epizody, kterou má popisovat.
Časová osa
- zahájeno
- 2026-10-14T19:34:23Z
- ověřeno
- 2026-10-14T19:35:35Z
- dokončeno
- 2026-10-14T19:35:58Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I0806.yaml. Načtěte ho zpět pomocí majordomus plan show I0806.