○zaručeno
Kontroly dokončení a kvalitypokročilýagentreviewerzapisuje stav
Někdo položil otázku, která rozhoduje, jak se práce udělá, nikdo neodpověděl a práce pokračovala. Pokud lze úlohu přesto přijmout, otázka nikdy nebyla skutečným blokerem a další člověk objeví předpoklad, až když je už zmergovaný.
question list: nevyřešené položky aktivní úlohy, číslované
finish --outcome completed: odmítnuto, dokud je položka nevyřešená, s pojmenovanou položkou
check: táž kontrola jako selhávající řádek, takže je vidět dřív, než se kdokoli pokusí dokončit
question resolve <n> --answer: přepíše ten jeden řádek jako vyřešený, s odpovědí vedle otázky
setup: finish-blocker-open
given:
- 'an active task with one unresolved question open against it'
steps:
- id: see-it
run: ['question', 'list']
note: 'the open question, numbered, on this branch'
expect:
exit: 0
stdout_contains: ['unresolved', 'tabs']
- id: refused
run: ['finish', '--outcome', 'completed', '--verify-command', 'test -d .ai']
note: 'completion is refused while the question is open; the refusal names it'
expect:
exit: 10
stdout_contains: ['question']
- id: still-flagged
run: ['check']
note: 'check reports the blocker as a failing line, not a warning'
expect:
exit: 10
stdout_contains: ['FAIL']
- id: resolve
run: ['question', 'resolve', '1', '--answer', 'tabs are refused; the subset has no tabs']
note: 'the one line is rewritten as resolved with its answer'
expect:
exit: 0
stdout_contains: ['resolved']
- id: clear
run: ['check']
note: 'nothing blocks now'
expect:
exit: 0
stdout_contains: ['0 failing']
then:
- 'finish refused with exit 10 while the question was open'
- 'the resolved entry keeps the question and the answer together'
- 'check is green once the store holds no unresolved entry'
Otevřená otázka je blokátor, který nástroj vynucuje, ne poznámka, kterou si někdo může přečíst. Záznam o tom, na co se ptalo a co bylo rozhodnuto, zůstává v repozitáři a dokončit nad ním je nemožné, ne jen odrazované.
Scénář
Provedeno proti skutečnému nástroji v repozitáři připraveném pomocí finish-blocker-open, při každém generování tohoto webu. To, co následuje, není popis toho, co by se mělo stát; je to to, co se stalo.
dáno
- ·aktivní úloha s jednou nevyřešenou otevřenou otázkou
kdy
- 1
majordomus question list - 2
majordomus finish --outcome completed --verify-command test -d .ai - 3
majordomus check - 4
majordomus question resolve 1 --answer tabs are refused; the subset has no tabs - 5
majordomus check
pak
- ·finish odmítnuto s exit 10, dokud byla otázka otevřená
- ·vyřešená položka drží otázku a odpověď pohromadě
- ·check je zelený, jakmile úložiště nedrží žádnou nevyřešenou položku
Co nástroj udělal
Důkaz běhu, z něhož byla tato stránka vygenerována: pass, 5 kroků. Výstup je normalizován: cesta repozitáře, časová razítka, id a doby trvání jsou zástupné hodnoty; nic dalšího se neupravuje.
Testováno v test/cases/94_use_cases.sh, který spouští každý scénář a odmítne krok, jehož zaznamenaný výstup není tím, co vyprodukoval.
-
otevřená otázka, očíslovaná, na této větvi
1 [unresolved] t-<id> — does the parser need to accept tabs? (<date>)
- exit 0
- stdout_contains /unresolved/
- stdout_contains /tabs/
-
dokončení je odmítnuto, dokud je otázka otevřená; odmítnutí ji jmenuje
FAIL blockers t-<id> — 1 unresolved question(s) on this branch; first: t-<id> — does the parser need to accept tabs? [reproduce: majordomus question list]
FAIL note t-<id> — no --note file and no handover for this task [reproduce: majordomus handover < note.md]
INFO regression t-<id> — profile implementation adds no requirement beyond the shared contract
OK scope t-<id> — 1 touched file(s), all within scope
OK state t-<id> — exact (head <head>)
INFO continuity t-<id> — applies to partial and blocked
INFO mesh t-<id> — the repository declares no enabled mesh
INFO use-case 30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive [reproduce: majordomus usecase coverage]
OK use-case 0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
OK verification t-<id> — test -d .ai — exit 0, <s>s, tree <tree>
INFO obligation t-<id> — the task declares no obligations
INFO gate t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
INFO gate t-<id> — not in verification.finish_requires
finish: refused, 2 unmet
blocking doctrines:
- majordomus.blocker-resolution
- majordomus.note-integrity
- exit 10
- stdout_contains /question/
-
check hlásí blokující problém jako selhávající řádek, ne jako varování
OK knowledge records — 0 record(s) valid against knowledge/v1; every reference resolves [reproduce: majordomus knowledge check]
· checkpoint t-<id> — <timed against the checkpoint interval>
OK records ledger.jsonl — every line is a well-formed event
FAIL blockers t-<id> — 1 unresolved question(s) on this branch; first: t-<id> — does the parser need to accept tabs? [reproduce: majordomus question list]
OK records decisions.md — every entry is attributable
OK scope t-<id> — 1 touched file(s), all within scope
OK state t-<id> — exact (head <head>)
INFO mesh t-<id> — the repository declares no enabled mesh
INFO use-case 30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive [reproduce: majordomus usecase coverage]
OK use-case 0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
INFO obligation t-<id> — the task declares no obligations
INFO gate t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
check: 12 finding(s), 1 failing
- exit 10
- stdout_contains /FAIL/
-
jeden řádek se přepíše jako vyřešený s odpovědí
resolved for t-<id>: does the parser need to accept tabs?
- exit 0
- stdout_contains /resolved/
-
nic nyní neblokuje
OK knowledge records — 0 record(s) valid against knowledge/v1; every reference resolves [reproduce: majordomus knowledge check]
· checkpoint t-<id> — <timed against the checkpoint interval>
OK records ledger.jsonl — every line is a well-formed event
OK blockers t-<id> — none open
OK records decisions.md — every entry is attributable
OK scope t-<id> — 1 touched file(s), all within scope
OK state t-<id> — exact (head <head>)
INFO mesh t-<id> — the repository declares no enabled mesh
INFO use-case 30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive [reproduce: majordomus usecase coverage]
OK use-case 0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
INFO obligation t-<id> — the task declares no obligations
INFO gate t-<id> — this repository declares no CI model at .ai/repo/ci/gates.yaml; nothing can be planned
check: 12 finding(s), 0 failing
- exit 0
- stdout_contains /0 failing/
Proč to nástroj ví
Řetězec od této stránky ke kódu: případ užití jmenuje příkazy, pravidla a tvrzení; každé pravidlo se dispatchuje z registru a každé tvrzení jmenuje test, který ho dokazuje; scénář výše provedl příkazy. Nic v tomto řetězci není text o záměru.
Pravidla, díky nimž platí
Uplatněné záruky
- ○zaručeno Záznam v úložišti otázek, který nelze zpracovat, blokuje přijetí stejně jako nevyřešená otázka
- ○zaručeno check hlásí, zda jsou stav, rozsah, blokátory a stáří checkpointu právě teď konzistentní
- ○zaručeno finish vyhodnotí kontrakt dokončení řádek po řádku a odmítne, pokud některý řádek není splněn
- ○zaručeno Výsledek je hodnota z uzavřeného slovníku, ne volný text
- ○zaručeno Nevyřešená otázka blokuje přijetí a položka, kterou kontrola neumí zpracovat, je selhání, a ne tiché propuštění
Související případy užití
Vypočteno z toho, co sdílejí: tvrzení, pravidla, příkazy, kategorie, aplikace. Tento seznam nikdo neudržuje.
- Rozhodnout, zda je dokončená práce skutečně dokončenáVyhodnoťte kontrakt řádek po řádku, místo abyste přijali větu, která tvrdí, že je práce hotová.
- Předat práci s otevřenou otázkou a nechat ji blokovatUzavřít úlohu do předávky, dokud je otázka nevyřešená, spustit navazující úlohu a vidět, že tatáž otázka tam přijetí stále odmítá.
- Přichytit agenta, který tvrdí, že je hotov, a neníJedna úloha od začátku do konce: worker vybočí z rozsahu, prohlásí, že je hotov, předá práci a je přijat teprve tehdy, když projde vlastní ověření repozitáře.
- Dělat checkpointy dlouhé práce, aby zastavení stálo minuty, ne celý denZaznamenávat kompaktní postup uvnitř aktivní úlohy v intervalu profilu, aby relace, která skončí bez varování, nechala další relaci místo, kde začít.
- Dokončit úkol, jen když existují jeho důkazySledujte, jak úkol odmítne dokončení, dokud chybí požadovaný důkaz, přečtěte si plán rozvoje odvozený ze stavu milníků a nechte projekci na GitHub projekcí.
Okamžiky, na které to odpovídá