Výstup fáze 1 milníku two-folder-integration (úkol I1101, rozhodnutí ADR 0169). Vypisuje každou cestu, kterou Majordomus zapisuje, generuje nebo mění, když ho projekt přejímá, mimo .ai/ a .majordomus/. U každé cesty uvádí kód, který ji zapisuje, zda zápis cokoli zaznamenává, třídu, do které patří, a co s ní dělá kontrakt dvou složek.
Inventář byl sestaven 2026-10-16 proti d1162668036 dvěma způsoby a řádek se zde objeví, jen když ho našel jeden z nich:
- Čtení zapisovatelů. Každý zápis v
bin/majordomus,lib/*.sh,share/mods/claude-code/,site/static/install.shaapps/majordomus-cli/src/**byl přečten: přesměrování,mv/cp/mkdir/ln,git config,update-ref,push,std::fs::write,create_dir_all,renameasymlink. Dočasné adresáře, které se odstraní před návratem příkazu, jsou vynechány, stejně jako zápisy, které probíhají jen uvnitř zdrojového stromu Majordomu (scripts/derive,scripts/ci/*,.just/*). - Měření adoptujícího. Nový repozitář
git inits README, jedním zdrojovým souborem a jedním commitem byl adoptován sHOMEa adresáře XDG ukazovaly na prázdný adresář. Spustilinit,update,capture install,start,check,finish,doctor,context,handover,serve ensure/stop,worktree create, znovuupdate,generate --check,generate,completion installacontinuity publish. Po každém kroku zaznamenal každou změněnou cestu mimo dva jmenné prostory, každý soubor v.git/kromě objektů,git config --local, každý soubor podHOMEa každý sourozenecký adresář. Stejný běh byl zopakován sinit --personal.
Výchozí část měření je test, ne paměť: případ test/cases/3113_the_adoption_footprint_is_inventoried.sh adoptuje nový repozitář pomocí init, update a capture install. Poté vyžaduje, aby se množina cest mimo dva jmenné prostory rovnala seznamu v výchozí adopci, vyžaduje, aby tento dokument pojmenoval každou z nich, a vyžaduje, aby osobní adopce nechala git status prázdné, zatímco její exclude blok pojmenovává každou cestu, kterou zapsala. Zapisovatel, který začne za sebou nechávat novou cestu, případ neprojde, dokud ji tento dokument nezaznamená.
Toto nahrazuje první čtení z 2026-09-06 (948dbd93, stále v historii jako 95d9a773c7f). Co se od toho čtení změnilo uvádí, v čem se mýlilo nebo co se od té doby pohnulo.
Třídy
Každý řádek nese jednu třídu. Třída říká, proč cesta existuje, a smlouva rozhoduje podle tohoto důvodu:
| Třída | Význam |
|---|---|
canonical | Jakmile je zapsán, je to soubor té osoby. Majordomus ho osadí a pak ho nevlastní. Přepsání by přepsalo něčí práci. |
derived | Vypočteno z vlastního obsahu .ai/ tohoto repozitáře. Je commitnuto, regenerovatelné a opatřeno razítkem nebo bannerem, a nikdy se nečte zpět jako vstup. |
generated | Položeno z distribuce nástroje (share/). Je bajt po bajtu shodné v každém repozitáři při jedné verzi a následuje nástroj, ne repozitář. |
cache | Přepočitatelný stav bez vlastního významu. Jeho smazání stojí čas a nic víc. |
runtime | Stav jednoho klonu, jednoho stroje nebo jednoho procesu. Nikdy necestuje přes git jako obsah, i když může žít v adresáři nebo refech samotného gitu. |
accidental | Zapsané v adopterovi, ačkoli tam neslouží žádnému účelu: projekce vlastního zdrojového stromu Majordomus, nebo výstup, který přistál v kořeni repozitáře z nedostatku jmenného prostoru. |
Sloupec osudu používá tři slova. Bridge znamená, že cesta zůstává, kde je, protože ji tam čte spotřebitel mimo Majordomus, a kniha vlastnictví to zaznamenává (I1109). Move znamená, že jde do .ai/ nebo .majordomus/. Stop znamená, že se u adoptujícího přestane zapisovat.
1. Výchozí adopce
majordomus init, majordomus update, majordomus capture install: tři příkazy, které jmenuje ADOPTION.md. Případ 3113 vyžaduje, aby tento seznam byl přesný.
| Cesta | Zapsal | Režim | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|
.gitignore — řádky .ai/local/ a .ai/repo/**/.tmp.* | init: lib/init.sh:349-356 (mj_init_gitignore, připojit jednou na řádek); také migrate (lib/migrate.sh:207) | připojí se k souboru osoby a vytvoří jej, pokud chybí | pouze vytištěný seznam created (lib/init.sh:354) | canonical (soubor hostitelů) | přesun: oba řádky vyjadřují hranici .ai/ a vejdou se do .ai/.gitignore (local/, repo/**/.tmp.*), který nepotřebuje žádný řádek roota |
AGENTS.md | update: lib/update.sh:134-135, šablona share/providers/agents.tmpl, projekce deklarovaná v share/skeleton/policy.yaml:202-209 | celý soubor, razítko na řádku 1; odmítne ruční úpravu bez --force (lib/update.sh:98-111) | razítko (hash politiky + hash obsahu); událost účetní knihy projections.updated bez názvů cílů (lib/update.sh:146) | derived | most: čte jej každý provider agenta v kořeni; v cílovém stavu se stane jediným spravovaným blokem (I1112) |
CLAUDE.md | update, stejný kód, share/providers/claude-code.tmpl | jako AGENTS.md | jako AGENTS.md | derived | most, zatímco Claude Code potřebuje vlastní kořenový soubor; jeden adaptér na poskytovatele (I1114) |
GEMINI.md | update, stejný kód, share/providers/gemini.tmpl | jako AGENTS.md | jako AGENTS.md | derived | bridge, jako CLAUDE.md |
.claude/settings.json | capture install: lib/capture.sh:2198-2200, tělo na :2393-2404 | create-only: existující soubor se nikdy nepřepíše; chybějící hooky se vypíší a příkaz končí kódem 15 (:2204-2220) | nic; vlastnictví se odvozuje grepem cest shimů (:2209) | canonical (nastavení osoby po prvním zápisu) | most: Claude Code čte hooky jen zde |
.claude/hooks/majordomus-capture, .claude/hooks/majordomus-session-start, .claude/hooks/majordomus-session-end, .claude/hooks/majordomus-session-compact | capture install: lib/capture.sh:2255-2279, tabulka na :249, :286 | vytvořit; přepsat jen tehdy, když soubor nese značku Written by `majordomus capture install` (:2263) | řádek značky v shimu (:2364) | generated | přesunout: settings.json pojmenovává cestu příkazu, takže shimy mohou žít pod .majordomus/hooks/ a soubor nastavení zůstává jediným mostem |
.claude/skills/majordomus-brief/, .claude/skills/majordomus-handover/ | capture install: lib/capture.sh:2326-2356, zkopírováno z share/mods/claude-code/* | zapisuje se, dokud platí session.brief_on_interval / session.handover_on_fill (obojí platí v kostře, share/skeleton/policy.yaml:99-101); odstraňuje se soubor po souboru, když je klíč false (:2311-2341) | značka na řádku 1 souboru hooks/register.ts | generated | most: Claude Code načítá mod jen z .claude/skills/ |
Měřený běh také vytvořil .claude/skills/majordomus-*/.claude-plugin/types/, který Claude Code založí při načtení modu a který vlastní .gitignore každého modu vylučuje.
Osobní adopce (init --personal) zapíše stejné cesty kromě .gitignore a přidá ještě jednu:
| Cesta | Zapsal | Režim | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|
.git/info/exclude — blok mezi # >>> majordomus personal >>> a # <<< majordomus personal <<< | lib/common.sh:333-351 (mj_personal_cover), volaný přes mj_personal_guard (:356-361) z init, update (lib/update.sh:126) a capture install (lib/capture.sh:2199, 2268, 2275, 2348); odstraněn příkazem init --shared (lib/common.sh:381-407) | blok se přepisuje celý (dočasný soubor a mv); každá pokrytá cesta se přidává se svým sourozencem <path>.mj-tmp | blok je záznam a mj_personal_verify (lib/common.sh:410-439) ho kontroluje | runtime (konfigurace klonu) | bridge: git pro lokální ignorování klonu nečte nic jiného |
CLAUDE.local.md místo CLAUDE.md, když projekt už sleduje CLAUDE.md | init --personal přepíše politiku (lib/init.sh:237-294, personal_target na share/providers.yaml:122), pak ji update zapíše | jako AGENTS.md | razítko a blok exclude | derived | bridge |
init --personal končí kódem 10, pokud se git status po něm nečte stejně jako před ním (lib/init.sh:166-171). Případ 3113 měří totéž pro celou osobní adopci.
2. Co životní cyklus dělá po adopci
Tyto zápisy se dějí po přijetí, protože hooky, které capture install položil, běží.
| Účinek | Zapsal | Režim | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|
Commit na aktuální větvi nesoucí záznam epizody pod .ai/repo/sessions/: git add do skutečného indexu, pak commit-tree a update-ref HEAD | shim SessionEnd → capture session --event end: lib/capture.sh:1908-1949 | plumbing, takže neběží žádný commit hook; podmíněno session.commit_record_on_end (v kostře pravda, share/skeleton/policy.yaml:85); v osobním režimu přeskočeno (:1915) | zpráva commitu chore(session): record <id> a záznam reflogu session record | runtime (mutace historie) | cesta je uvnitř .ai/; historie větví a index jsou mimo ni a kniha to musí pojmenovat jako mutaci historie, ne jako soubor |
git fetch, potom git push <remote> HEAD:refs/heads/<branch> | lib/capture.sh:1957-1986 | jen fast-forward, přes vlastní pre-push hook repozitáře | žádné | runtime | jako výše; je řízeno session.push_record_on_end (v kostře true, :86) |
| Volné objekty z dočasného indexu | finish --verify-command: lib/common.sh:68-79 (mj_worktree_tree_id), lib/finish.sh:195-201 | přidá nedosažitelné objekty; refy a skutečný index se nedotýkají | id stromu v MJ_FINISH_VTREE | cache | zůstává: git gc je sbírá |
To je největší stopa, kterou Majordomus u adoptujícího zanechává a která není souborem. S výchozím nastavením každý SessionEnd commituje a pokouší se pushnout.
3. Příkazy, které adopter spouští podle vlastní volby
| Cesta | Zapsal | Spouštěč | Režim | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|---|
.claude/skills/<alias>/SKILL.md | apps/majordomus-cli/src/editors/claude.rs:26-42, editors/mod.rs:595-612 | generate, generate editors | odmítne soubor bez bannerů (editors/mod.rs:885); odstraní zastaralý soubor s bannerem (:951-962) | banner (editors/mod.rs:848), sha256 a klíč odvození v editors::plan, docs/generated/artifacts.json | derived | bridge (cesta, kterou poskytovatel objevuje). Jedna dovednost na každý alias vestavěné schopnosti se zapíše i v repozitáři bez dovedností: měřený adoptér dostal .claude/skills/intent/SKILL.md |
.agents/skills/<id>/SKILL.md | editors/mod.rs:75, :578-587 | generate, jeden na aktivní dovednost pod .ai/repo/skills/ | jako výše | jako výše | derived | bridge |
.zed/tasks.json | editors/zed.rs:25,46 | generate, když justfile má veřejné recepty | přepsání chráněné bannerem | jako výše; nikdy neodstraněno, když jeho úlohy zmizí (sken osiřelých pokrývá jen dva adresáře dovedností, editors/mod.rs:923-948) | derived | bridge |
AGENTS.md, CLAUDE.md, GEMINI.md | apps/majordomus-cli/src/providers.rs:47-138 | generate | režim souboru přepíše celý soubor bez kontroly ručních úprav, na rozdíl od shellového update; režim regionu vkládá mezi <!-- majordomus:begin --> a <!-- majordomus:end --> (providers.rs:22-24, :94-108) | razítko (providers.rs:141), artifacts.json | derived | bridge, jako v sekci 1; oba renderery jsou jedna vada (I1114) |
docs/generated/** (86 souborů v měřeném adoptérovi: OpenAPI, CLI, registr, moduly, měření výkonu, poskytovatelé, web, changelog, graf, economics, manifest) | apps/majordomus-cli/src/generate.rs:32 a cíle na :574-650, :735-746, :942, :1158-1240; manifest na :1864-1990; atomický zápis na :2446-2470 | generate | přepsat přes .<name>.mj-tmp.<pid> a rename | banner původu a docs/generated/artifacts.json | derived (registr zahrnuje deklarativní druhy adoptujícího) | přesunout do .majordomus/generated/: docs/ patří přejímateli |
docs/INSTALL.md, site/static/install.sh, site/data/registry/distribution.json | generate.rs:900-1000, distribution/mod.rs:50-55 | generate | přepsat | artifacts.json | accidental: vlastní instalátor a instalační stránka Majordoma, zapsané do cizího repozitáře | stop: hlídka, která už drží share/* a výstupy designu mimo adoptujícího (share_is_here, crate_is_here na generate.rs:697, :823-830), je nepokrývá |
site/data/registry/{registry,evidence-subjects,why,why-graph,product,product-graph}.json | generate.rs:36, :786-818; evidence/subject.rs:98; site.rs:849, :962, :1325 | generate | přepsat | artifacts.json | accidental u adoptujícího repozitáře bez webu Zola | stop, nebo move s docs/generated/ |
deploy/Dockerfile, .dockerignore | deploy/render.rs:16-19, :348-361; generate.rs:837-860 | generate, jen když adoptující deklaruje objekty deployment | přepsat | artifacts.json | derived | most (Docker je čte na těchto cestách), zvolený deklarací deploymentu |
<parent>/<repo>-wt/ a <repo>-wt/<branch>/ | worktree/path.rs:21, :151-161; worktree/service.rs:922-986 | worktree create, ensure; změřeno: adopter-shared-wt se objevil vedle adoptujícího | jen vytvořit | pouze zpráva JSON příkazu | runtime | záměrně zůstává mimo repozitář (topologie ADR 0021); kniha zaznamenává, že kontejner byl vytvořen |
.envrc.local v propojeném worktree, symlink na kopii primárního, vytvořený jen tehdy, když ho git ignoruje | worktree/direnv.rs:118-147 | worktree create, ensure | jen vytvořit | report | runtime | zůstává (je to soubor dané osoby, sdílený) |
úložiště schválení direnv, přes direnv allow | worktree/direnv.rs:184-188 | worktree create/ensure/migrate, když je primární už schválen | vlastní zápis direnv | report | runtime | zůstává; pojmenováno, aby odinstalace věděla, že jej nemá vracet Majordomus |
tmp/archives/<repo>-<profile>-<date>.{zip,tar.gz} | lib/archive.sh:325-334 | archive | vytvoří; odmítne existující soubor bez --force | žádné | runtime | move: tmp/ není ignorováno init, takže se archiv u adoptujícího ukazuje jako nesledovaný |
tmp/packs/<repo>-<profile>-<commit>/ s pack.json | apps/majordomus-cli/src/pack/mod.rs:76, :1193-1282 | pack | nahrazuje jen uvnitř adresáře, který už drží pack.json | pack.json | runtime | move, jako tmp/archives/ |
tmp/majordomus-migrate-backup/<utc>/ | lib/migrate.sh:155-168 | migrate (jen rozvržení před .ai) | vytvořit, ověřená kopie | událost knihy layout.migrated (lib/migrate.sh:216) | runtime | přesunout |
target/web/**, target/site/ | web/manifest.rs:19, :57-70; web/discover.rs:35-41; web/report/*; web/compose.rs:20, :42-134 | web manifest, web report, web compose | přepsat; target/site/ se smaže a zkopíruje znovu | surface.json | runtime | přesun: v adoptujícím projektu v Rustu je target/ od Cargo |
jakákoli cesta zadaná do --out / --file | commands/generate.rs:45-48, commands/evidence.rs:155-162, lib/usecase.sh:762, :814 | explicit | přepsat | žádné | — | zůstává: osoba zvolila cestu |
4. Git adresář, konfigurace a refy
| Účinek | Zapsal | Spouštěč | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|
.git/config: core.repositoryformatversion=1, extensions.worktreeConfig=true | apps/majordomus-cli/src/worktree/hooks.rs:265-281 | worktree create/ensure/migrate/repair, když primární nastaví core.hooksPath uvnitř sebe sama | JSON příkazu (HooksPath::Set), neukládá se | runtime | bridge: git to čte jen tam; kniha musí pokrývat konfiguraci klonu, nejen soubory |
.git/worktrees/<n>/config.worktree: core.hooksPath | worktree/hooks.rs:219-223 | stejné | stejné | runtime | bridge |
refs/heads/<branch>, .git/worktrees/<n>/ | worktree/service.rs:924-940 (přes git worktree add) | worktree create (změřeno) | žádné | runtime | zůstává (vlastní evidence gitu) |
.git/majordomus/locks/worktrees.lock | worktree/lock.rs:24, :60-96 | worktree remove/repair/migrate | žádné | runtime | zůstává: společný adresář gitu je jediné místo, které sdílí každý worktree |
.git/majordomus/integration/**, .git/majordomus/locks/integration-<base>.lock | integration/mod.rs:83, :116-150; integration/drain.rs:303-372, :823-832, :2403-2557 | prs | events.jsonl | runtime | zůstává |
refs/majordomus/continuity, refs/majordomus/remotes/<remote>/continuity a push prvního na remote | continuity/store.rs:35-39, :245-294, :410-445 | continuity publish/sync/resume (naměřeno: continuity publish vytvořilo refs/majordomus/continuity) | samotné podepsané záznamy | canonical (předávky člověka, publikované) | zůstává: refs/majordomus/ je třetí jmenný prostor v prostoru refs gitu |
refs/majordomus/prs/<n> (vynucené zrcadlo) | integration/forge.rs:45, :1736-1809 | prs refresh | žádné | cache | zůstává pod refs/majordomus/ |
refs/offload/in-<tag>, refs/offload/<tag>-derived; poté soubory připravené ve worktree dané osoby | offload/run.rs:387-388, :584-601, :655-659 | offload, jen když je deklarováno .ai/repo/offload/*.yaml | žádné | runtime | přesun do refs/majordomus/offload/: jediný ref, který Majordomus zapisuje mimo svůj jmenný prostor refů |
V bin/majordomus ani lib/*.sh není žádný zápis git config. core.hooksPath a merge.derived.* se tam objevují jen jako rada, kterou doctor vytiskne (lib/doctor.sh:157-161, :228-230). Žádný příkaz nezapisuje .git/hooks/. init vytiskne dva řádky hooku a žádný neinstaluje (lib/init.sh:200-226) a měřený běh potvrzuje, že .git/hooks/ zůstal beze změny.
5. Stroj, mimo repozitář
| Cesta | Zapsal | Spouštěč | Zaznamenal | Třída | Osud |
|---|---|---|---|---|---|
$HOME/.local/bin/majordomus, $HOME/.local/bin/majordomus-mcp, $HOME/.local/share/majordomus/versions/<v>/, $HOME/.local/share/majordomus/.lock | site/static/install.sh:41-42, :580-626 | instalátor | RELEASE.json ve stromu verzí | generated | mimo smlouvu: instalace, ne adopce. Instalátor neupravuje žádný spouštěcí soubor shellu a jen vypíše radu k PATH |
$XDG_STATE_HOME/majordomus/node.json, jinak $HOME/.local/state/majordomus/node.json (tajný klíč Ed25519, režim 0600) | apps/majordomus-cli/src/mesh/identity.rs:140-165 | start serveru se zapnutým .ai/repo/mesh; jakýkoli zápis kontinuity; continuity device | žádné | runtime | mimo kontrakt (jeden na stroj, sdílený každým repozitářem). Měřený adoptující mesh nezapíná a serve ensure pod HOME nezapsal nic |
spravovaný blok v ~/.zshrc, ~/.bashrc nebo ~/.config/fish/config.fish, plus <rc>.majordomus.bak | commands/completion.rs:36-37 (značky), :44-148 | completion install (změřeno: blok se objevil v $HOME/.zshrc) | značky; --remove je odstraní | generated | mimo smlouvu; již vratné |
| pravidla firewallu hostitele | mesh/firewall.rs:489, :595-650, :1362 | sudo majordomus mesh firewall apply | žádné | runtime | mimo kontrakt; explicitní a privilegované |
6. Co už existuje a která fáze to rozšiřuje
Každá pozdější fáze má mechanismus, od kterého vychází. Fáze, která vedle něj staví druhý, opakuje vadu, kterou má tento milník odstranit.
| Mechanismus | Kde | Co už dělá | Fáze, která ji rozšiřuje |
|---|---|---|---|
| Osobní blok exclude | lib/common.sh:311-439 (mj_personal_cover, mj_personal_verify) | záznam po klonu, ohraničený značkami, o každé cestě, kterou vrstva zapsala, přepisovaný celý, ověřovaný a znovu odstraňovaný pomocí init --shared | I1109, účetní kniha vlastnictví. Je to její první podoba, bez hashů. Kniha přidá hash nainstalované verze a pokryje konfiguraci a refy |
| Razítko poskytovatele a odmítnutí ruční úpravy | lib/update.sh:98-111, lib/common.sh:907-967; providers.rs:141 | hash, s nímž byl cíl zapsán, porovnaný s tím, co je na disku | I1111, odinstalace: „odmítne sáhnout na bridge, který člověk upravil“ je toto srovnání. Renderer v Rustu musí odmítnutí získat dřív, než může být jediným rendererem |
Plán editorů: banner, state_of (Current/Stale/Absent/Conflict), conflicts, orphans, remove_orphans, sha256 a klíč odvození | apps/majordomus-cli/src/editors/mod.rs:545-962, schopnost editors.status | požadované soubory spočtené z modelu, porovnané se stromem, konflikty odmítnuty, sirotci odstraněni | I1108, požadovaný stav a plán a I1110, idempotence. To už je reconciler pro jednu rodinu souborů; init se má stát stejného tvaru |
capture install jako vyrovnání | lib/capture.sh:2255-2356 | požadovaná množina z klíčů politiky; přepis hlídaný značkami; odebrání modu, jehož klíč se změnil na false | I1108 a I1112. Pravidlo, že soubor bez značky se nikdy nedotkne, se přenáší beze změny |
docs/generated/artifacts.json | generate.rs:1864-1990 | cesta, dokument, zdroj, bajty a sha256 každého artefaktu, který generate zapisuje | I1103 / I1106: inventář odvozených artefaktů. Nepokrývá výstupy fáze B z scripts/generate-site-data |
Predikáty cizího stromu share_is_here, crate_is_here | generate.rs:697, :823-830; commands/generate.rs:145 | držet share/* a výstupy designu mimo adoptujícího | I1112 / I1116: stejný predikát zastaví nahodilé řádky z oddílu 3 |
| Blok doplňování | commands/completion.rs:36-148 | spravovaný blok se značkami, --dry-run, --remove a záloha | I1111 / I1112: tvar, který by měl mít každý spravovaný kořenový blok, včetně jediného dnes funkčního odinstalování |
Rovnost git status před/po osobního initu | lib/init.sh:166-171; případ 3113 | dokazuje, že adopce nezměnila nic, co repozitář sdílí | I1110 / I1122: důkazy idempotence a cizího repozitáře měří stejným způsobem |
Události účetní knihy projections.updated, layout.migrated | lib/update.sh:146, lib/migrate.sh:216 | záznamy dvou mutací jen pro připojování | I1109. projections.updated nejmenuje žádný cíl a init a capture install nevysílají žádnou událost |
7. Co se změnilo od prvního čtení
Tyto opravy se měří proti 948dbd93:
- Dokončování a prostředí existují.
majordomus completion installzapisuje spravovaný blok do spouštěcího souboru shellu amajordomus envpopisuje checkout. První čtení tvrdilo, že neexistuje ani jedno. - Nyní existuje jedna cesta odinstalace:
completion install --remove. Nic jiného není vratné. capture installzapisuje víc než hooky. Zapisuje dva mody Claude Code do.claude/skills/a odstraňuje je, když se jejich klíč politiky vypne.generatezapisuje dovednosti editoru do.claude/skills/a.agents/skills/a.zed/tasks.json. Nic z toho nebylo v prvním čtení.share/allow/commands.txtashare/allow/events.txtnyní říkají, čím jsou. Oba nesou bannerAUTHORED FILE — no generator derives it yet. Stále jsou to ručně psané soubory ve generovaném adresáři.- Osobní adopce existuje a je to jediná adopce, která už vede záznam o tom, co zapsala (sekce 1).
- Stále platí:
initodmítne druhý běh s exit 15 (test/cases/01_init.sh); nic nevracíinit,updateanicapture install;share/events.yamlnemá událostinit;README.md:476stále říká, že každý generovaný soubor vzejde z jednoho spustitelného souboru, cožscripts/generate-site-datastále popírá.
8. Defekty, které tento inventář našel, zaznamenány a zde neopraveny
Tato fáze nemění žádnou cestu. Každý defekt níže patří uvedené fázi:
generatev adoptérovi zapíše vlastnídocs/INSTALL.md,site/static/install.sha registr webu Majordomus (sekce 3) → I1112 / I1116.- Renderer poskytovatele v Rustu v režimu souboru přepíše ručně upravený
AGENTS.mdamigratespouštíupdate --force(lib/migrate.sh:220), které dělá totéž → I1111 / I1114. updatezapisuje$MJ_ROOT/$targetbez../a absolutní cesty guardmj_norm_path(lib/common.sh:694-707) → I1102.- Zastaralé
.zed/tasks.jsonse nikdy neodstraní → I1110. - Vytvoření worktree zapíná
extensions.worktreeConfigve sdíleném.git/configa říká to jen ve svém JSON → I1109. refs/offload/*leží mimorefs/majordomus/→ I1104.- Commit SessionEnd z principu obchází commit hooky repozitáře → I1109 to zaznamenává; zda to zůstane výchozí, je rozhodnutí politiky, ne tohoto soupisu.
9. Seřazené řezy
Toto jsou úkoly milníku v pořadí, které soupis podporuje:
- I1102 / I1104: jmenné prostory jako typovaná smlouva.
.ai/,.majordomus/arefs/majordomus/jsou jmenné prostory..ai/.gitignoreodebírá hraniční řádky z kořenového.gitignore. - I1109: kniha vlastnictví, vyrostlá z osobního exclude bloku, pokrývající soubory, konfiguraci klonu, refy a mutace historie, každé s hashem, s nímž bylo zapsáno.
- I1108 / I1110:
initjako reconciler v tvaru, který už plán editorů má: požadováno, skutečné, konflikt, sirotek. Druhý běh nic nezmění. - I1112: kořen zredukovaný na mosty. Shimy
.claude/hooks/se přesunou pod.majordomus/a nahodilé řádky sekce 3 přestanou. - I1111: uninstall, s porovnáním otisku pro odmítnutí a
--removedokončovacího bloku jako vzorem. - I1116: vlastní stopa tohoto repozitáře, přesunutá přes reconciler, nejdřív nanečisto.
10. Rizika
- Soupis, kterému zapisovatel uteče, je horší než žádný. Opravňuje to, co už nepopisuje. Proto je výchozí adopce test (případ 3113), ne jen tabulka. Volitelné příkazy sekcí 3 až 5 drží toto čtení samo, dokud je kniha nezaznamená.
- Shellový nástroj a spustitelný soubor v Rustu jsou dvě implementace jednoho produktu. Životní cyklus adopce žije v shellové a
generatev rustové. Oba zapisují kořenové soubory poskytovatelů a ruční úpravu odmítá jen shellová. Každý řez, který přesune zapisovatele přes tuto hranici, musí zanechat jednoho zapisovatele, ne dva.