○zaručeno
Relace a předávkapokročilýagentzapisuje stav
Dva checkouty jednoho repozitáře, dva workeři. Záznam úlohy, který putuje s větví do worktree, jenž si ho nikdy nenárokoval, by držel špatného člověka u špatného rozsahu a předávka z jiné větve nabídnutá jako ta, z níž se má pokračovat, by poslala dalšího workera špatnou cestou.
handover --resolve: nejrelevantnější předchozí předávka pro tento worktree a větev, nebo jasná absence
check: odmítne vyhodnotit úlohu, kterou tento checkout nevlastní
context: vlastní identita této worktree, bez úlohy vypůjčené odjinud
setup: two-worktrees
given:
- 'installed and wired, with a second worktree on another branch holding an active task scoped to lib'
steps:
- id: nothing-here
run: ['handover', '--resolve']
note: 'no handover was written for this worktree and branch; absence is reported, never a record from elsewhere'
expect:
exit: 0
stdout_contains: ['No relevant handover']
- id: not-my-task
run: ['check']
note: 'the other worktree’s task is not this checkout’s; check reports no active task here instead of holding this checkout to a scope it never claimed'
expect:
exit: 12
stdout_contains: ['no active task']
- id: read-only-view
run: ['context']
note: 'what this worktree knows: its own git identity and no task'
expect:
exit: 0
stdout_contains: ['^## GIT', 'none active']
then:
- 'handover --resolve never offered a record from another branch'
- 'check did not enforce the other worktree’s scope here'
- 'local state under .ai/local/ is this checkout’s own and untracked'
Záznamy se řeší podle worktree a větve. Co dělá jiný checkout, je viditelné přes překryv, ne zde vynucené, a nic pod .ai/local/ se nesdílí přes git.
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
- ·nainstalováno a zapojeno, s druhým worktree na jiné větvi držícím aktivní úlohu s rozsahem lib
kdy
- 1
majordomus handover --resolve - 2
majordomus check - 3
majordomus context
pak
- ·handover --resolve nikdy nenabídl záznam z jiné větve
- ·check zde nevynutil rozsah druhého worktree
- ·lokální stav pod .ai/local/ je vlastní věcí tohoto checkoutu a nesleduje se
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.
-
pro tento worktree a větev nebyla napsána žádná předávka; nepřítomnost se hlásí, nikdy záznam odjinud
No relevant handover.
- exit 0
- stdout_contains /No relevant handover/
-
úloha jiného worktree není úlohou tohoto checkoutu; check hlásí, že zde není aktivní úloha, místo aby tento checkout držel k rozsahu, který nikdy nenárokoval
majordomus: no active task (.ai/local/state/current.yaml); run: majordomus start
- ukončení 12
- stdout_contains /no active task/
-
co tento worktree ví: vlastní identitu v gitu a žádnou úlohu
# 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 clean
## TASK
none active — run: majordomus start "<task>" --scope <paths>
## 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.
## EXCLUDED
- context documents — no active task names a scope; run: majordomus context resolve <path>
- handover — no record for this worktree and branch — absence, not a stale match
## BUDGET
21 of 300 lines
- exit 0
- stdout_contains /^## GIT/
- stdout_contains /none active/
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ředat nedokončenou práci další relaciZastavte se uprostřed úlohy a zanechte dalšímu pracovníkovi něco, na co lze navázat a co není přepis.
- 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.
- Provozovat několik workerů v jednom repozitáři, aniž by se sraziliDejte každému workeru deklarovaný rozsah a zjistěte okamžitě, když dva z nich nárokují stejné cesty.
- 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.
Okamžiky, na které to odpovídá
-
→ znovu vysvětloval stejný kontext zbrusu nové relaci Znalosti o repozitáři, které kdy existovaly jen v konverzaci, je nutné ručně znovu předávat každému dalšímu workerovi.
-
→ našli dva agenty, kteří opravují stejnou chybu ve dvou větvích Dva pracovníci stráví každý den na jedné vadě, protože vlastnictví bylo implicitní a ani jeden neviděl druhého.
-
→ našel úlohu "in progress", které se tři týdny nikdo nedotkl Stav, který byl napsán, a ne spočítán, platí v okamžiku zápisu a odtud tiše zastarává.
-
→ našel pět worktrees a nedokázal říct, na kterých ještě záleží Izolace se vytváří levně, ale špatně se o ní uvažuje: nic nezaznamenává, k čemu worktree sloužil ani zda jeho práce přistála.
-
→ měl dvě relace zapisující do jednoho checkoutu, aniž o sobě jedna věděla Dva workeři v jednom pracovním stromu se vidí jen jako nevysvětlené změny souborů a každý z nich druhého považuje za šum.