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.

Úloha jmenuje, čemu slouží, a vazba se odvozuje, připíná a nikdy neukládá

Úloha jmenuje, čemu slouží, a vazba se odvozuje, připíná a nikdy neukládá

majordomus://adr/adr-0111navrženo intentsessionhandovergovernance

odkazuje na

odkazuje na něj

111. Úloha jmenuje, čemu slouží, a vazba je odvozená, připnutá a nikdy neukládaná

Kontext

ADR 0070 učinilo ze záměru typovaný záznam, ADR 0073 přimělo úkol jmenovat kritéria, kterým slouží, a intent preflight obojí spojilo: z úkolu nebo některých cest určí, kterému záměru práce slouží, zda je to údržba, nebo proč nesmí pokračovat. Nic se na to neptalo. start vzalo popis a rozsah; záznam úlohy nejmenoval žádný úkol ani záměr; kontext předaný pracovníkovi neříkal nic o kritériích, pro která práce byla; předávka nesla commit a žádnou stopu záměru, pod kterým byla napsána; a plan start přesunulo úkol do ACTIVE jen podle jeho stavu. Práci na záměru, jehož plán nikdy neprošel kritikou, našlo intent validate až poté, co začala, nikdy ji neodmítlo předem.

Vlastník požádal o uzavření smyčky na tomto konci: relace, která provádí pod intentem, s explicitní, typovanou a auditovatelnou výjimkou, když práce legitimně pod žádným není.

Jak, omezují tři platné věci. Pravidlo project.an-intent-outlives-its-sessions říká, že žádná relace, provider ani předávka nedrží stav záměru. ADR 0047 drží životní cyklus úlohy v shellu, dokud se celý nepřevede, a ADR 0069 říká, že nové rozhodovací chování je typovaná schopnost, ne nový shell. ADR 0052 říká, že epizoda je hranice providera a úloha je volitelný vztah, který nese, takže nic, co epizoda potřebuje, nesmí záviset na úloze.

Rozhodnutí

Jedno odvození. intent_binding::bind obaluje preflight a přidává jen to, co úloha potřebuje vedle něj: záměr zadaný jménem, výjimku, nejednoznačnost, poznámku k rozsahu a dva piny. Odpovídá na něj jedna schopnost jen pro čtení, intents.binding (majordomus-cli intent binding, GET /api/v1/intents/binding, majordomus_intent_binding). Jeho stav je bound, maintenance, exempt nebo refused a každé odmítnutí nese příčinu: sedm z preflightu a nothing_named, unknown_intent, intent_retired, intent_has_no_open_work, issue_outside_intent, ambiguous_intent, unknown_exemption, exemption_without_reason, exemption_names_work.

Shell se ptá a nerozhoduje nic. start, context, handover, handover --resolve a plan start se ptají sestaveného spustitelného souboru přes lib/intent_binding.sh. Odpověď, kterou nelze přečíst, je neznámá a neznámé není nikdy pass: každý volající říká proč a co by to rozhodlo.

Politika rozhoduje, co odmítnutí stojí. intent.binding je off (nebo chybí), advisory nebo required. Když chybí, start bez nových příznaků se na nic neptá a chová se jako vždy, což dostane adopter, jehož politika předchází klíči. Příznak je otázka, kterou worker položil, takže --issue, --intent a --exempt se ptají při každé hodnotě a odmítnutá nebo nečitelná odpověď nezahájí start. Při advisory se ptá každý start a odmítnutí je hlášeno. Při required odmítnutá nebo nečitelná vazba nezahájí start, v start i v plan start stejně, v obou enginech plánu.

Výjimka je deklarovaná třída s důvodem. intent.exemptions uvádí třídy; --exempt <class> --because "<reason>" se zaznamenává v záznamu úlohy a v události knihy task.started. Nedeklarovaná třída, chybějící důvod a výjimka udělená vedle pojmenované práce jsou každá odmítnuty. Odvozená údržba — práce pod milníkem, který žádný záměr nepojmenovává — výjimku nepotřebuje, jak už intent validate dovoluje. Absence záměru sama o sobě nikdy výjimkou není.

Samotné cesty, které dosahují více než jednoho záměru, jsou nejednoznačné. Worker jmenuje úkol.

