Dokončení
typovaný výsledek a smlouva vyhodnocená řádek po řádku; pokud selže kterýkoli řádek, nic se nezapíše
typovaný výsledek a smlouva vyhodnocená řádek po řádku; pokud selže kterýkoli řádek, nic se nezapíše
Kde to žije
Stav, který vlastní
.ai/local/state/ledger.jsonl
Co to implementuje
Specifikováno v
Příkaz, který na to působí
majordomus finish
Vyhodnotí smlouvu o dokončení a odmítne výsledek, pokud je jakýkoli její řádek nesplněn.
- mění stav
- aktivní úloha volitelná
- --json
majordomus finish --outcome <completed|partial|blocked|no_match|failed> [--verify-command "<cmd>"] [--note <file>]
Podívat se, jak odmítá a jak přijímá
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á.
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ě.
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ě.
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.
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.
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ář.
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.
Co to vynucuje
- majordomus.blocker-resolution blokující vynucuje check, finish Žádnou úlohu nelze dokončit, dokud je na této větvi nevyřešena jakákoli otázka; stále ji lze ukončit jako blocked, partial, no_match nebo failed.
- majordomus.verification-integrity blokující vynucuje finish Dokončení vyžaduje ověřovací příkaz, který skutečně proběhl a skončil s 0 nad stromem, který se pod ním nezměnil; jeho návratový kód, trvání a strom se zaznamenají.
- majordomus.obligation-closure blokující vynucuje check, finish Úloha, která deklaruje závazky, dosáhne výsledku completed jen tehdy, když je každý z nich ustaven nástrojem nebo má důkaz a tento důkaz stále popisuje strom nebo commit, nad nímž byl pořízen.
Co je zaručeno
- zaručeno finish vyhodnocuje smlouvu o dokončení řádek po řádku a odmítne, když kterýkoli řádek není splněndokázáno test/cases/06_finish.sh
- zaručeno každý odmítnutý finish připojí událost task.refused s uvedením požadovaného výsledku, počtu nesplněných položek a doktrín, které odmítly, a finish --check nezapíše nicdokázáno test/cases/06_finish.sh
- zaručeno Výsledek je hodnota z uzavřeného slovníku, ne volný textdokázáno test/cases/06_finish.sh
- zaručeno Nevyřešená otázka blokuje přijetí a položka, kterou kontrola nedokáže zpracovat, je selhání, ne tiché projitídoloženo test/cases/21_decision_question.sh
- guaranteed Blokující otázka blokuje i poté, co je práce předána nové úlozedokázáno test/cases/50_blocker_across_handover.sh
- zaručeno Úloha, která deklaruje závazky, dosáhne výsledku completed, až když má každý z nich zaznamenané důkazy; důkazy sebrané nad soubory, které se mezitím změnily, nebo na commitu, který branch již opustil, už nic nesplníprokázáno test/cases/103_obligations.sh
- zaručeno Závazek, jehož skutečnost nástroj dokáže ověřit, se zjišťuje živě, ne zaznamenává — čistý strom, vzdálená sledovací reference, která dosáhne na head, trunk, který na něj dosáhne, publikovaný web, který ho servíruje — a ručně zapsaný řádek ho ani nesplní, ani nezachráníprokázáno test/cases/103_obligations.sh
Pravidla, která tento příkaz spouští
Doktríny, jejichž enforced_by jmenuje finish. Vynucovat pravidlo a být jím řízen jsou různé vztahy, proto se uvádějí zvlášť.
- majordomus.blocker-resolution
- majordomus.note-integrity
- majordomus.profile-requirements
- majordomus.scope-integrity
- majordomus.state-consistency
- majordomus.task-continuity
- majordomus.task-on-the-mesh
- majordomus.use-case-coverage
- majordomus.verification-integrity
- majordomus.obligation-closure
- majordomus.completion-gates
- majordomus.publication-currency
Okamžiky, na které to odpovídá
- přijali „hotovo“, protože to řekl model, a druhý den ráno za to zaplatili Plynulé tvrzení o dokončení se přijme jako důkaz, protože nic předem nezapsalo, co by muselo platit.
- sledoval, jak relace zrušila rozhodnutí z minulého týdne právě z toho důvodu, pro který vzniklo Rozhodnutí, jehož důvod žil v konverzaci, nelze posoudit, jen znovu rozebírat — workerem s méně informacemi, než měl ten první.
- našel hotovou práci na větvi, kterou nikdo nikdy nemergoval Workeři vyprodukují mnohem víc, než integrace pojme, a nic nerozlišuje práci hotovou od práce hotové a přistálé.
- uzavřel úkol, jehož kritéria přijetí nikdo skutečně neověřil Dokončení se eviduje jako změna stavu v trackeru, a ne jako důkaz v repozitáři, takže se obojí okamžitě rozejde.
- se podíval na účet a nedokázal říct, co z něj cokoli vyprodukovalo Spotřeba se měří po účtech a výsledky se zaznamenávají po lidech, takže je nelze nikdy spojit.