Stav
jedna aktivní úloha na checkout v current.yaml, s branch, head a working_tree počítanými z gitu, nikdy ručně psanými
jedna aktivní úloha na checkout v current.yaml, s branch, head a working_tree počítanými z gitu, nikdy ne psanými ručně
Kde to žije
Stav, který vlastní
.ai/local/state/current.yaml.ai/local/state/ledger.jsonl
Co to implementuje
Specifikováno v
Příkaz, který na to působí
majordomus start
Zahájí jednu úlohu s rozsahem pod profilem a odmítne to, dokud je aktivní jiná.
- mění stav
majordomus start "<task>" --scope <path>[,<path>...] [--requires <token>[,<token>...]] [--profile <name>] [--owner <who>]
Podívat se, jak odmítá a jak přijímá
start zaznamená, co se chystáte udělat a kterých cest se smí dotknout. Rozsah je tvrzení, k jehož dodržení vás budou držet check a finish.
Pro tento repozitář platí
# A repository with Majordomus installed and projections generated, and one commit of work. "$MJ" init >/dev/null "$MJ" update >/dev/null mkdir -p lib docs echo a > lib/a echo d > docs/d git add . && git commit -qm base
Spustit
$ majordomus start narrow the parser --scope lib
Výstup obsahuje
- ^started t-
- profile=implementation
- scope=lib
ukončení
0
Identitní pole — repozitář, větev, hlava, worktree — se počítají z gitu a nikdy se nepíší ručně. Dodáváte popis, rozsah a profil.
Pro tento repozitář platí
# ... and an active task scoped to lib, with work done inside that scope. . "$FIXTURE_SETUP/installed.sh" "$MJ" start "narrow the parser" --scope lib >/dev/null echo work >> lib/a
Spustit
$ majordomus start something else --scope lib
Výstup obsahuje
- je aktivní
ukončení
15
Jedna aktivní úloha na checkout. Dva otevřené claimy na téže pracovní kopii nelze vynutit oba, takže druhý se odmítne a dostane řečeno, co udělat nejdřív.
Co to vynucuje
- majordomus.ai-layout-integrity blokující vynucuje doctor, watch Vrstva AI repozitáře je skutečná: manifest deklaruje formát, který tento spustitelný soubor čte, a každá sekce, kterou jmenuje, existuje, lokální polovina checkoutu je ignorována gitem a nic pod ní není sledováno a pod cestou .majordomus/ z doby před .ai nezůstala žádná data projektu.
- majordomus.ledger-integrity blokující vynucuje check, doctor, watch Každý řádek hlavní knihy jen pro připisování je dobře utvořená událost; jediný trvalý záznam, který nic jiného nedokáže zrekonstruovat, zůstává čitelný.
- majordomus.decision-records poradní vynucuje check, doctor, watch Každý záznam v decisions.md nese úlohu, head a důvod, takže rozhodnutí může najít worker, který je potřebuje.
- majordomus.handover-integrity blokující vynucuje doctor, watch Resolver běží a hlásí buď záznam pro tento worktree a větev, nebo jeho čistou nepřítomnost; poškozený záznam se nikdy potichu nepřeskočí a záznam popisující historii, kterou tento checkout už nemá, se ohlásí.
- majordomus.state-consistency blokující vynucuje check, finish, watch Záznam úlohy stále popisuje tento checkout — stejná větev a HEAD na zaznamenaném commitu nebo před ním.
Co je zaručeno
- zaručeno Každý řádek ledgeru jen pro připojování je dobře utvořená událost a poškozený řádek je selhání, nikoli přeskočený záznamdokázáno test/cases/22_history.sh
- poradní Záznam rozhodnutí bez úlohy, headu a důvodu se hlásí a neblokujedoloženo test/cases/21_decision_question.sh
- zaručeno Pole identity v každém záznamu stavu se počítají z gitu a nikdy se nepíší ručnědokázáno test/cases/04_start_check.sh
- zaručeno Načtený stav je vůči gitu označen jako exact, advanced, diverged nebo different_contextdokázáno test/cases/04_start_check.sh
- zaručeno Checkpoint je záznam postupu s omezenou velikostí a vypočtenou identitou a tělo nad limitem se odmítne, ne zkrátíprokázáno test/cases/20_checkpoint.sh
- zaručeno Rozhodnutí se zaznamenává s důvodem a úlohou a nahrazuje se pozdějším záznamem, ne úpravoudoloženo test/cases/21_decision_question.sh
- zaručeno Stav lokální pro checkout žije pod .ai/local/, je ignorován gitem a na čerstvém klonu nebo worktree chybídokázáno test/cases/01_init.sh
- zaručeno Slovník událostí knihy je uzavřený, při vstupu i při výstupuprokázáno test/cases/33_event_registry.sh
- zamítnuto Záznam úlohy nemá žádné závislosti; řazení mezi relacemi není zastoupeno
- zaručeno Úloha, která jmenuje úkol nebo záměr, jemuž slouží, dostane briefing o tom, co ten záměr od práce žádá, a předávka sdělí dalšímu workeru, kdy se záměr pohnuldokázáno test/cases/960_a_task_starts_bound_to_what_it_serves.sh
- zaručeno Subsystém relací má čtení sám o sobě — každá otevřená epizoda úložiště, a ne jen ta, kterou sleduje ukazatel, epizody, které se už nemohou samy uzavřít, commit, o kterém odpovídá obsluhující proces, a co deklaruje adaptér každého poskytovateledokázáno test/cases/171_session_observability.sh
- zaručeno Klient bez hooků poskytovatele dostane epizodu provedení z připojení MCP, po pádu obnoví vlastní a nikdy se netvrdí, že byl jeho prompt zachycendokázáno test/cases/200_generic_mcp_episode.sh
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.
- sledoval, jak relace zrušila rozhodnutí z minulého týdne právě z toho důvodu, pro který vzniklo Rozhodnutí, jehož důvod žil v konverzaci, nelze posoudit, jen znovu rozebírat — workerem s méně informacemi, než měl ten první.
- 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á.
- se zeptal, co pracovníci dělali včera v noci, a měl jen přepisy k prohledání Log konverzace zaznamenává, co bylo řečeno, ne co se stalo, takže na provozní otázku musí odpovědět člověk čtoucí prózu.
- strávil hodinu zjišťováním něčeho, co repozitář už věděl, a to dvakrát Worker zjistí něco nákladného o kódové bázi, jednou to použije a s relací to zaniká, protože to nikdo nepřevedl na trvalý záznam.
- sledoval, jak jeden worker záměrně vrátil změnu jiného workera Worker uvidí na své cestě nevysvětlenou změnu, usoudí, že je špatná, a odstraní ji — správně, podle důkazů, které měl.
- 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.
- hledal, proč jsme to zvolili, a našel chatový log Rozhodnutí učiněné v relaci je uloženo tam, kde ho přečte jen ta relace, takže ho nelze ani zrevidovat, ani objevit.
- našel podstatnou změnu, kterou nikdy nepožadoval žádný úkol, ticket ani plán Práce přichází bez vymezeného kontraktu, takže její rozsah, kritéria přijetí i vlastnictví se rozhodují až zpětně.
- nechali rychlou a levnou relaci udělat rozhodnutí, se kterým teď žije celá kódová základna Schopnost se snižuje kvůli nákladům a nic neodlišuje úlohy, kde je to rozumné, od těch, kde je to drahé.
- přišel o selhání, které pracovník už reprodukoval, protože relace skončila Selhání pozorované uvnitř relace je popsáno v této relaci a nikde jinde, takže další začíná od hlášení, ne od důkazu.
- sledoval workera, jak tráví den postupem, který už byl vyloučen Negativní výsledky tvoří většinu experimentálního výstupu a nikdo je nezaznamenává, takže se prostor hledání prochází znovu.
- se zeptal, kdo změnu provedl a podle jaké politiky, a měl jen commit Atribuce končí u commitu, takže to, co změnu schválilo, co ji ověřilo a co ji řídilo, nelze obnovit.