14. Uzavřená relace je sdílený objekt vrstvy, ne lokální poznámka
Kontext
Tento repozitář už epizodu provádění uzavírá do neměnného záznamu: session close zapíše front matter nesoucí identitu, profil, větev, head, z něhož začala, commity, které vytvořila, odkazy, kterých se dotkla, a výsledek, odvozené z gitu a z ledgeru, ne z ničí paměti. Je to správný artefakt a téměř nikdo jej nemůže číst, protože je zapsán pod .ai/local/state/, polovinou vrstvy, která se nikdy nesdílí a nikdy nepromítá. Nástroj, který umí vypsat každé pravidlo, tvrzení, rozhodnutí a případ užití přes čtyři povrchy, nedokáže vypsat, co se stalo minulé úterý.
Srovnání, které to vyvolalo, byl repozitář, kde se stejná potřeba řeší plochým adresářem datovaných souborů Markdown, konvencí pojmenování a commit hookem, který kontroluje název souboru. Funguje to a jeho slabiny jsou poučné: README adresáře vede ručně psaný index souborů (tvrdí retenci padesáti, přiznává sto sedmdesát devět a drží pětset osmdesát osm), vynucování ověřuje název a nikdy obsah a dva formáty pojmenování se přijímají kvůli kompatibilitě s tím prvním. Princip stojí za převzetí. Tvar ne.
Převzít zde princip narazí na pravidlo, které tento repozitář už drží: project.never-store-transcripts — žádný záznam neukládá ani neshrnuje konverzaci; záznamy nesou, co je pravda nyní, a další akci. Vyprávění relace napsané z přepisu je přesně to, co to zakazuje, a zákaz je správný: shrnutí konverzace je neověřitelné, špatně stárne a zve model, který je napsal, aby byl autoritou nad tím, co se stalo.
Rozhodnutí
Uzavřená relace se stává sdíleným objektem vrstvy, objevovaným jako každý jiný druh a promítaným na každý povrch, který registr napájí — příkazovou řádku, API a jeho dokument OpenAPI, MCP, web a cockpit. Záznam se přesouvá z poloviny lokální pro checkout do sledované sekce .ai/repo/sessions/ a třída zdroje ho tam objeví; nic jiného ho neregistruje, a proto jsou projekce zdarma.
Pravidlo se dodržuje, ne ohýbá: záznam relace nese jen to, co repozitář dokáže doložit. Identitu a časy, profil a úlohu, ke které patřil, větev, hlavu, ze které začal, a hlavu, na které skončil, commity mezi nimi, cesty, které pracovní strom změnil, výsledek a reference, které epizoda vytvořila. Volitelné tělo je vlastní shrnutí práce od člověka nebo workera, což je výrok o repozitáři, ne převyprávění konverzace s modelem. Nic nerekonstruuje dialog, necituje prompt ani nepřičítá úvahy tahu — prompty mají vlastní úložiště a to je záměrně lokální.
Co nepřekročí hranici, zůstává za ní. Absolutní cesta worktree je fakt o stroji, ne o repozitáři, a zahazuje se, ne publikuje. Co kniha drží podrobně, zůstává v knize, která zůstává lokální: sdílený záznam jmenuje, co se stalo, a lokální účet zůstává k dispozici tomu, kdo checkout drží.
Retence se stává problémem gitu, ne pročišťovací smyčky. Sledovaný záznam je historie; důvod, proč porovnávaný repozitář potřebuje politiku retence, je, že jeho úložištěm je adresář, který nikdo nemůže dotazovat, a úložiště, které může dotazovat každý povrch, nemusí být udržováno dost malé na ruční čtení.
Zamítnuté alternativy
Ponechat záznam lokální a promítat z něj. Projekce čtou index a index čte sledovaný strom; naučit ho číst polovinu lokální pro checkout by učinilo každou projekci závislou na stavu jednoho stroje, což je vlastnost, která činí lokální polovinu lokální.
Zápis druhého, sdílitelného záznamu vedle lokálního. Dva záznamy jedné epizody, udržované v souladu tím, kdo si vzpomene. Repozitář má pravidlo i o tom.
Ponechat volný datovaný Markdown porovnávaného repozitáře. Název souboru není schéma. Bez něj nic nemůže validovat, že záznam nese výsledek, že jeho head je commit nebo že cesty, které jmenuje, existují — a projekce by vykreslovaly cokoli, co někdo napsal.
Publikovat samotný ledger. Je to žurnál událostí jen k připojování, s detaily lokálními pro stroj a bez redakčního úsudku; je to důkaz pro záznam, ne jeho náhrada.
Důsledky
Záznamy relací se ve veřejném repozitáři stávají veřejnými. To je záměrné zveřejnění: co tento repozitář drží, je to, co dělal — které větve, které commity, které výsledky — a stejná transparentnost, která činí čitelnými tvrzení a rozhodnutí, platí pro práci, která je vytvořila. Schéma je to, co to udržuje bezpečné, protože uzavírá sadu polí: záznam nemůže nést tajemství, pro které nemá pole, a jediné volné textové pole je souhrn práce, jehož smlouva to říká.
session close mění místo, kam zapisuje, takže zvyk workera se nemění a další doctor najde záznam ve sledovaném stromu. Sekce je spravovaný adresář a nese svůj kontrakt jako každá jiná, což kontrola pokrytí vynucuje od prvního dne její existence.
Cockpit, web i MCP získají nový druh, aniž by se o něm dozvěděly, což je celý argument pro registr, aplikovaný na poslední část repozitáře, která jeho součástí ještě nebyla.