○zaručeno
Paralelní workerypokročilýagentoperátorzapisuje stav
Dva agenti pracují na stejném repozitáři současně. Každý je sám o sobě rozumný; společně upravují tentýž soubor z různých předpokladů a konflikt se objeví jako merge, dlouho po rozhodnutí, které jej způsobilo.
start: přijímá cesty, kterých se tato úloha smí dotknout, a odmítne druhou aktivní úlohu v jednom checkoutu
check: --overlap hlásí další worktrees, jejichž nároky se protínají s vašimi
finish: odmítne přijmout práci mimo nárokované cesty
setup: two-worktrees
given:
- 'a second worktree of the same repository with an active task scoped to lib'
steps:
- id: claim-a-scope
run: ['start', 'narrow the parser', '--scope', 'lib']
note: 'the task starts, and the overlap with the other worktree is reported'
expect:
exit: 0
stdout_contains: ['^started t-', 'overlap']
- id: see-the-overlap
run: ['check', '--overlap']
note: 'scope containment against every other worktree, never blocking'
expect:
exit: 0
stdout_contains: ['overlap']
- id: nothing-to-refuse
run: ['finish', '--check']
note: 'no file outside the claimed scope has been touched'
expect:
exit: 0
stdout_contains: ['0 failing']
then:
- 'two workers on one repository see each other by scope, and the second is told before it starts'
Překryv se hlásí při zahájení úlohy, ne až při merge větví, a záznam úlohy patřící jinému checkoutu se hlásí jako cizí, ne vynucuje proti tomu vašemu.
Scénář
Provedeno proti skutečnému nástroji v repozitáři připraveném pomocí two-worktrees, 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
- ·druhý worktree téhož repozitáře s aktivní úlohou s rozsahem lib
kdy
- 1
majordomus start narrow the parser --scope lib - 2
majordomus check --overlap - 3
majordomus finish --check
pak
- ·dva workeři na jednom repozitáři se vidí podle rozsahu a druhý je upozorněn dřív, než začne
Co nástroj udělal
Důkaz běhu, z něhož byla tato stránka vygenerována: pass, 3 kroky. Výstup je normalizován: cesta k repozitáři, č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.
-
úloha začne a překryv s druhým worktree je ohlášen
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
- exit 0
- stdout_contains /^started t-/
- stdout_contains /overlap/
-
omezení rozsahu vůči každému jinému worktree, nikdy neblokující
INFO overlap repo-other — claims lib — contains your lib [reproduce: majordomus check --overlap]
INFO overlap t-<id> — no other worktree claims an overlapping path
- exit 0
- stdout_contains /overlap/
-
nebyl dotčen žádný soubor mimo nárokovaný rozsah
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> — 0 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
finish --check: 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
Související případy užití
Vypočteno z toho, co sdílejí: tvrzení, pravidla, příkazy, kategorie, aplikace. Tento seznam nikdo neudržuje.
- 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.
- Dodávejte úkoly ve vlnách, které graf spočítá, a berte dalšíOvěřte plán, přečtěte si vlny provádění, které z grafu závislostí plynou, podívejte se, které úkoly jsou připravené a které na co čekají, a vezměte ten jeden úkol, který má worker dělat teď.
- Navažte ve správném worktree, nikdy proti cizí úlozeNajděte předávku, která patří tomuto worktree a větvi, a podívejte se, jak se záznam úlohy z jiného checkoutu ohlásí jako cizí, místo aby se tady vynucoval.
- 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.
- 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á.
Okamžiky, na které to odpovídá