75. Která práce realizuje záměr, je join přes záznamy, které životní cyklus už vede, a uzavřená práce nepřebíjí důkazy
Kontext
ADR 0070 udělalo ze záměru typovaný záznam, jehož fáze se odvozuje z plánu a jehož kritéria splňují jen důkazy. ADR 0073 přinutilo úkol jmenovat kritérium, kterému slouží. Žádné neříká, kdo záměr realizuje: která úloha, v kterých epizodách, pod kterými poskytovateli, přenesená přes které předávky. Tato linie záleží nejvíc právě tehdy, když se pracovník změní — okno Claude Code předá a okno Codexu pokračuje — a právě tehdy se ztratí vše, co drželo u pracovníka.
Každý fakt, který původ potřebuje, už zaznamenává něco, co nezávisí na tom, že si worker vzpomene. Ledger razítkuje každý task.started, task.checkpoint, task.handed_over a přechod plánu jeho epizodou. Uzavřený záznam relace uvádí úkoly, které jeho epizoda posunula, a cesty, které zanechala změněné. Claim peera jmenuje svůj rozsah. Otevřený soubor epizody jmenuje svého providera — ale ten soubor se při uzavření odstraní, takže provider dokončené epizody nebyl zaznamenán nikde trvale.
Zvlášť, stupeň záměru verifying znamená, že každý milník je HOTOV a ne každé kritérium má aktuální důkazy. Nic to neřeklo nahlas. Záměr splněný včera, jehož chování se dnes rozbilo, spadne zpět na verifying a recenzentovi plánu se jeví jako dokončená práce.
Rozhodnutí
Realizace je spojení pouze pro čtení, nikde neuložené. crate::intent_realization čte úlohy ledgeru (každou se všemi epizodami, které na ní pracovaly, jejím poskytovatelem a jejími předávkami), uzavřené záznamy relací sdílené vrstvy, jejichž epizodu žádná lokální úloha nedrží, a nástěnku peerů, a spojuje každou jednotku práce se záměry přes úkol a milník. Promítají ji dvě schopnosti: intent_realization.work (majordomus intent realization, GET /api/v1/intents/realization, majordomus_intent_realization) a intent_realization.explain (majordomus intent explain, GET /api/v1/intents/explain, majordomus_intent_explain).
Každý odkaz nese svůj původ, z jednoho mapování faktu, ze kterého byl přečten:
| přes | provenance | fakt |
|---|---|---|
named_issue | declared | tvrzení nebo vlastní slova úlohy citují úkol |
moved_issue | observed | přechod plánu v epizodě práce nebo úkoly záznamu |
branch_issue | derived | název větve nese id úkolu |
scope_overlap | inferred | jen když neexistuje nic z výše uvedeného: rozsah otevřeného úkolu se překrývá |
Jeden odkaz na úkol, ten nejsilnější. Odvozený odkaz se nikdy neukazuje jako deklarovaný.
Startovní řádek epizody jmenuje svého poskytovatele. session.started nese provider a provider_session, když epizodu otevřel poskytovatel, takže uzavřená epizoda si ponechává svého poskytovatele v záznamu jen pro připojování.
Uzavřená práce nepřebíjí důkazy. Každý záměr hlásí své nesplněné kritéria s úkoly, které každému slouží, a svůj drift: closed_work_contradicted, když je každý milník HOTOVO a zaznamenaný běh kritéria selhává nebo je zastaralý, closed_work_unproven, když žádný nemá, criterion_closed_unmet, když je každý úkol sloužící kritériu HOTOVO a kritérium není splněno. majordomus intent realization končí kódem 10 při closed_work_contradicted a gate intent-realization ho spouští. Splněný záměr, jehož realita regreduje, tento gate zachytí a pojmenuje kritérium.
Zamítnuté alternativy
Pole intent na úloze, relaci nebo předávce. Byl by to druhý záznam toho, co plán už dává do vztahu, vyplňovaný workerem, jehož přečkání má linie zajistit; a bylo by chybné při prvním přesunu úkolu mezi milníky.
Předávka, která kopíruje stav záměru do svého těla. Předávku čte další worker, ne další odvození: kopie je zastaralá ve chvíli, kdy se pohnou důkazy, a učinila by z předávky druhý záznam o splnění.
Překryv rozsahu jako běžný odkaz. Široké rozsahy se překrývají s většinou úkolů a jejich předkládání jako faktů by způsobilo, že původ vypadá úplně, i když je odhadnutý. Ponechávají se, označené inferred, a používají se, jen když neexistuje nic silnějšího.
Razítkování splnění, když se uzavře poslední milník. Odmítnuto ADR 0070 ze stejného důvodu, z jakého je odmítnuto zde: uzavření plánu je událost, pravdivost záměru je pozorování.
Důsledky
- Konec relace, změna poskytovatele nebo opětovné připojení peera nehýbe žádným záměrem; spojení odpovídá tutéž linii ze záznamů, které zůstaly.
- Nástěnka peerů je paměť jednoho serveru: nároky se objevují ve spojení servírovaném tímto serverem, a ne v samostatném čtení z příkazové řádky. Trvalou polovinou rodokmenu je ledger.
- Hooky Codexu a Gemini zapojuje jiná branch; toto rozhodnutí potřebuje jen to, aby otevíraly epizody přes
session start --provider, což je vstupní bod, který řídí případ 388. - Pohled na záměr v Cockpitu, využití nesplněných kritérií kompilátorem kontextu a sesouhlasení milníků GitHubu čtou toto spojení a nerozhodují se zde.
Dodatek, 2026-10-15: záznam, který nevykonal žádnou práci, nebo ji vykonal před jakýmkoli záměrem, není osiřelá práce
majordomus intent realization na masteru c0e3585dc8 přečetlo 89 jednotek práce a 80 jich napočítalo jako neslouží žádnému záměru. Všech 80 jsou uzavřené záznamy relací zahájených mezi 2026-09-06 a 2026-10-04. Čteno proti jejich vlastnímu front matteru 66 nezaznamenává žádný úkol, žádný commit a žádnou změněnou cestu kromě záznamů relací (65 z nich jsou záznamy Recovered episode, jejichž commity a změněné cesty majordomus recover dodatečně dokázat nemůže) a dalších 14 začalo před 2026-09-15, nejdříve created_at kteréhokoli záznamu záměru. Žádná z nich nedělala práci poté, co záměr existoval, a nenechala ji nepropojenou. Návrh „navázat osiřelé na záměry“ nelze podle tohoto ADR provést: odkaz se připouští jen ze zaznamenaného faktu, žádný neexistuje a záznam relace je pouze pro připisování. Špatný byl počet, ne záznamy.
Nepropojená jednotka se klasifikuje podle faktů, která zaznamenává, v tomto pořadí, a jen poslední třída je osiřelá práce:
| třída | jednotka |
|---|---|
empty | je záznam relace, který neuvádí žádný úkol, žádný commit a žádnou změněnou cestu mimo .ai/repo/sessions/ a jehož vlastní slova necitují žádný úkol |
before_intents | není živý, není empty a jeho nejstarší epizoda začala před nejstarším created_at jakéhokoli záznamu záměru (každá neživá jednotka, když není deklarován žádný záměr) |
orphan | je cokoli dalšího nepropojené: práce, která byla udělána nebo se dělá, zatímco záměr existoval, bez faktu, který by ji s ním propojoval |
Živá jednotka (aktivní úloha, připojený nárok) nikdy není empty ani before_intents: je to práce probíhající nyní a zachovává varování work_serves_no_intent přesně jako dříve. Žádná třída není odkaz: klasifikace jednotky pro ni nezaznamenává žádný záměr a nic nezapisuje do záznamu relace. orphans si zachovává své jméno v odpovědi JSON a nyní počítá jen třídu orphan; dva nové počty stojí vedle něj, takže čtenář, který sčítal staré pole, čte menší, pravdivé číslo, ne chybějící.
Zamítnuto: vazba 80 záznamů na záměry (vymýšlí odkazy declared nebo inferred, které žádný fakt nepodporuje, a upravuje záznamy jen pro přidávání); smazání nebo archivace prázdných záznamů (jsou důkazem obnovy, že epizoda zemřela, a retence je věcí ADR 0091, ne tohoto reportu); a ponechání počtu tak, jak byl (report, který označuje 80 záznamů za osiřelou práci, když žádný není, posílá lidi navazovat práci, která neexistuje, a tak návrh vznikl).
Práce se skládá ze tří řezů, každý jedním pull requestem:
realize()klasifikuje.IntentWorkUnitzískástarted_at(záznam relacestarted_at, prvnítask.startedúlohy,atclaimu) acommits(commitszáznamu relace);crate::intent_realizationje čte tam, kde už čtechanged_filesaissues.IntentRealizedWorkzískáclass(empty,before_intents,orphan) u každé nepropojené jednotky aIntentRealizationzískáemptyabefore_intentsvedleorphans. Unit testy vintent_realization.rspokrývají každou třídu, přednost (prázdný záznam před prvním záměrem jeempty), živou jednotku, která není nikdy omluvena, a repozitář bez záměru. Důkaz:realize_classifies_unlinked_work.- CLI a Cockpit ukazují tři počty. Textový souhrn
majordomus intent realizationčteN serving no intent (E empty records, B before the first intent)a každý nepropojený řádek jmenuje svou třídu; stránka záměrů v Cockpitu ukazujeorphansjako statistiku a dvě další vedle ní.tests/intent_realization.rsacommands/intent.rsověřují nová pole. - Případ to drží od začátku do konce. Nový případ (číslo se bere na nástěnce při startu řezu) sestaví fixture s jedním prázdným obnoveným záznamem, jedním záznamem s commity před prvním intentem, jedním záznamem s commity po něm a jednou aktivní nenavázanou úlohou a aserce
orphans2,empty1,before_intents1 a varování jen na úloze.
Na c0e3585dc8 se třídy čtou empty 66, before_intents 14, orphan 0.