výzva
Zkuste prosadit nedokončenou práci.
Programovací agent si zabere adresář, upraví soubor mimo něj, prohlásí práci za hotovou, předá ji a vrátí se. Majordomus ho odmítne, pokaždé uvede důvod a práci přijme, až když projde test samotného repozitáře. Každý řádek níže je zaznamenaný běh skutečného nástroje, spuštěný při generování této stránky.
Kódovací agenti jsou dobří v práci a špatní v poznání, kdy je hotová. Sahají na soubory, o které nikdo nežádal, hlásí úspěch nad selhávajícím testem a po skončení relace zapomenou úlohu. Lepší prompt to spraví jen stěží, protože prompt je přesně ta část, která se ignoruje. Pomůže kontrola, kterou pracovník nedokáže obejít řečmi.
- zaznamenané kroky
- 10
- odmítnutí
- 3
- z nich příkazem finish
- 2
- vyzkoušené záruky
- 6
Běh krok za krokem
Procházejte po krocích, nebo čtěte přímo shora dolů. Krok označený worker je posuzovaná změna; každý další krok je odpověď Majordomus.
Úloha si nárokuje lib. Jiný pracovník už si lib nárokuje v druhém worktree a start to řekne dřív, než se dotkne jakéhokoli souboru.
majordomus start 'refuse tabs in the parser' --scope lib
started t-<id> profile=implementation scope=lib INFO overlap repo-other — claims lib — contains your lib [reproduce: majordomus check --overlap] next: majordomus context; checkpoint every 15m; majordomus check before claiming anything
Worker provede změnu, o kterou byl požádán, a upraví také poznámku v docs, kterou úloha nikdy nenárokovala.
echo "tabs are refused" >> lib/a && echo "parser notes" >> docs/d
check pojmenuje soubor mimo zabraný rozsah a skončí nenulovým kódem. Je to selhání, ne varování.
majordomus check
- znalosti prošlo
- záznamy prošlo
- blokující překážky prošlo
- záznamy prošlo
- rozsah selhalo
- stav prošlo
→ check: 12 nálezů, 1 selhává
Celý zaznamenaný výstup, 13 řádků
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
FAIL scope docs/d — outside claimed scope (lib) [reproduce: git status --porcelain; git log --first-parent --no-merges --name-only --format= <sha>..HEAD]
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
Worker ohlásí úlohu jako dokončenou. finish smlouvu vyhodnotí, místo aby jí věřil, a odmítne.
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'
- blokující překážky prošlo
- poznámka selhalo
- rozsah selhalo
- stav prošlo
- ověření selhalo
→ finish: odmítnuto, 3 nesplněné
Celý zaznamenaný výstup, 18 řádků
OK blockers t-<id> — none open 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 FAIL scope docs/d — outside claimed scope (lib) [reproduce: git status --porcelain; git log --first-parent --no-merges --name-only --format= <sha>..HEAD] 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) FAIL verification t-<id> — sh test/parse.sh — exit 1, <s>s [reproduce: sh test/parse.sh] 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, 3 unmet blocking doctrines: - majordomus.note-integrity - majordomus.scope-integrity - majordomus.verification-integrity
Zbloudilá úprava je vzata zpět.
git checkout -- docs/d
Relace končí. To, co potřebuje další, je zapsáno do repozitáře, ne ponecháno v přepisu.
majordomus handover < challenge-handover.md
.ai/local/state/handovers/<time>--main--<head>--<hash>.md
Nová relace se ptá repozitáře, co potřebuje vědět, a dostane zpět úlohu, její rozsah a předávku.
majordomus context
# Majordomus context — <time> # a projection of durable state, not a source of truth: validate every line against git ## GIT repository <repo> branch main head <sha> working_tree dirty task_record exact (recorded head <head>) ## TASK id t-<id>
Zbývajících 45 řádků výstupu
task refuse tabs in the parser profile implementation owner <owner> outcome active scope lib started <time> (<age> ago) checkpoint <time> (<age> ago, interval 15m) ## PROFILE implementation capability standard effort medium verbosity concise presentation engineering verification verify command output outcome, changes, verification, blockers, next_action ## CONTEXT DOCUMENTS (for the scope, root first; majordomus context explain <path>) lib ai.layer ## KNOWLEDGE (candidates awaiting review on this branch; majordomus knowledge candidates) No knowledge candidates await review on this branch. That is an answer, not a gap: `majordomus knowledge candidates` lists every branch. ## DECISIONS (5 most recent for this task) (none) ## LATEST COMPATIBLE HANDOVER (.ai/local/state/handovers/<time>--main--<head>--<hash>.md) match same_worktree_same_branch git state exact created <time> (<age> ago) task t-<id> # Objective refuse tabs in the parser # Current State tabs are refused; the stray note under docs is reverted; the parser's test still fails # Next Action make the message name the column, then run the parser's test again ## FILES TOUCHED IN SCOPE (1) lib/a ## EXCLUDED - history — profile implementation sets context.recent_history_depth: 0 ## BUDGET 57 of 300 lines
Rozsah je teď čistý, ale vlastní test repozitáře stále selhává. finish jej spustí a znovu odmítne.
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'
- blokující překážky prošlo
- poznámka prošlo
- rozsah prošlo
- stav prošlo
- ověření selhalo
→ finish: odmítnuto, 1 nesplněno
Celý zaznamenaný výstup, 16 řádků
OK blockers t-<id> — none open
OK note t-<id> — <time>--main--<head>--<hash>.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)
FAIL verification t-<id> — sh test/parse.sh — exit 1, <s>s [reproduce: sh test/parse.sh]
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, 1 unmet
blocking doctrines:
- majordomus.verification-integrity
Pracovník udělá to, co předávka označila jako zbývající.
echo "the message names the column" >> lib/a
Každý řádek smlouvy projde, takže se výsledek zaznamená spolu s ověřením, které jej dokázalo.
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'
- blokující překážky prošlo
- poznámka prošlo
- rozsah prošlo
- stav prošlo
- ověření prošlo
→ finish: t-<id> completed
Celý zaznamenaný výstup, 14 řádků
OK blockers t-<id> — none open OK note t-<id> — <time>--main--<head>--<hash>.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> — sh test/parse.sh — 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: t-<id> completed
Co zkontroloval a o čem rozhodl
Každý krok, v němž Majordomus posoudil práci, v pořadí, v jakém k němu běh dospěl: každý řádek kontraktu, který zkontroloval, splněný či nesplněný, a verdikt, který krok uzavřel. Čte se z vlastního výstupu běhu, který je o jedno kliknutí dál v přehrávání výše.
-
krok 3
majordomus checkcheck pojmenuje soubor mimo zabraný rozsah a skončí nenulovým kódem. Je to selhání, ne varování.
- znalosti prošlo
- záznamy prošlo
- blokující překážky prošlo
- záznamy prošlo
- rozsah selhalo
- stav prošlo
→ check: 12 nálezů, 1 selhává odmítnuto
-
krok 4
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'Worker ohlásí úlohu jako dokončenou. finish smlouvu vyhodnotí, místo aby jí věřil, a odmítne.
- blokující překážky prošlo
- poznámka selhalo
- rozsah selhalo
- stav prošlo
- ověření selhalo
→ finish: odmítnuto, 3 nesplněné odmítnuto
-
krok 8
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'Rozsah je teď čistý, ale vlastní test repozitáře stále selhává. finish jej spustí a znovu odmítne.
- blokující překážky prošlo
- poznámka prošlo
- rozsah prošlo
- stav prošlo
- ověření selhalo
→ finish: odmítnuto, 1 nesplněno odmítnuto
-
krok 10
majordomus finish --outcome completed --verify-command 'sh test/parse.sh'Každý řádek smlouvy projde, takže se výsledek zaznamená spolu s ověřením, které jej dokázalo.
- blokující překážky prošlo
- poznámka prošlo
- rozsah prošlo
- stav prošlo
- ověření prošlo
→ finish: t-<id> completed přijato
To, že agent říká, že je hotov, není jedním ze vstupů. Práce je přijata, když projde každý řádek kontraktu, a ne dříve.
Kde rozhodnutí žije
Stejná práce, s řídicí vrstvou i bez ní. Každý řádek odkazuje na záruku, která ji drží, a na test, který má záruku dokázat, i s tím, co říká jeho zaznamenaný běh.
| Bez řídicí roviny | S Majordomus | Drží | Deklarováno | Zaznamenané důkazy |
|---|---|---|---|---|
| Agent říká, že práce je hotová. | finish vyhodnotí kontrakt a nic nezapíše, dokud některý řádek selhává. |
finish-contract implementováno v lib/finish.sh test test/cases/06_finish.sh | deklarovaný stav: zaručeno | zaznamenané důkazy: nespuštěno |
| Které soubory smí úloha měnit, plyne z promptu. | Úloha si zabírá své cesty a dotčený soubor mimo ně je selhání. |
scope-enforcement implementováno v lib/check.sh test test/cases/04_start_check.sh | deklarovaný stav: zaručeno | zaznamenané důkazy: nespuštěno |
| Dva agenti upraví stejné cesty a zjistí to až při merge. | start ohlásí, že tyto cesty si už nárokuje jiný pracovník. |
overlap-report implementováno v lib/check.sh test test/cases/04_start_check.sh | deklarovaný stav: zaručeno | zaznamenané důkazy: nespuštěno |
| Další relace začíná z přepisu, nebo z ničeho. | Předávka je strukturovaný záznam v repozitáři a context ji vrací. |
handover-record implementováno v lib/handover.sh test test/cases/05_handover.sh | deklarovaný stav: zaručeno | zaznamenané důkazy: nespuštěno |
| Výsledek je to, co řekla poslední zpráva. | Výsledek je jedním z uzavřené množiny, zaznamenaným s ověřením, které ho dokázalo. |
typed-outcome implementováno v lib/finish.sh test test/cases/06_finish.sh | deklarovaný stav: zaručeno | zaznamenané důkazy: nespuštěno |
Vyzkoušejte si to sami
Scénář je soubor v repozitáři. Nainstalujte nástroj, naklonujte repozitář a spusťte případ užití: vytvoří jednorázový repozitář, přehraje každý krok proti vašemu sestavení a selže, pokud některý zaznamenaný návratový kód nebo vzor už neplatí.
-
nainstalovat nástroj curl -fsSL https://majordomus.dev/install.sh | sh -
získat scénář git clone https://github.com/korczis/prismatic-majordomus.git && cd prismatic-majordomus -
přehrát to majordomus usecase run catch-an-agent-that-says-it-is-done
Prohlédnout, jak to funguje
Nic zde není nainscenované. Jsou to soubory, které scénář definují, připravují a spouštějí, a záruky, které prověřuje.
- scénář jako soubor.ai/repo/use-cases/catch-an-agent-that-says-it-is-done.md
- repozitář, ve kterém běží, připravenýtest/fixtures/commands/setup/challenge.sh
- runner, který ji provádí a zaznamenáválib/usecase.sh
- tentýž běh, se všemi asertyPřistihněte agenta, který tvrdí, že je hotov, a není →
- každé tvrzení a test, který ho rozhodujeGraf důkazů →
Záruky, které tento běh prověřuje
-
scoped-task
Úloha se zahajuje s deklarovaným rozsahem souborů a profilem a na jeden checkout může být aktivní jen jedna úloha
-
overlap-report
Překryv mezi paralelními pracovníky se počítá na nárokovaných cestách v obou směrech obsažení
-
scope-enforcement
Dotčený soubor mimo nárokovaný rozsah je selhání, ne varování
-
finish-contract
finish vyhodnocuje kontrakt dokončení řádek po řádku a odmítne, pokud je kterýkoli řádek nesplněn
-
handover-record
handover zapisuje záznam jen pro připojování s vypočtenou hlavičkou a povinnými sekcemi
-
typed-outcome
Výsledek je hodnota z uzavřeného slovníku, ne volný text