Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

Která práce realizuje záměr, je spojení nad záznamy, které životní cyklus už vede, a uzavřená práce nepřevyšuje důkazy

Která práce realizuje záměr, je spojení nad záznamy, které životní cyklus už vede, a uzavřená práce nepřevyšuje důkazy

majordomus://adr/adr-0075navrženo intentsessionhandoverevidence

odkazuje na

odkazuje na něj

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řesprovenancefakt
named_issuedeclaredtvrzení nebo vlastní slova úlohy citují úkol
moved_issueobservedpřechod plánu v epizodě práce nebo úkoly záznamu
branch_issuederivednázev větve nese id úkolu
scope_overlapinferredjen 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řídajednotka
emptyje 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_intentsnení ž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)
orphanje 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:

  1. realize() klasifikuje. IntentWorkUnit získá started_at (záznam relace started_at, první task.started úlohy, at claimu) a commits (commits záznamu relace); crate::intent_realization je čte tam, kde už čte changed_files a issues. IntentRealizedWork získá class (empty, before_intents, orphan) u každé nepropojené jednotky a IntentRealization získá empty a before_intents vedle orphans. Unit testy v intent_realization.rs pokrývají každou třídu, přednost (prázdný záznam před prvním záměrem je empty), živou jednotku, která není nikdy omluvena, a repozitář bez záměru. Důkaz: realize_classifies_unlinked_work.
  2. CLI a Cockpit ukazují tři počty. Textový souhrn majordomus intent realization čte N 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 ukazuje orphans jako statistiku a dvě další vedle ní. tests/intent_realization.rs a commands/intent.rs ověřují nová pole.
  3. 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 orphans 2, empty 1, before_intents 1 a varování jen na úloze.

Na c0e3585dc8 se třídy čtou empty 66, before_intents 14, orphan 0.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0075-intent-realization-is-a-join-and-closed-work-does-not-outrank-evidence.md
identity
adr-0075
dostupné také jako
Zdroj MCP majordomus://adr/adr-0075 · majordomus entity show adr/adr-0075 · GET /api/v1/entity?uri=majordomus://adr/adr-0075
v Cockpitu
/cockpit/objects/adr/adr-0075

Tato stránka je generována z výše uvedeného souboru pomocí scripts/generate-site-data; úprava stránky nic nemění, úprava souboru změní všechna rozhraní. Výše uvedené vztahy jsou hrany docs/generated/graph.json, které spustitelný program zapisuje ze stejného indexu.

Prohledává názvy a popisy všech stránek, které tento web publikuje.