Co to znamená
Každý záznam pod .ai/local/prompts/ říká, ke které epizodě provádění patří, a říká, jak to ví. Kde nelze epizodu určit, říká to místo toho — nikdy se nepřipojí k epizodě, která byla náhodou nejblíže v čase. Archiv je čitelný jen pro svého vlastníka, včetně adresáře; je omezen deklarovanou politikou retence, která bere těla promptů a nikdy záznamy; a tvary přihlašovacích údajů, které zapisovač zná, se nahradí dříve, než cokoli dosáhne disku.
Vada, kterou toto uzavírá
Záznam nesl vlastní identifikátor relace providera — UUID, které nic neznamená mimo toho providera — a nic jiného, co by ho umístilo. Převod na kanonické id epizody vyžadoval .ai/local/state/sessions-open/<provider session>.yaml a uzavření epizody ten soubor maže.
Důsledkem není mezera, která se pomalu rozšiřuje. Je úplný a okamžitý: mapování existuje, dokud je epizoda otevřená, a v okamžiku jejího uzavření zmizí, takže každý prompt té epizody se najednou stane nepřiřaditelným. Změřeno v tomto repozitáři 2026-09-11, před změnou: 979 záznamů, 80 různých relací providerů, 20 přeživších kontextů relací a 713 promptů bez cesty k epizodě. K tomu archiv měl 20 MB bez jakéhokoli omezení, každý soubor měl režim 0644, zatímco stav relace vedle něj měl vždy 0600, a prompt obsahující přihlašovací údaj se uchovával doslovně a zůstával.
Princip
Identita, zapsaná, dokud ještě platí. mj_capture_write rozliší epizodu přes mj_open_session_id s MJ_SESSION_KEY nastaveným z vlastní relace providera v payloadu. To je přísná forma resolveru, který používá zbytek nástroje: ta epizoda, nebo žádná. Další dva kroky resolveru se vrací k prostředí a poté k ukazateli tohoto checkoutu a oba by promptu dali epizodu okna, které ji otevřelo naposledy. repository_id a worktree_id jsou mj_repository_id a mj_worktree_id — identita, kterou zbytek nástroje už počítá, ne její druhý pojem.
Provenience je pole, ne konvence. episode_link je jedním z pěti slov. open znamená, že epizoda byla otevřená pod relací tohoto poskytovatele, když prompt dorazil: pozorování. session-context a ledger znamenají, že vazba byla vytvořena dodatečně z důkazů, které uzavření přežily: odvození, a čtenáři se řekne které. orphan znamená, že zachycení hledalo a epizodu nenašlo; unlinked-legacy znamená, že záznam předchází poli. Poslední dvě nenesou žádnou epizodu. Čtenář, který nerozliší pozorování od odvození, nepozná, co archiv dokazuje.
capture reconcile propojuje jen na základě důkazů. Tři úrovně, v tomto pořadí: úložiště otevřených epizod; zmrazený pracovní kontext pod .ai/local/session-contexts/, který pojmenovává relaci poskytovatele, jež epizodu otevřela, a při uzavření se nemaže; a okna epizod, kde přesně jedna nepřiřazená uzavřená epizoda tohoto worktree obsahuje celý rozsah promptů dané relace poskytovatele. Čtvrtá úroveň neexistuje a už vůbec ne „nejbližší epizoda v čase“. Prompt přiřazený špatné epizodě je horší než prompt nepřiřazený žádné: druhý viditelně chybí, první tiše lže. To, co třetí úroveň odmítá, ji činí použitelnou — odmítne, jakmile by odpovědí mohly být dvě epizody.
Retence bere tělo a ponechává záznam. Staré pravidlo znělo, že nic se nikdy nesmí odstranit, s argumentem, že prompt se z ničeho neodvozuje a žádný jiný soubor ho nezrekonstruuje. Tento argument se týká záznamu — že se stal, kdy, v které epizodě, pod kterým headem — a uplatňoval se na bajty textu, což je část, která nese přihlašovací údaje a jejíž riziko s hodnotou nevyprchává. prompts.retention_max_days a prompts.retention_max_bytes jsou deklarovány v politice; majordomus capture prune je uplatňuje, nejdřív podle stáří a pak podle velikosti, od nejstaršího těla. Prořezaný záznam si ponechá každé pole včetně proveniencí odkazu na epizodu a získá náhrobek: kdy tělo zmizelo, jak bylo dlouhé a jaký měl digest. Záznam se stále nikdy nemaže a nic neprořezává jako vedlejší efekt hooku, který je měl uchovávat.
Redakce proběhne před persistencí. Deklarovaná tabulka tvarů pověření — API klíče poskytovatelů, tokeny a PAT GitHubu, id přístupových klíčů AWS, tokeny Google, Slack a Stripe, hlavičky soukromých klíčů PEM, bearer tokeny a přiřazení dlouhé neprůhledné hodnoty něčemu, co se jmenuje key, token nebo password — se dosazuje do surového rozsahu JSON na cestě do záznamu. Neexistuje proto okamžik, kdy by původní bajty byly na disku: ani v záznamu, ani v jednom z vykreslení, ani v názvu souboru, protože slug se bere z redigovaného textu, ani v diagnostickém logu, který vypisuje názvy klíčů payloadu a nikdy hodnotu. Co bylo nahrazeno, se zaznamená v redacted, aby „nic nebylo nalezeno“ a „tajemství je pryč“ byla tvrzení, která čtenář rozliší.
0600, včetně adresáře. Názvy souborů jsou začátky promptů, takže adresář čitelný pro všechny prozradí, na co se ptalo, i když je prázdný. init vytvoří archiv s 0700, update sjednotí existující, každý zápis nastaví režim souboru a capture render — opravný příkaz archivu a ten, který nález jmenuje — nastaví obojí nad celým adresářem při každém běhu.
Jak to vidět
majordomus capture reconcile --dry-run # what evidence survives, and for how many records
majordomus capture reconcile # links what it can; marks the rest, guesses at none
majordomus capture prune --dry-run # which bodies the two bounds would take
majordomus doctor # OK prompts — n record(s) each name their episode
# or say why they cannot: x linked, y unlinkedCo nepokrývá
Neobnovuje odkaz, který nic nepodporuje. V tomto repozitáři zůstává unlinked-legacy 713 z 979 záznamů a validátor hlásí tento počet, nezaokrouhluje ho na nulu: kontrola, která by tvrdila plně propojený archiv, by tvrdila přesně to, co migrace záměrně odmítla vymýšlet.
Redakce pokrývá tvary, které jsou přihlašovacími údaji ze své podstaty — token, jehož vlastní prefix říká, co je — plus jednu formu přiřazení. Není to obecný skener tajemství a nesnaží se jím být: heuristika, která by redigovala cokoli, co vypadá tajně, by sežrala prompty, které lidé nejvíc potřebují číst zpětně, a archiv, který komolí běžný text, je archiv, kterému nikdo nevěří. Přihlašovací údaj v tvaru, který tabulka nezná, se stále persistuje, a tabulka jsou data, takže přidat tvar je jeden řádek.
Ořezávání je příkaz, který člověk spouští, stejně jako history --rotate před ním. doctor ohlásí archiv přes kteroukoli mez a pojmenuje nápravu; nic archiv nezmenší za něčími zády.
Proč existuje
Archiv tisíce promptů, který nedokáže říct, ke které epizodě kterýkoli z nich patřil, je hromada textu s časovými značkami. Celé tvrzení subsystému kontinuity je, že sezení pracovníka je záznam se začátkem, koncem a prací mezi nimi, a prompty jsou jedinou částí toho záznamu, kterou model nemůže napsat sám. Učinit je navždy spojitelnými je to, co činí zbytek subsystému pravdivým; učinit je soukromými a omezenými je to, co činí jejich uchovávání obhajitelným.