Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.
0ok
2použití
10kontrakt nesplněn
12chybějící artefakt
13interní chyba
15odmítnuto
Kontrakt dokončení
Vyberte situaci a podívejte se, zda je výsledek přijat, nebo odmítnut, a z jakých důvodů. Každý zdejší scénář se spouští proti skutečnému binárnímu souboru v test/cases/34_command_fixtures.sh, takže tato stránka nemůže tvrdit chování, které nástroj nemá.
Zatím nic nezavedeno
žádný otevřený blokátor
ano
poznámka přítomna
ne
rozsah dodržen
ano
poskytnuté ověření
ne
Pro tento repozitář platí
# ... and an active task scoped to lib, with work done inside that scope.
. "$FIXTURE_SETUP/installed.sh"
"$MJ" start "narrow the parser" --scope lib >/dev/null
echo work >> lib/a
Spustit
$ majordomus finish --outcome completed
Výstup obsahuje
SELHÁNÍ ověření
poznámka FAIL
odmítnuto
ukončení10
Dvě řádky kontraktu nejsou splněny a obě se jmenují najednou. Pracovník, který opraví jednu a je znovu odmítnut kvůli další, by se kontrakt učil po jednom oběhu, proto se hlásí všechny příčiny společně.
Práce mimo nárokovaný rozsah
žádný otevřený blokátor
ano
poznámka přítomna
ano
rozsah dodržen
ne
poskytnuté ověření
ano
Pro tento repozitář platí
# An active task scoped to lib, with a change made under docs that it never claimed.
. "$FIXTURE_SETUP/active-task.sh"
echo stray >> docs/d
Spustit
$ majordomus finish --outcome completed --verify-command test -d .ai
Výstup obsahuje
SELHÁNÍ rozsahu
mimo nárokovaný rozsah
ukončení10
Úloha si nárokovala lib. Změna pod docs je práce, kterou si úloha nenárokovala, a je odmítnuta, ať je cokoli dalšího na místě.
Nevyřešená otázka je otevřená
žádný otevřený blokátor
ne
poznámka přítomna
ano
rozsah dodržen
ano
poskytnuté ověření
ano
Pro tento repozitář platí
# An active task with an unresolved question open against it.
. "$FIXTURE_SETUP/active-task.sh"
"$MJ" question add "does the parser need to accept tabs?" >/dev/null
Spustit
$ majordomus finish --outcome completed --verify-command test -d .ai
Výstup obsahuje
FAIL blockers
ukončení10
Otevřená otázka odmítne completed, a jen completed. Tutéž úlohu lze dokončit jako blocked, což je poctivý výsledek, když odpověď není na vás.
Ověřovací příkaz se spustí a selže
žádný otevřený blokátor
ano
poznámka přítomna
ano
rozsah dodržen
ano
poskytnuté ověření
ne
Pro tento repozitář platí
# An active task with the note the outcome requires already written.
. "$FIXTURE_SETUP/active-task.sh"
printf '# Objective\no\n# Current State\nc\n# Next Action\nn\n' | "$MJ" handover >/dev/null
Příkaz se spouští, netvrdí se. Jeho návratový kód a doba trvání se zaznamenají, ať vrátí cokoli, takže „ověření proběhlo“ nelze tvrdit, aniž by cokoli skutečně běželo.
finish --check bez aktivní úlohy
žádný otevřený blokátor
ano
poznámka přítomna
ano
rozsah dodržen
ano
poskytnuté ověření
ano
Pro tento repozitář platí
# A repository with Majordomus installed and projections generated, and one commit of work.
"$MJ" init >/dev/null
"$MJ" update >/dev/null
mkdir -p lib docs
echo a > lib/a
echo d > docs/d
git add . && git commit -qm base
Spustit
$ majordomus finish --check
Výstup obsahuje
není co vynucovat
ukončení0
Proto může hook pre-push spouštět finish --check bezpodmínečně: repozitář bez aktivní úlohy není selhávající repozitář.
Vše na místě
žádný otevřený blokátor
ano
poznámka přítomna
ano
rozsah dodržen
ano
poskytnuté ověření
ano
Pro tento repozitář platí
# An active task with the note the outcome requires already written.
. "$FIXTURE_SETUP/active-task.sh"
printf '# Objective\no\n# Current State\nc\n# Next Action\nn\n' | "$MJ" handover >/dev/null
Spustit
$ majordomus finish --outcome completed --verify-command test -d .ai
Výstup obsahuje
dokončeno
ukončení0
Přijato a kniha zaznamenává výsledek spolu s ověřením, které si ho zasloužilo.
Reference
Vyhodnotit kontrakt dokončení. Odmítnout, pokud není splněn.
Čte: politiku, profil, current.yaml, git, knihu. Zapisuje: při úspěchu výsledek current.yaml nastavený na zadanou hodnotu, jeden řádek knihy task.finished nesoucí vyhodnocený kontrolní seznam a výsledek ověření a kopii --note pod state/completed/<id>.md, pokud je zadána.
Argumenty:--outcome completed|partial|blocked|no_match|failed povinný. --verify-command "<cmd>" spustí vlastní ověření projektu v kořeni repozitáře a zaznamená jeho návratový kód, dobu trvání, příkaz a id git stromu pracovního stromu, nad kterým běželo. Strom se čte před během i po něm: pokud se změnil, zatímco příkaz běžel — druhý worker ve stejném checkoutu, člověk ukládající soubor, příkaz přepisující sledované soubory — běh nepopisuje ani jeden stav a řádek selže; spusťte jej znovu, až se strom ustálí. --note <file> dodá poznámku o dokončení; jinak se použije nejnovější předávka, která tuto úlohu jmenuje. --check vyhodnotí rozsah a stav bez zápisu a skončí s 0, když není aktivní žádná úloha nebo je úloha už dokončená, takže pre-push hook nikdy nezablokuje repozitář, ve kterém není co vynucovat.
Požadavky profilu se vyhodnocují i pro completed: regression_test_required projde, když se dotčená cesta jeví jako test (test/, spec/, _test., .spec.); decision_record_required projde, když decisions.md obsahuje Task: <id>. Kontrola regrese je záměrně hrubá a říká to ve své zprávě.
Kontrakt pro completed:
scope respected touched files within claimed pathsverification ran --verify-command exited 0, recordedstate updated current.yaml is at HEAD or advanced, not divergedno open blockers open-questions.md has no unresolved entry for this tasknote present newest handover or completion note has required sections
Každý řádek smlouvy se vyhodnotí a vypíše, ať projde, nebo ne, aby odmítnutí řeklo přesně, co chybí. partial a blocked vyžadují poznámku s # Next Action; no_match a failed vyžadují # Reason; všechny čtyři přeskakují řádek ověření a blocked přeskakuje řádek blokátorů. Když selže kterýkoli řádek, nic se nezapíše. Dokončení již dokončené úlohy se odmítne (15).
$ majordomus finish --outcome completed --verify-command "make test"OK scope 12 files, all within lib/authOK verification make test — exit 0, 41sOK state exact (head 9b1e2d4)FAIL blockers open-questions.md: "token refresh window — needs product decision" unresolved [reproduce: grep -n 'unresolved' .ai/local/state/open-questions.md]OK note handover 20260903T201455Z--main--9b1e2d4--c0ffee.mdfinish: refused, 1 unmetblocking doctrines:- majordomus.blocker-resolution$ echo $?10
Smlouva není seznam uvnitř finish. Je to sada doktrín, jejichž enforced_by jmenuje finish, vybraná verification.finish_requires tohoto repozitáře. Požadavek v politice, který nedefinuje žádná doktrína, se hlásí a odmítá, místo aby se ignoroval. Viz DOCTRINE.md.
Důkazy
Každý případ níže běží v CI na Linuxu i macOS. Web se odmítne sestavit, pokud veřejný příkaz nemá behaviorální případ, negativní případ nebo ukázku.