I0804 — Uzavřít relaci do obálky odvozené z ledgeru
Implementovat `session close`: přečíst aktivní záznam, odvodit odkazy epizody z ledgeru mezi jejím začátkem a nynějškem, zapsat neměnný uzavřený záznam s vypočtenými fakty gitu o koncovém stavu a volitelným autorským tělem shrnutí, odstranit aktivní záznam a připojit událost uzavření do ledgeru.
HOTOVO vlna 2 · p1 · profil deep-work · běží samostatně
Součást M003 — Relace je trvalá obálka a znalost se kompiluje z toho, co už je kanonické.
Cíl
Implementovat `session close`: přečíst aktivní záznam, odvodit odkazy epizody z ledgeru mezi jejím začátkem a nynějškem, zapsat neměnný uzavřený záznam s vypočtenými fakty gitu o koncovém stavu a volitelným autorským tělem shrnutí, odstranit aktivní záznam a připojit událost uzavření do ledgeru.
Proč
To je mechanismus, který z relace dělá obálku, nikoli vyprávění. Během epizody se nehromadí žádné reference, takže žádný příkaz mimo relaci za ně neplatí; a protože kniha záznamů jen přibývá a píše ji stroj, obálka je odvozením existujících důkazů, nikoli druhým jejich účtem.
Aktuální stav
Kniha zaznamenává události úlohy, checkpointu, předávky, dokončení, rozhodnutí, otázky, plánu a údržby, každou s časovým razítkem, větví a headem. Nic z ní nečte časový rozsah.
Cílový stav
Uzavřený záznam pod .majordomus/state/sessions/ nese vypočtenou identitu, started_at a closed_at, start a konec head a pracovního stromu, výsledek a referenční seznamy id úloh, id úkolů, id milníků, cest kontrolních bodů, cest předávek, položek rozhodnutí a id otázek pozorovaných v okně knihy záznamů. Nekopíruje žádné tělo. Autorský souhrn na stdin je volitelný a ukládá se jako tělo záznamu, s odmítnutím pole identity, které používá každý jiný záznam.
Rozsah
- lib/session.sh
- test/cases/60_session_lifecycle.sh
- test/cases/61_session_envelope.sh
Mimo rozsah
- Zpětné čtení uzavřeného záznamu, což je samostatný úkol
- Retence a archivace
- Jakékoli kopírování těla checkpointu, předávky nebo rozhodnutí do souboru relace
Závislosti
Co na tom čeká
Kritéria přijetí
- Uzavření zapíše neměnný záznam, odstraní aktivní záznam a připojí jednu událost do ledgeru
- Referenční výpisy odpovídají událostem, které kniha drží v okně, a nic mimo okno se neobjeví
- Epizoda, která zahrnuje dvě úlohy, jmenuje obě; úloha, která zahrnuje dvě relace, je pojmenována oběma
- Tělo žádného odkazovaného záznamu se v souboru relace neobjeví a případ to ověřuje
- Napsaný souhrn obsahující pole identity je odmítnut, stejně jako u checkpointu
Validace
- bash test/run.sh 60_session_lifecycle
- bash test/run.sh 61_session_envelope
Požadované důkazy
- session_closes
- envelope_is_references
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| session_closes | test | test/run.sh 61_session_envelope | 1 prošel. Uzavření zapíše neměnný záznam, odstraní otevřený a připojí právě jednu událost session.closed; uzavření bez otevřeného skončí s 12; shrnutí nesoucí pole identity skončí s 10 a nechá otevřený záznam na místě; druhé uzavření zapíše nový soubor a nechá dřívější záznam bajt po bajtu totožný; každý záznam má režim 0600 | 7ca51d2 |
| envelope_is_references | test | test/run.sh 61_session_envelope | 1 prošel a mutace zpět na časové okno ho shodí. Případ dokazuje, že záznam jmenuje reference na kontrolní bod, předávku a rozhodnutí a nenese žádné jejich tělo, že se každá odkazovaná cesta stavu vyřeší, že epizoda přes dvě úlohy jmenuje obě, zatímco úloha přes dvě relace je jmenována oběma, a že událost označená jinou relací nebo žádnou je vyloučena. První živý běh implementace s časovým oknem nasbíral záznamy druhého pracovníka do mé obálky; výběr je nyní podle razítka relace, které nese každý řádek knihy | 7ca51d2 |
Riziko
Okno účetní knihy je ohraničeno časovými razítky s rozlišením na sekundy, takže dvě epizody navazující v rámci jedné sekundy by si mohly nárokovat každá událost. Pořadí řádek účetní knihy je stávající rozhodčí přesně pro tento případ a musí se použít místo samotných razítek.
Časová osa
- zahájeno
- 2026-09-04T17:26:46Z
- ověřeno
- —
- dokončeno
- 2026-09-04T17:38:33Z
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/I0804.yaml. Přečtěte ho zpět pomocí majordomus plan show I0804.