70. Záměr je typovaný záznam a jeho fáze a splnění se odvozují z plánu a důkazů
Kontext
Projektový model říká, jaká práce existuje: milníky jsou výsledky, úkoly jsou exekuční kontrakty a plan.rs odvozuje každý stav z toho, co se s nimi stalo. Struktura důkazů říká, co běželo: docs/CLAIMS.yaml jmenuje test a ledger drží běh. Žádné neříká, k čemu práce byla. Veřejný web to říkal otevřeně — neexistoval objekt záměru, registr záměrů ani id záměru — a každá otázka tvaru „jakému výsledku tato změna slouží“ nebo „dosáhlo dokončení těchto milníků něčeho“ byla zodpovídána, pokud vůbec, z promptu, který svou relaci nepřežil.
Existovaly dva způsoby, jak chybějící vrstvu přidat. Jeden dává záměru vlastní životní cyklus: pole stavu, přechody, razítko při sloučení pull requestu. Druhý chápe záměr jako výrok, jehož stav se počítá ze záznamů, které repozitář už vede.
Rozhodnutí
Záměr je záznam YAML pod .ai/repo/project/intents/, druh intent, schéma majordomus.intent/v1: id, title, statement, které se musí stát pravdou, invariants, které musí zůstat pravdou, milestones, které jej realizují, a kritéria satisfaction, každé {id, criterion, evidence, ref} s evidence jedním z test, claim, command nebo deployment. Volitelné governance, non_goals, cancelled a superseded_by. Druh je deklarován v share/kinds.yaml distribuce a jeho třída v sources.yaml tohoto repozitáře i skeletonu.
Záměr není druhým modelem úlohy nebo životního cyklu. Žádný stupeň není uložen, žádná schopnost záměr nepřevádí, nic jej neopatřuje razítkem a žádná schopnost záměru nezapisuje do repozitáře. Stupeň je čisté odvození nad dvěma věcmi, které již existují:
- stav, který
plan::Planodvozuje pro každý pojmenovaný milník —declared, dokud se milník nevyřeší,planned, jakmile se vyřeší všechny,executing, jakmile je kterýkoli ACTIVE, VERIFY nebo DONE,verifying, jakmile je každý milník, který není zrušen ani nahrazen, DONE; - stav důkazu, který už vrstva důkazů odvozuje — kritérium
testje splněno prošlým během v ledgeru, jehož digest zdroje stále sedí, kritériumclaimtvrzením, které jeprovenneboinputs unchanged.satisfiedjeverifying, když je splněno každé kritérium.
Kritéria command a deployment se vyřeší a nikdy se nepočítají jako splněná: není zaznamenána žádná exekuce, ze které by se daly odvodit, a pokládat deklarovaný příkaz za důkaz by byla anonymní zelená, kterou kniha existuje, aby odmítala.
Čtyři schopnosti jen pro čtení promítají derivaci do příkazové řádky, HTTP a MCP: intents.list, intents.record, intents.validate (při selhání exit 10) a intents.preflight (úkol nebo cesty, na milník, na záměry, kterým slouží, nebo odmítnutí jmenující chybějící článek). Kontrola intent-check spouští intent validate při změně modelu projektu nebo enginu a project.work-serves-a-declared-intent to pravidlo uvádí.
Zamítnuté alternativy
Uložený stav záměru s přechody. Byl by to druhý životní cyklus vedle plánového a oba by se rozešly při prvním přeplánování úkolu — vadě, které se plán vyhnul tím, že byl napsán bez pole stavu.
Splnění označené při sloučení posledního pull requestu. Sloučený pull request, jehož záměr je stále nepravdivý, je nedokončená práce; git server není věštec výsledku.
Nový ledger důkazů pro záměry. Ledger a join tvrzení už říkají, co běželo a zda je to aktuální. Druhý by byl druhou pravdou o týchž provedeních.
Důsledky
- O splnění rozhoduje engine záměrů nad účetní knihou. Nahrazeno ADR 0107: tento důsledek původně plánoval, že jakmile přistane politika dokončení (pull request 292), stane se splnění záměru otázkou politiky dokončení a tento engine by odpovídal jen na stav. ADR 0107 ponechává engine jako jedinou autoritu pro verdikt kritéria; dokončení plní povinnosti a nikdy nerozhoduje o splnění. To je řez 2 milníku
intent-lifecycle, přeformulovaný, aby odpovídal. milestone_serves_no_intentje varování, takže stávající milníky zůstávají platné, zatímco se pro ně píší záměry.- Spojení devcontext a preflightu relace, pohled na záměr v Cockpitu s vynuceným pokrytím skriptů a odsouhlasení milníků GitHubu s kontrolou uzavření jsou pozdější slices a nerozhoduje se o nich zde.