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.

Uzavření závazků

Uzavření závazků

majordomus://rule/majordomus.obligation-closure@1aktivní úlohyevidencecompletion

Zdůvodnění

finish už odmítá, ale vše, nad čím odmítá, je uvnitř pracovního stromu. Worker může splnit každý řádek smlouvy s prací necommitnutou, nepushnutou, chybějící v trunku, nepublikovanou a neověřenou a záznam řekne completed. Slova implementováno, commitnuto, pushnuto, integrováno a nasazeno jmenují různé fakty a zpráva, která je bere jako jeden, není zpráva.

Druhá polovina je zastarávání. Důkaz, který nemůže vypršet, je tvrzení o minulosti vydávané za tvrzení o přítomnosti: výsledek testu zaznamenaný před změnou nic neříká o stromu, který existuje po ní. Repozitář Majordomus, kde bylo toto pravidlo napsáno, to pro svůj web už vyřešil: hashuje vstupy, ze kterých byl odvozený artefakt sestaven, a hash přepočítá, aby rozhodl, zda je artefakt aktuální. Důkaz závazku je fakt téhož tvaru a posuzuje se stejně.

Třetí část vyplývá ze druhé. Kde je fakt takový, který nástroj dokáže držet — strom je čistý, remote má commit, trunk jej dosáhne, publikovaný web jej servíruje — je jeho záznam kopií odpovědi, kterou lze přečíst přímo, a kopie je to, co zastarává. Tyto závazky se místo toho vyřeší živě, což je tentýž lék jako přepočet aplikovaný na fakt, který nemá vstupy k hashování. Odstraňuje to také selhání, které kniha nezachytí: pracovníka zaznamenávajícího push, který nikdy neproběhl.

Požadované chování

Úloha může deklarovat requires, seznam tokenů, které definuje share/obligations.yaml. Každý token deklaruje established_by: co rozhodne jeho fakt, aniž by se ptal workera, nebo none, a pak deklaruje i unestablished — jeden řádek říkající, proč to tady nic rozhodnout nemůže, aby byla mezera zapsána, a ne ponechána k domyšlení.

Token, jehož established_by není none, se vyřeší živě, na HEAD, při každém vyhodnocení. Splní se tím, že je pravdivý, a odmítne se tím, že je nepravdivý, a zaznamenaný řádek task.evidence pro něj jej ani nesplní, ani nezachrání: zjištění poráží zaznamenání v obou směrech. Fakt zjištěný tímto způsobem se z principu bere na HEAD, což je mj_git_label exact. Kde to checkout nemůže vyřešit — není nastaven remote, není zaznamenán výchozí branch, publikovaný web nikdy neodpověděl — se závazek vrátí k zaznamenanému řádku a posuzuje se přesně jako nezjistitelný a nález pojmenuje, co nešlo vyřešit a proč. Nedosažitelné a nepublikované jsou různé nálezy.

Důkazy pro každý další token se zaznamenávají jako řádek hlavní knihy task.evidence, který jmenuje povinnost, způsob získání, příkaz nebo artefakt, který ho vytvořil — vyprávění není důkaz — a hash sledovaných souborů, které vybírají inputs dané povinnosti.

Když je výsledek completed, musí být každý deklarovaný závazek splněn nebo doložen důkazy. Důkaz závazku se vstupy ho splní jen tak dlouho, dokud se přepočtený hash těchto vstupů rovná zaznamenanému. Důkaz závazku, jehož skutečnost je vzdálená — push, integrace, publikace, nasazení — je vázán na commit, v němž byl pořízen, a závazek splní jen tak dlouho, dokud mj_git_label hlásí exact vůči tomuto commitu.

Výsledek jiný než completed se neodmítá: závazky se jmenují jako nesplněné a úloze se dovoluje být poctivá o tom, že není dokončena.

Chování při selhání

Porušení je zjištění FAIL v kategorii obligation, jmenující token a důvod — skutečnost vyvrácená tím, co se našlo místo ní, závazek bez důkazů, vstupy, které se změnily, s oběma hashi, nebo commit, který větev opustila — a příkaz, který by to znovu ustavil nebo zaznamenal. finish končí s 10 a nic nezapisuje.

Ověření

mj_validate_obligations to rozhoduje, dispatchováno z check, finish. Behaviorální případ test/cases/103_obligations.sh to dokazuje a CI tento případ spouští.

Odkud to pochází

kanonický soubor
.ai/repo/rules/vendor/majordomus/rules/obligation-closure.v1.md
identity
majordomus.obligation-closure@1
dostupné také jako
Zdroj MCP majordomus://rule/majordomus.obligation-closure@1 · majordomus entity show rule/majordomus-obligation-closure-1 · GET /api/v1/entity?uri=majordomus://rule/majordomus.obligation-closure@1
v Cockpitu
/cockpit/objects/rule/majordomus-obligation-closure-1

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.