Kontext
Epizoda provádění má dva artefakty. Dokud běží, má pracovní kontext pod .ai/local/session-contexts/; když se uzavře, má záznam pod .ai/repo/sessions/. Oba byly definovány, validovány, počítány jako zdravé a prázdné o jediné věci, kterou čtenář chce.
Tři měření provedená v tomto repozitáři 2026-09-11:
Pracovní kontext byl zmrazen při otevření. session start zapsal dokument jednou — front matter, pak doslovný výstup stavitele kontextu — a nic ho potom neaktualizovalo. Dokument zapsaný dřív, než worker cokoli udělal, je snímek toho, co mu bylo řečeno, což je nejméně užitečný okamžik ke zmrazení a nazvání pracovním kontextem. Hůř, majordomus session context odpovídal cestou toho souboru, ne jeho obsahem, takže příkaz, který existuje, aby odpověděl „jaký je můj pracovní kontext“, vracel název souboru.
## Notes byl nadpis bez producenta. Každý dokument nesl šablonu ## Notes zvoucí pracovníka, aby do ní ručně vpisoval své poznámky. Z 23 epizod, které tento checkout otevřel, 23 neslo šablonu a 0 neslo poznámku.
Tělo uzavřeného záznamu bylo z konstrukce prázdné. Kontrakt session/v1 učinil povinným každé strojově odvoditelné pole — head, branch, commits, changed_files, seznamy odkazů — a pole nesoucí význam nechal volitelné. Jeho jediným producentem byl člověk píšící do majordomus session close a automatický životní cyklus uzavírá epizodu pomocí mj_session_close < /dev/null. Na automatické cestě, tedy na každé cestě, bylo tělo prázdné. Záznam o epizodě, která udělala devadesát čtyři commitů, neříkal nic o žádném z nich.
Čtvrté měření vysvětluje druhé a je tím, které změnilo rozhodnutí. Repozitář už má tři příkazy pro autorské záznamy — majordomus decision, majordomus question, majordomus checkpoint — každý s deklarovanou událostí v knize, a mj_ledger_append už označuje každý řádek, který zapíše, id otevřené epizody. Od zavedení epizod 2026-09-06, přes 23 epizod a šest dní, je počet zaznamenaných rozhodnutí, otázek, kontrolních bodů a předávek nula. Poslední z nich předchází první epizodě.
To vylučuje zřejmou opravu. Sekce ## Notes není prázdná proto, že Markdown je špatné rozhraní; typovaný příkaz session note by měl přesně takové přijetí, jaké mají jeho tři starší sourozenci, tedy žádné. Tvar rozhraní nikdy nebyl úzkým místem.
Rozhodnutí
Pracovní kontext se odvozuje, neukládá. Dokument pod .ai/local/session-contexts/ si ponechává přesně jednu práci — je to úvodní snímek a snímek je oprávněně zmrazen, protože snímek, který se mění, nedokazuje nic. Pracovní kontext se stává něčím jiným: ne souborem, ale kompozicí provedenou při každém čtení ze tří zdrojů, z nichž každý lze zkontrolovat — vlastní otevřený záznam epizody, git nyní proti gitu při otevření a okno knihy záznamů epizody. majordomus session context vrací tuto kompozici; --path vrací snímek, což je to, co vracelo dříve.
Nic jej necachuje. Tvar, k němuž problém vybízí, je události + stav -> kontext -> cache a cache je záměrně vynechána: při této velikosti projekce stojí jeden průchod awk přes okno knihy a cache by přidala jen způsob, jak se mýlit. Odvozený kontext nemůže zastarat a nic si nemusí pamatovat, že se má obnovit, což je vlastnost, která zmrazenému dokumentu chyběla.
Neřeší znovu builder kontextu. majordomus context je ta schopnost a druhá definice jedné sémantiky je zde vadou návrhu (ADR 0004). To, co session context skládá, je epizoda; to, co builder řeší, je repozitář.
Autorské poznámky nedostávají nové podstatné jméno. decision, question a checkpoint už existují, už vysílají události a ledger je už přiřazuje epizodám podle razítka relace. Chyběl jim čtenář. Nadpis ## Notes se odstraňuje a složený kontext i tělo uzavřeného záznamu čtou tyto tři zpět, omezené na epizodu. To respektuje project.no-new-nouns a je to také poctivé čtení důkazů: přidání čtvrtého zapisovatele do vrstvy, jejíž tři zapisovatelé mají nulové přijetí, by vytvořilo čtvrté prázdné úložiště, ne životní cyklus.
Tělo uzavřeného záznamu je složené a nikdy prázdné. Autorské shrnutí na standardním vstupu se stále přebírá, je-li dáno. Kde žádné nedorazí, tělo se složí z toho, co si epizoda zapsala (její checkpointy, rozhodnutí a otázky, vymezené vlastním razítkem relace) a z toho, co dokládají git a ledger (commity s předměty, soubory, úkoly plánu, jak skončila). Sekce jsou deklarovány v policy.yaml pod session.record_sections, se stejným kontraktem jako sekce předávky: sekce tam jmenovaná bez zapisovatele je chyba konfigurace hlášená jménem, nikdy tiše prázdný nadpis.
Nic nefabrikuje souhrn. Tam, kde epizoda nezaznamenala nic autorského, to sekce řekne jménem a jmenuje příkaz, který by něco zaznamenal. Na této cestě se nikde nevolá žádný model. Přiznaná mezera je fakt, na který čtenář může reagovat; vymyšlené vyprávění v záznamu, do něhož se jen připisuje, je něco, co poté nikdo od skutečného nerozliší, což je přísně horší než prázdno, které nahrazuje.
Důsledky
Pracovníkovi, který čte svůj vlastní pracovní kontext uprostřed epizody, je nyní přímo v dokumentu řečeno, které z jeho záznamů jsou prázdné a který příkaz každý z nich vyplní. To je jediný tlak směrem k přijetí, který toto rozhodnutí vytváří, a je záměrně pouze doporučující: nic neodmítne uzavřít epizodu kvůli chybějící próze, protože právě přerušená epizoda nejvíce potřebuje zapsaný záznam.
Zjištění o prázdné autorské vrstvě tímto rozhodnutím není uzavřeno. Jeho hlavní příčina je viditelná, ale mimo rozsah této změny: každý zapisovač v té vrstvě — decision, question, checkpoint — je jen z příkazové řádky, zatímco každý worker od 2026-09-06 byl agent, který se k tomuto repozitáři dostává přes MCP, a registr schopností je podle kontraktu jen pro čtení (plan.rs tvrdí every_capability_is_a_query a přechody stavů žijí záměrně v příkazové řádce). Agent proto nemůže zaznamenat rozhodnutí povrchem, který skutečně používá. Změnit to znamená rozhodnout, zda smí registr nést zápisy, což je samostatné rozhodnutí a potřebuje vlastní ADR; toto zjištění zaznamenává a nepředjímá ho.
Oba dokumenty nyní odpovídají na disjunktní otázky a už se nemohou rozcházet, protože se ukládá jen jeden z nich.