Záznam drží jména a piny. Záznam úlohy a front matter předávky nesou to, co worker jmenoval, a dva hashe: plan_revision přes výrok každého obsluhovaného záměru, invarianty, non-goals a kritéria, vyřešené úkoly s tím, čemu každý slouží, a nálezy každé kritiky s jejich řešeními; a evidence_standing přes stav důkazů každého obsluhovaného kritéria. Jsou dva, protože odpovídají na různé otázky: běžný commit může zastarat důkazy, aniž se kdo dotkl toho, k čemu práce slouží. handover --resolve se na vazbu zeptá znovu a řekne unchanged, evidence_moved nebo plan_changed, případně unknown, když se zeptat nemůže. Nikde se neukládá žádná fáze, verdikt, kritérium ani stav důkazů; pravidlo project.an-intent-outlives-its-sessions se mění na verzi 3, aby říkalo, že deklarované jméno a hash porovnaný při čtení nejsou stavem záměru a že úkol, který úloha pojmenovala, je odkaz declared ve spojení realizace.

Vazba odmítne start; neposuzuje dokončení. Zda úloha, která tvrdí completed, splnila kritéria, kterým sloužila, je otázka dokončení, kterou ADR 0107 drží mimo verdikt záměru a kterou vyřeší pozdější rozhodnutí.

Důsledky

  • Repozitář, který nastavuje required, musí mít sestavený spustitelný soubor: shell na vazbu sám odpovědět nemůže, záměrně, a požadovaný gate, který prošel, když nemohl číst, by gate nebyl.
  • Tento repozitář nastavuje advisory a měření říká proč. 221 odlišných rozsahů, které jeho relace zadaly start (každá událost task.started v účetních knihách primárního checkoutu a jeho worktree, 2026-10-07), bylo každé položeno intents.binding jen podle cest proti plánu při této změně: 183 (83 %) bylo odmítnuto — 180 jako ambiguous_intent spolu s intent_not_critiqued, 3 jen jako ambiguous_intent — 30 (14 %) bylo navázáno a 8 (4 %) byla údržba. Rozsah tak široký jako .ai/repo docs site se překrývá s úkoly několika záměrů a intent-lifecycle nemá kritiku. required by odmítl pět startů ze šesti za pojmenování rozsahu tak, jak to dnes dělá každá relace, takže čeká, až relace začnou jmenovat úkol ze zvyku a plán onoho záměru projde kritikou; číslem ke sledování je odmítnutý podíl startů, které nejmenují nic.
  • Kritika se stále posuzuje podle své přítomnosti a otevřených blokujících nálezů. Zaznamenává commit, při kterém byla napsána, a žádnou revizi plánu, který revidovala, takže zastaralost nemá s čím být porovnána; milník opozice dává záznamu kritiky plan_revision, který revidovala, a jeho odmítnutí znovu používá zde vypočtený hash.
  • Epizoda není vázána. Relace poskytovatele, která edituje bez otevřené úlohy, je mimo toto rozhodnutí, jak požaduje ADR 0052; práci takového druhu drží kontrola rozsahu na check, finish a pre-push.
  • Životní cyklus úlohy získává shellový kód, který se ptá, formátuje a odmítá. Nic nerozhoduje a přesune se do Rustu se zbytkem životního cyklu podle ADR 0047.

Zamítnuté alternativy

  • Ukládat rozlišený záměr do záznamu úlohy. Skončilo by to s úlohou, rozcházelo by se se záznamy v okamžiku úpravy kritéria a odporovalo by pravidlu, že původ se odvozuje. Připnutí stojí jedno čtení navíc a nemůže se rozejít se svým zdrojem.
  • Ukládat jen úkol a záměr odvozovat. Worker, který jmenuje záměr přímo, by neměl nic zaznamenáno a další čtenář by nerozeznal „pojmenoval záměr“ od „nepojmenoval nic“.
  • Jeden hash revize. Hlásil by drift při každém commitu, který změnil vstupy testu, a řádek, který se ukazuje vždy, se přestane číst.
  • Odmítnout rozsah mimo rozsah jmenovaného úkolu. Rozsahy úkolů běžně vynechávají vygenerované projekce, které změna musí znovu vygenerovat; vazba to říká v poznámce a kontrola rozsahu zůstává kontrolou rozsahu úlohy samotné.
  • Kontrolovat jen start. plan start a schopnost plan.transition jsou druhý způsob, jak práce začíná, a kontrola s dveřmi vedle sebe je jen rada.
  • Udělat z required výchozí hodnotu. start každého adoptujícího by po aktualizaci začalo odmítat z důvodu, který jeho repozitář nikdy nedeklaroval.

Odkud to pochází

kanonický soubor
.ai/repo/adrs/0111-a-task-names-what-it-serves-and-the-binding-is-derived.md
identity
adr-0111
dostupné také jako
Zdroj MCP majordomus://adr/adr-0111 · majordomus entity show adr/adr-0111 · GET /api/v1/entity?uri=majordomus://adr/adr-0111
v Cockpitu
/cockpit/objects/adr/adr-0111

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.