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.

majordomus finish

Vyhodnotí smlouvu o dokončení a odmítne výsledek, pokud je jakýkoli její řádek nesplněn.

Vyhodnotí smlouvu o dokončení a odmítne výsledek, pokud je jakýkoli její řádek nesplněn.

  • mění stav
  • úloha
  • aktivní úloha volitelná
  • --json

--check vyhodnocuje bez zápisu a končí kódem 0, když není aktivní žádná úloha, takže pre-push hook nikdy neblokuje repozitář, který nemá co vynucovat.

Syntaxe

majordomus finish --outcome <completed|partial|blocked|no_match|failed> [--verify-command "<cmd>"] [--note <file>]

Životní cyklus

  1. Nastavit
  2. Začít
  3. Pracovat
  4. Ověřit
  5. Uzavřít
  6. Prozkoumat

Další příkazy v této fázi:handover, adr.

Čte

  • .ai/repo/policy.yaml
  • .ai/repo/profiles/
  • .ai/local/state/current.yaml
  • .ai/local/state/open-questions.md
  • .ai/local/state/handovers/
  • git status
  • git diff

Zapisuje

  • .ai/local/state/current.yaml
  • .ai/local/state/completed/
  • .ai/local/state/ledger.jsonl

Návratové kódy

Jen kódy, které tento příkaz může vrátit. Úplný kontrakt je na indexu příkazů.

  • 0 ok
  • 2 použití
  • 10 kontrakt nesplněn
  • 12 chybějící artefakt
  • 13 interní chyba
  • 15 odmí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

Spustit

$ majordomus finish --outcome completed --verify-command false

Výstup obsahuje

  • SELHÁNÍ ověření
  • kód 1

ukončení 10

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 paths
verification ran       --verify-command exited 0, recorded
state updated          current.yaml is at HEAD or advanced, not diverged
no open blockers       open-questions.md has no unresolved entry for this task
note 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/auth
OK   verification  make test — exit 0, 41s
OK   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.md
finish: refused, 1 unmet
blocking 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.

Záruky, které tento příkaz nese

Prohledává názvy a popisy všech stránek, které tento web publikuje.