M003 — Relace je trvalá obálka a znalosti se kompilují z toho, co je už kanonické
Worker bez historie konverzace dokáže odpovědět, co se stalo, proč, co bylo rozhodnuto, které důkazy to podporují, kde leží kanonický zdroj a co dělat dál — ze záznamů a odvozeného indexu, přičemž git zůstává autoritou nad oběma.
AKTIVNÍ 12 of 16 issues done
- připraveno
- 2
- blokováno
- 2
- aktivní
- 0
- verify
- 0
- hotovo
- 12
- zrušeno
- 1
Problém
Kontinuita je dnes tvarovaná úlohou. Záznam úlohy říká, co je jeden kus práce, a checkpointy, předávky, rozhodnutí a otázky na něm visí. Nic nepředstavuje samotnou epizodu provádění — worker si sedl, dotkl se tří úloh, zaznamenal dvě rozhodnutí, uzavřel jeden úkol a skončil — takže kauzální otázku, kterou se pozdější worker skutečně ptá, nelze ze záznamů zodpovědět: která práce proběhla společně, v jakém pořadí, proti kterým commitům a co rozhodla. Druhou mezerou je vyhledávání. `search` je doslovný sken přes šest provozních druhů záznamů, což je správně pro ty soubory a slepé ke všemu ostatnímu: matice tvrzení, kontrakty milníků a úkolů, politika, profily, prompty a dokumenty už nesou explicitní, strojově čitelné vztahy — tvrzení k implementaci k testu, úkol k milníku k závislosti, důkaz k úkolu — a žádný příkaz neumí projít ani jeden z nich. Worker tedy obě rekonstruuje z konverzace, což je přesně to, co nepřežije.
Výsledek
Worker bez historie konverzace dokáže odpovědět, co se stalo, proč, co bylo rozhodnuto, které důkazy to podporují, kde leží kanonický zdroj a co dělat dál — ze záznamů a odvozeného indexu, přičemž git zůstává autoritou nad oběma.
Aktuální stav
Neexistuje pojem relace: `.majordomus/state/` drží úlohu, kontrolní bod, předávku, rozhodnutí, otázku a záznam, a záznam je jediná věc, která ví, že dva záznamy zapsala stejná epizoda, což ví jen podle časové sousednosti. Neexistuje žádný index; docs/CONTINUITY.md to uvádí jako záměrnou volbu pro korpus záznamů a o zbytku repozitáře mlčí. Clean Extraction Boundary v docs/DESIGN.md absolutně vylučuje sémantiku grafu, což zakazuje i graf provenance odvozený z vlastních souborů tohoto repozitáře.
Cílový stav
Existuje životní cyklus relace s jednou aktivní relací na worktree a neměnnými uzavřenými záznamy, které odkazují na autoritativní záznamy, místo aby je kopírovaly, a jejichž celá obálka odkazů je odvozena z účetní knihy, ne ručně nashromážděna. Překladač znalostí zjišťuje kurátorované zdroje přes git, extrahuje uzly s identitami, které přežijí přestavbu, zaznamenává hrany jen tam, kde byl pozorován výslovný vztah, drží manifest hashů obsahu, který činí prázdnou synchronizaci levnou, a odpovídá na dotazy jen pro čtení, aniž by cokoli mutoval. `context` z něj může vybrat omezený řez. Obojí jsou deklarované doktríny s validátory, které doctor a watch dispatchují, a hranice mezi sdílenou a provozní znalostí je testovanou vlastností, ne konvencí.
Rozsah
- lib
- bin/majordomus
- share/standard/majordomus/
- share/allow
- share/skeleton
- dokumentace
- test/cases
- .majordomus/policy.yaml
- .majordomus/project
Mimo rozsah
- Jakákoli databáze, embedding, vektorové úložiště nebo řazení podle podobnosti
- Jakékoli vyvolání modelu, síťové volání nebo generované shrnutí
- Druhé měnitelné narativní úložiště, které kopíruje rozhodnutí, otázky nebo těla checkpointů
- Publikace provozních záznamů na web
- Výstup znalostí specifický pro renderer pro jakoukoli konkrétní aplikaci na poznámky
- Odvozování vztahu z prózy, která ho výslovně neuvádí
Kritéria přijetí
- Relace se otevře, uzavře a její uzavřený záznam je neměnný, časově seřazený a interpretovatelný proti aktuálnímu gitu přes existující slovník divergence
- Uzavřená relace odkazem jmenuje úlohy, úkoly, checkpointy, předávky, rozhodnutí a otázky své epizody a nekopíruje žádné jejich tělo
- Zjišťování znalostí řídí git, ne průchod souborovým systémem, a nesledovaný soubor není zdrojem
- Identita uzlu přežije přestavbu a úprava jednoho zdroje změní jen uzly z něj odvozené
- Každá hrana nese soubor, v němž byla pozorována; hrana bez provenience je selhání validace
- Druhá synchronizace bez změny zdroje hlásí žádnou práci a je měřitelně levnější než studená
- Každý příkaz znalostí a relací jen pro čtení ponechá `git status` bajt po bajtu totožný
- Sdílené a provozní znalosti jsou oddělitelné a test dokazuje, že sdílená projekce neobsahuje žádný provozní záznam
- `context` může nést omezenou sekci znalostí, která se zahodí dřív než jakýkoli neměnný fakt a když se zahodí, je jmenována pod EXCLUDED
- Každá nová záruka je deklarovaná doktrína s validátorem, který dispatchují doctor a watch, tvrzením a behaviorálním případem
- docs/CONTINUITY.md a docs/DESIGN.md popisují novou architekturu přesně, místo aby jí odporovaly
Validace
- bash test/run.sh
- bin/majordomus doctor
- bin/majordomus watch
- bin/majordomus plan validate
- shellcheck -x -s bash bin/majordomus lib/*.sh
Požadované důkazy
- session_lifecycle
- session_immutability
- knowledge_determinism
- knowledge_idempotence
- provenance_required
- readonly_proven
- privacy_boundary
- context_bounded
- doctrines_wired
- dogfood_loop
Rizika
- Index znalostí je druhá věc, které lze věřit. Každé zmírnění je totéž: index je ukazatel, nese cestu ke zdroji a hash toho, na co ukazuje, a hlásí se jako zastaralý, místo aby se tiše přestavěl dotazem.
- Kurátorovaný seznam zdrojů je místo, kde se na něco dá zapomenout. Alternativa — indexovat vše, co git sleduje — dováží generované soubory, vendorované stromy a výstup webu a byla zamítnuta; cenou je, že přidání druhu kanonického souboru je výslovná úprava a validátor jmenuje deklarovanou třídu zdroje, jejíž objevování nic nevrací.
- Odvozování odkazů relace z knihy činí knihu nosnou pro druhou věc. Už je jen přidávaná, strojově zapisovaná a validovaná pravidlem majordomus.ledger-integrity a alternativa — střádání odkazů do měnitelného souboru relace při každém příkazu — dává zápis na horkou cestu každého jiného příkazu a vytváří druhé úložiště, kterému se tento milník chce vyhnout.
- Clean Extraction Boundary dnes zakazuje sémantiku grafu bez výhrad. Zúžení je záměrná změna publikované hranice a musí být zúžena přesně — obecný graf původu nad vlastními artefakty tohoto repozitáře — jinak přestane být hranicí.
Úkoly
Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I0801 | HOTOVO | 0 | — | Zúžit Clean Extraction Boundary a zaznamenat, co bylo převzato |
| I0802 | HOTOVO | 0 | — | Specifikovat záznam relace dřív, než se nějaký napíše |
| I0803 | HOTOVO | 1 | I0802 | Otevřít relaci a nahlásit její stav |
| I0804 | HOTOVO | 2 | I0803 | Uzavřít relaci do obálky odvozené z ledgeru |
| I0805 | HOTOVO | 3 | I0804 | Číst relace zpět s označením divergence |
| I0806 | HOTOVO | 4 | I0805 | Pravidla relací učinit doktrínami, s retencí a archivací |
| I0807 | HOTOVO | 1 | I0801 | Zdroje znalostí zjišťovat z gitu, ne ze souborového systému |
| I0808 | HOTOVO | 2 | I0807 | Extrahovat uzly s identitami, které přežijí rebuild |
| I0809 | HOTOVO | 3 | I0808 | Zaznamenávat jen hrany, které soubor uvádí, každou s místem, kde byla pozorována |
| I0810 | ZRUŠENO | 4 | I0809 | Manifest s hashi obsahu, díky němuž je druhá synchronizace levná |
| I0811 | HOTOVO | 4 | I0809 | Vyhledávání ve znalostech jen pro čtení s pořadím, které lze vysvětlit |
| I0812 | HOTOVO | 5 | I0811 | Graf validovat a nechat doctor i watch ptát se téhož validátoru |
| I0813 | PŘIPRAVENO | 6 | I0806, I0812 | Uzavřená relace se stane uzlem, který ukazuje na svou epizodu |
| I0814 | HOTOVO | 5 | I0811 | Workerovi dát omezený výřez znalostí, ne celou znalostní bázi |
| I0815 | BLOKOVÁNO | 7 | I0813, I0814 | Říct, co je nyní pravda, v tvrzeních, dokumentaci a pokynech pro workery |
| I0816 | BLOKOVÁNO | 8 | I0815 | Dokázat smyčku na skutečném úkolu, bez přepisu |
| I3060 | PŘIPRAVENO | 0 | — | A provider hook declares its timeout, and the session end closes its episode inside the budget |
Graf
flowchart LR
I0801["I0801<br/>Narrow the Clean Extraction Boundary and record what was adopted"]:::done
I0802["I0802<br/>Specify the session record before writing one"]:::done
I0803["I0803<br/>Open a session and report its status"]:::done
I0804["I0804<br/>Close a session into an envelope derived from the ledger"]:::done
I0805["I0805<br/>Read sessions back with a divergence label"]:::done
I0806["I0806<br/>Make the session rules doctrines, with retention and archiving"]:::done
I0807["I0807<br/>Discover knowledge sources from git, not from the filesystem"]:::done
I0808["I0808<br/>Extract nodes with identities that survive a rebuild"]:::done
I0809["I0809<br/>Record only edges that a file states, each with where it was observed"]:::done
I0810["I0810<br/>A content-hash manifest that makes a second sync cheap"]:::cancelled
I0811["I0811<br/>Read-only knowledge lookup with an ordering that can be explained"]:::done
I0812["I0812<br/>Validate the graph, and let doctor and watch ask the same validator"]:::done
I0813["I0813<br/>A closed session becomes a node that points at its episode"]:::ready
I0814["I0814<br/>Give the worker a bounded slice of knowledge, not the knowledge base"]:::done
I0815["I0815<br/>Say what is now true in the claims, the documentation and the worker instructions"]:::blocked
I0816["I0816<br/>Prove the loop on a real issue, without a transcript"]:::blocked
I3060["I3060<br/>A provider hook declares its timeout, and the session end closes its episode inside the budget"]:::ready
I0801 --> I0807
I0802 --> I0803
I0803 --> I0804
I0804 --> I0805
I0805 --> I0806
I0806 --> I0813
I0807 --> I0808
I0808 --> I0809
I0809 --> I0810
I0809 --> I0811
I0811 --> I0812
I0811 --> I0814
I0812 --> I0813
I0813 --> I0815
I0814 --> I0815
I0815 --> I0816
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxLinked from this diagram (17)
- I0801 Zúžit Clean Extraction Boundary a zaznamenat, co bylo převzato
- I0802 Specifikovat záznam relace dřív, než se nějaký napíše
- I0803 Otevřít relaci a ohlásit její stav
- I0804 Uzavřít relaci do obálky odvozené z knihy
- I0805 Číst relace zpět se štítkem divergence
- I0806 Udělat z pravidel relace doktríny, s uchováváním a archivací
- I0807 Zdroje znalostí zjišťovat z gitu, ne ze souborového systému
- I0808 Extrahovat uzly s identitami, které přežijí přebudování
- I0809 Zaznamenávat jen hrany, které soubor uvádí, každou s místem, kde byla pozorována
- I0810 Manifest s hashi obsahu, který druhou synchronizaci zlevní
- I0811 Vyhledávání znalostí jen pro čtení s pořadím, které lze vysvětlit
- I0812 Validovat graf a nechat doctor i watch ptát se téhož validátoru
- I0813 Uzavřená relace se stane uzlem, který ukazuje na svou epizodu
- I0814 Dát pracovníkovi omezený výřez znalostí, ne celou bázi znalostí
- I0815 Říct, co je nyní pravda, v tvrzeních, dokumentaci a instrukcích pro pracovníky
- I0816 Prokázat smyčku na skutečném úkolu, bez přepisu
- I3060 A provider hook declares its timeout, and the session end closes its episode inside the budget
Kanonický záznam: .ai/repo/project/milestones/M003.yaml. Přečtěte jej zpět pomocí majordomus plan show M003.