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.

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.

krok 1 z 10 · Majordomuspřijato

Ú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

exit 0
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

Co scénář v tomto kroku tvrdil →

krok 2 z 10 · worker posuzovaná změna

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

exit 0

Co scénář v tomto kroku tvrdil →

krok 3 z 10 · Majordomusodmítnuto

check pojmenuje soubor mimo zabraný rozsah a skončí nenulovým kódem. Je to selhání, ne varování.

majordomus check

exit 10
  • 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

Co scénář v tomto kroku tvrdil →

krok 4 z 10 · Majordomusodmítnuto

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'

exit 10
  • 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

Co scénář v tomto kroku tvrdil →

krok 5 z 10 · pracovník posuzovaná změna

Zbloudilá úprava je vzata zpět.

git checkout -- docs/d

exit 0

Co scénář v tomto kroku tvrdil →

krok 6 z 10 · Majordomuspřijato

Relace končí. To, co potřebuje další, je zapsáno do repozitáře, ne ponecháno v přepisu.

majordomus handover < challenge-handover.md

exit 0
.ai/local/state/handovers/<time>--main--<head>--<hash>.md

Co scénář v tomto kroku tvrdil →

krok 7 z 10 · Majordomuspřijato

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

exit 0
# 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

Co scénář v tomto kroku tvrdil →

krok 8 z 10 · Majordomusodmítnuto

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'

exit 10
  • 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

Co scénář v tomto kroku tvrdil →

krok 9 z 10 · worker posuzovaná změna

Pracovník udělá to, co předávka označila jako zbývající.

echo "the message names the column" >> lib/a

exit 0

Co scénář v tomto kroku tvrdil →

krok 10 z 10 · Majordomuspřijato

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'

exit 0
  • 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 scénář v tomto kroku tvrdil →

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.

  1. krok 3 majordomus check

    check 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

  2. 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

  3. 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

  4. 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í rovinyS MajordomusDržíDeklarovánoZaznamenané 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í.

  1. nainstalovat nástroj
    curl -fsSL https://majordomus.dev/install.sh | sh
  2. získat scénář
    git clone https://github.com/korczis/prismatic-majordomus.git && cd prismatic-majordomus
  3. přehrát to
    majordomus usecase run catch-an-agent-that-says-it-is-done

Pak ho nasaďte na vlastní repozitář →

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.

Záruky, které tento běh prověřuje

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