Zdůvodnění
Intent jmenuje milníky, které ho realizují, a důkazy, které rozhodují o každém kritériu (project.work-serves-a-declared-intent). To spojuje intent s milníky a s důkazy. Nespojuje kritérium s prací, která ho má učinit pravdivým, takže intent mohl jmenovat milník, jehož úkoly řešily dvě ze čtyř jeho kritérií, a nic neříkalo, že ke zbylým dvěma nebyla žádná práce, dokud ověření nezjistilo, že nejsou splněna.
Dvě věci, na nichž plánování stojí, byly v téže pozici. Co pracovník pozoroval a co revize plánu přehlédla, žilo ve svitku relace: bez verzování, bez vynucování a pryč, když relace skončila. Plánování proto začínalo od promptu a opomenutý požadavek vyplul na povrch po práci, ne před ní.
Majordomus nepozoruje ani nekritizuje. Dělá to člověk nebo worker a to, co zjistil, se stane záznamem, který může repozitář odmítnout.
Požadované chování
- Úkol může deklarovat
serves: [<intent>#<criterion>]. Odkaz se píše na úkolu, protože úkol vzniká po záměru; záměr své úkoly nikdy nevypisuje, takže přeplánování záměr neupravuje. - Plán nese
servesjako data a neodvozuje z něj žádný nález: oba plánovací enginy zůstávají totožné (test/cases/99_plan_capabilities.sh). Posuzuje ho engine záměrů. - Pokrytí se odvozuje pro každé kritérium každého živého záměru a každý úkol hlásí důvod, proč existuje:
intent,maintenancepod milníkem, který žádný záměr nejmenuje, nebounexplainedpod milníkem, který záměr realizuje. - Mezera žije v
.ai/repo/project/gaps/<intent>.yaml, kritika v.ai/repo/project/critiques/<intent>.yaml, obojí validní podle schématu a klíčované svým záměrem. - Záměr bez živého úkolu pod kterýmkoli milníkem, který jmenuje, se hlásí jako neplánovaný, ne odmítá: tak začíná každý záměr.
Chování při selhání
majordomus intent validate skončí kódem 10 a jmenuje nález a jeho předmět: criterion_uncovered, issue_without_purpose, serves_outside_milestone, serves_unknown_intent, serves_unknown_criterion, malformed_serves, gap_criterion_unanswered, condition_without_observation, gap_unknown_intent, gap_without_commit, gap_work_issue_serves_other, critique_unknown_class, rejected_without_reason, planned_into_unknown_issue, planned_into_unrelated_issue, executing_without_critique, executing_with_open_blocker.
Hlášeno a nefatální: intent_not_planned, criterion_weakly_covered, duplicate_work, milestone_contributes_nothing, plan_not_critiqued, duplicate_serves.
Ověření
apps/majordomus-cli/tests/intent_plan.rs prokazuje prostřednictvím sestaveného spustitelného souboru, že příkazová řádka, HTTP i MCP odpovídají na stejné pokrytí, že kritérium, kterému nic neslouží, je odmítnuto, jakmile má záměr práci, že údržba není nález a že provedení je odmítnuto před kritikou. test/cases/386_a_plan_is_held_to_its_intent.sh provádí tatáž odmítnutí nad repozitářem, který majordomus init vytvořil, po jedné úpravě. Kontrola intent-check spouští majordomus intent validate při změně projektového modelu nebo enginu záměrů.