Co to znamená
Worker nevychází z úpravy, ale z toho, co se musí stát pravdou. Úloha, která uvádí, jaký úkol provádí nebo jakému záměru slouží, dostane tento záměr ve svém briefingu: tvrzení, invarianty, kritéria, kterým tato práce slouží, se stavem jejich důkazů, kritiku plánu a zaznamenanou mezeru. Záměr nikdo nekopíruje do promptu.
Briefing se čte z enginu záměrů při každém vytištění. Záznam úlohy ponechává jen to, co pracovník jmenoval, a dva hashe; žádná fáze, verdikt ani kritérium se neukládá v úloze, relaci ani předávce (ADR 0111, pravidlo project.an-intent-outlives-its-sessions).
Princip
majordomus start "<task>" --scope <paths> --issue <id> se před zápisem čehokoli zeptá schopnosti intents.binding, čemu úloha slouží. Postavení odpovědi je bound, maintenance, exempt nebo refused; odmítnutá odpověď na otázku, kterou worker položil, nezačne. Záznam nese issue (nebo intent, nebo exemption s důvodem), postavení, o kterém start dostal zprávu, a dva piny: plan_revision a evidence_standing.
majordomus context se znovu zeptá vazby a vypíše sekci INTENT za PROFILE. Při těsném rozpočtu sekce ztrácí nejdřív své podmínky mezer a nikdy se nevypustí celá. Když spustitelný soubor není dosažitelný, sekce říká standing unknown a uvádí, na co se ptala, protože „žádný záměr“ a „nikdo se nemohl zeptat“ jsou různé odpovědi.
majordomus handover zapíše do front matter záznamu to, co úloha pojmenovala, a oba piny. majordomus handover --resolve se znovu zeptá na vazbu a vypíše řádek Intent:: unchanged, evidence_moved, pokud se u obsluhovaného kritéria změnil stav důkazů, plan_changed, pokud byl upraven záměr, odkaz nebo jeho kritika, nebo unknown, pokud se nemůže zeptat.
Jak to vidět
majordomus-cli intent binding --issue <id> # what a task naming that issue is bound to
test/cases/960_a_task_starts_bound_to_what_it_serves.sh spustí svázanou úlohu a přečte její kontext; test/cases/961_a_resumed_task_is_told_its_intent_moved.sh upravuje kritérium, kritiku a důkazy mezi předávkou a jejím vyřešením.
Co nepokrývá
Úloha, která nic nejmenuje, dostane briefing bez záměru: pod politikou intent.binding: off se nic neptá a pod advisory nebo required se start jen s rozsahem vyřeší podle svých cest a zaznamená se se svým postavením, ale jeho kontext nese sekci jen tehdy, když úloha jmenovala úkol, záměr nebo výjimku. Epizoda poskytovatele bez otevřené úlohy není vázána vůbec (ADR 0052).
Briefing informuje. Nerozhoduje, zda je kritérium splněno, a při dokončení nic neodmítá.
Proč existuje
Engine intentů už uměl říct, čemu úkol slouží, a nikdo se ho neptal: kontext předaný pracovníkovi jmenoval rozsah, ale ne účel. Briefing, který závisí na tom, že si pracovník vzpomene se zeptat, je briefing, který většina relací nikdy nedostane.