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.

Záruky

Co Majordomus dělá dnes, řádek po řádku: se souborem, který to implementuje, testem, který to má prokázat, a tím, co říká zaznamenaný běh tohoto testu.

Dozorový nástroj, který sám sebe nadhodnocuje, je přesně to, čemu měl zabránit. Tato stránka je generována z docs/CLAIMS.yaml; build selže, pokud jakákoli cesta ke zdroji, implementaci nebo testu v ní neexistuje, nebo pokud zaručené tvrzení neuvádí žádný test. Stav je to, co soubor deklaruje; sloupec zaznamenaných důkazů je to, co majordomus evidence show odvozuje ze skutečně zaznamenaných běhů, a jako takový je barevně označen jen podpořený verdikt.

Tatáž data vykreslená jako graf, kterým jsou: každé tvrzení propojené s dokumentem, implementací a testem, které za ním stojí →

zaručeno

claimzdrojimplementacetestzaznamenané důkazy
Každá platforma, název artefaktu a instalační URL se odvozuje z jednoho modelu a projekce, která s ním nesouhlasí, se odmítne

share/distribution.yaml je model. Platformní tabulka instalátoru, sestavovací matice release, tabulka v dokumentaci, datová sada webu a veřejná metadata release se z něj generují a `majordomus generate --check` skončí s kódem 10 a pojmenuje každé, které zaostalo.

docs/DISTRIBUTION.md apps/majordomus-cli/src/distribution/mod.rs test/cases/84_distribution_model.sh zaznamenané důkazy: nespuštěno
Zdokumentovaný jednořádkový instalační příkaz se skládá z částí modelu a dokument, který uvádí jiný, shodí sadu testů

Příkaz ke stažení, základní URL, název skriptu a shell jsou čtyři pole; příkaz je jejich složení. README.md a průvodce instalací se proti němu kontrolují, nevěří se jim.

docs/INSTALL.md apps/majordomus-cli/src/distribution/mod.rs test/cases/84_distribution_model.sh zaznamenané důkazy: nespuštěno
Instalátor ověří digest artefaktu a zkontroluje jeho archiv dříve, než se cokoli rozbalí, a jakékoli selhání ponechá předchozí instalaci funkční

Špatný digest, useknuté stažení, archiv, který uniká ze svého adresáře nebo nese odkaz, a spustitelný soubor, který hlásí jinou verzi, se každé odmítnou pojmenovaně, ještě než se launcher nahradí. Neexistuje cesta varuj-a-pokračuj a sudo se nevyskytuje nikde.

docs/INSTALL.md share/install/install.sh.in test/cases/85_installer.sh zaznamenané důkazy: nespuštěno
Release publikuje artefakt pro každý podporovaný cíl, jinak se nepublikuje

Matice buildů se zastaví při prvním selhání, publikace začíná, až když uspěje každý build, a recorder odmítne zapsat záznam, kterému chybí cíl, jejž model označuje jako podporovaný.

docs/DISTRIBUTION.md scripts/release-record test/cases/87_release_pipeline.sh zaznamenané důkazy: nespuštěno
Instalační příkaz, který tento projekt inzeruje, se každou noc a na požádání stáhne z publikovaného webu a spustí a běh, který o to požádal, je červený, dokud nenainstaluje funkční nástroj

Řádek se spouští přesně tak, jak je napsán, včetně roury, na Linuxu i macOS, do vlastního domovského adresáře každého běhu. Dokazuje, že se metadata přeloží, nástroj hlásí přeloženou verzi, launcher MCP běží bez toolchainu a lze inicializovat repozitář. Release to dokazuje jednou při publikaci; tohle v dokazování pokračuje i potom. ADR 0037 jej plánuje na požádání, protože jeho úloha má větev pro macOS a tyto runnery čekaly ve frontě hodiny: žádají o něj noční plán, ruční spuštění a pull request označený ci:full, běžný push ne.

docs/DISTRIBUTION.md scripts/ci/install-check test/cases/97_install_gate.sh zaznamenané důkazy: nespuštěno
Archiv release nese každou cestu jednou a nenese nic než soubory a adresáře

Balič čte zpět, co zapsal, a smaže archiv s opakovanou cestou nebo položkou, která není soubor ani adresář; ověřovač zkontroluje tytéž dvě vlastnosti znovu na runneru, který archiv sestavil. Žádný záložní balič neexistuje, protože archiv zabalený jinak není tím, který byl ověřen.

docs/DISTRIBUTION.md scripts/release-package test/cases/87b_release_archive_shape.sh zaznamenané důkazy: nespuštěno
Kanonická politika se parsuje a odmítne, pokud obsahuje neznámý klíč

Omezená podmnožina YAML. Tabulátory, kotvy, flow mapy a víceřádkové skaláry se odmítají, ne hádají.

docs/SCHEMAS.md lib/common.sh test/cases/00_yaml_flatten.sh zaznamenané důkazy: nespuštěno
Každý profil se parsuje, jeho neznámé klíče se odmítnou a výchozí profil se prokáže jako existující docs/SCHEMAS.md lib/doctor.sh test/cases/02_doctor_basic.sh zaznamenané důkazy: nespuštěno
Každé vynucování, které politika deklaruje, je srovnáno s tím, co skutečně běží

Cesta musí existovat, být spustitelná a být vyvolána jmenovaným dispatcherem. Hook, který ji vyvolá a zahodí návratový kód, se počítá jako nezapojený.

docs/DESIGN.md lib/doctor.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Návratové kódy jsou kontrakt a žádný kód neznamená "varuj a pokračuj" docs/CLI.md lib/common.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Instrukční soubory providerů se generují z jediné politiky, deterministicky

Dvojí spuštění update zanechá bajtově shodný soubor. Test ověřuje hash.

docs/DESIGN.md lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Každý generovaný instrukční soubor nese vlastní razítko a ruční úprava se odhalí docs/SCHEMAS.md lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Projekce může vlastnit jen oblast mezi svými značkami a zbytek souboru ponechá nedotčený

Jak Majordomus převezme repozitář, který už má ručně psaný CLAUDE.md. Úprava mimo značky není nikdy drift; úprava uvnitř nich se zachytí. Poškozené značky se odmítnou, nehádají se.

docs/SCHEMAS.md lib/update.sh test/cases/13_region_projection.sh zaznamenané důkazy: nespuštěno
Zapojení se najde v hooku nebo v kterémkoli subhooku adresáře, do kterého tento hook předává

Zjištění jmenuje soubor, který vyvolání skutečně nese. Podhook, který není spustitelný, se hlásí jako nezapojený, protože ho dispatcher přeskočí.

docs/CLI.md lib/doctor.sh test/cases/14_wiring_dispatcher.sh zaznamenané důkazy: nespuštěno
Každé pravidlo, které nástroj vynucuje, je deklarováno jednou, jako objekt pravidla v efektivní množině repozitáře, a doctor dokazuje, že každé z nich je dosaženo příkazem, který tvrdí, že ho spouští

Doktrína, jejíž validátor neexistuje, validátor, který žádná doktrína nedeklaruje, příkaz, který se nikdy nedispečuje, blokující pravidlo, jehož příkaz nemůže skončit nenulovým kódem, chybějící test a CI, které polyká sadu testů, jsou šest samostatných selhání se šesti samostatnými zprávami. Každé je mutačně testováno.

docs/DOCTRINE.md lib/doctrine.sh test/cases/18_doctrine_wiring.sh zaznamenané důkazy: nespuštěno
O tom, zda porušení zastaví příkaz, rozhoduje třída doktríny, ne štítek vedle ní

Test změní aktuálnost checkpointu z poradní na blokující v kopii vendorovaného souboru s pravidlem a ověří, že návratový kód kontroly se změní z 0 na 10. Existují dvě třídy a žádná výjimka.

docs/DOCTRINE.md lib/doctrine.sh test/cases/17_doctrine_enforcement.sh zaznamenané důkazy: nespuštěno
Každý řádek knihy jen pro připojování je správně utvořená událost a poškozený řádek je selhání, ne přeskočený záznam

Čtenář vadný řádek přeskočí, místo aby spadl, a check, doctor i watch jej hlásí. Kniha je jediný trvalý záznam, který nelze zrekonstruovat odjinud.

docs/DOCTRINE.md lib/check.sh test/cases/22_history.sh zaznamenané důkazy: nespuštěno
Položka v úložišti otázek, která se neparsuje, blokuje přijetí přesně jako nevyřešená otázka

Kontrola, která nedokáže přečíst záznam, se dá obejít překlepem, takže nečitelná otázka není menší problém než otevřená.

docs/DOCTRINE.md lib/check.sh test/cases/21_decision_question.sh zaznamenané důkazy: nespuštěno
Deklarovaný provider hook zachycuje surové prompty uživatele pod úrovní modelu a doctor to dokazuje jeho spuštěním

Pokrývá pět stavů, v nichž může být poskytovatel, idempotenci podle identity promptu poskytovatele, archiv, který je ignorován a nesledován, sadu záznamů, která nemůže nést výstup modelu, dvojici záznam–vykreslení, v níž se uchovává každý prompt, a identifikátor schématu, který se rozřeší na dva soubory popisující obě poloviny.

docs/DOCTRINE.md lib/capture.sh test/cases/29_prompt_capture.sh zaznamenané důkazy: nespuštěno
Zachycený prompt jmenuje epizodu, do které patří, nebo zaznamená, že žádnou nešlo určit; archiv je soukromý, omezený a bez přihlašovacích údajů

Mapování relace poskytovatele na epizodu dříve existovalo jen po dobu, kdy byla epizoda otevřená, takže prompty uzavřené epizody se okamžitě staly nepřiřaditelnými — 713 z 974 záznamů tohoto repozitáře. Záznam nyní nese epizodu, relaci poskytovatele, repozitář a worktree s původem vazby; archiv má oprávnění 0600 a je omezen prompts.retention_max_days a prompts.retention_max_bytes, které odřezávají tělo a ponechávají záznam; a tvary přihlašovacích údajů se nahrazují dřív, než se cokoli uloží. Nepropojené starší záznamy zůstávají nepropojené: důkazy pro ně neexistují a toto tvrzení nepředstírá opak.

docs/DOCTRINE.md lib/capture.sh test/cases/140_prompt_continuity.sh zaznamenané důkazy: nespuštěno
Každý prompt asset lokální pro repozitář se vykreslí a neznámý token je selhání

Pokrývá neshodu jména a názvu souboru, prázdný popis, neznámý klíč front matter, chybějící front matter a blokový token použitý inline.

docs/DOCTRINE.md lib/prompt.sh test/cases/24_prompt_search.sh zaznamenané důkazy: nespuštěno
Případ užití ani aplikace nemůže pojmenovat příkaz, doktrínu nebo tvrzení, které neexistuje, a oba katalogy se nemohou rozcházet v tom, co se na co vztahuje

Próza popisující nástroj se kontroluje stejně, jako se kontroluje nástroj sám. Křížové odkazy se ověřují v obou směrech, takže případ užití jmenující aplikaci, která jej nejmenuje zpět, je selhání, ne tichá asymetrie. Aplikace, která nedeklaruje žádné does_not_fit_when, se odmítne, protože katalog, který uvádí jen to, kam se hodí, je marketing.

docs/DOCTRINE.md lib/usecase.sh test/cases/28_catalogue.sh zaznamenané důkazy: nespuštěno
Ručně upravený instrukční soubor se nikdy tiše nepřepíše

update odmítne, nabídne diff a přepíše jen s výslovným příznakem.

docs/CLI.md lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Archiv, který ztratil režimy souborů, selže, místo aby se distribuoval

Mód každé položky se bere z indexu gitu, zapisuje se do manifestu archivu a před návratem příkazu se prokazuje skrz kontejner.

docs/ARCHIVE.md lib/archive.sh test/cases/130_archive.sh zaznamenané důkazy: zastaralé
Vždy načítaný instrukční soubor má rozpočet řádků s kontrolou, která selhává

Nad rozpočet se nezapíše vůbec nic.

share/skeleton/policy.yaml lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Každý odkaz relativní k repozitáři ve vždy načítaném souboru je prokázaně vyřešitelný docs/DESIGN.md lib/doctor.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Pevně zapsaný počet v vždy načítaném souboru je selhání docs/DESIGN.md lib/doctor.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Kniha jen pro připojování a úložiště předávek mají stropy uchovávání, které se kontrolují share/skeleton/policy.yaml lib/doctor.sh test/cases/02_doctor_basic.sh zaznamenané důkazy: nespuštěno
Instalace do repozitáře, který už instalaci má, je odmítnuta docs/CLI.md lib/init.sh test/cases/01_init.sh zaznamenané důkazy: nespuštěno
Každý nález nese příkaz, který jej reprodukuje docs/DESIGN.md lib/common.sh test/cases/02_doctor_basic.sh zaznamenané důkazy: nespuštěno
Shellový nástroj neprovádí žádné síťové volání, nevyhodnocuje žádný generovaný text a nic rekurzivně nemaže; jeho jediný deklarovaný požadavek je sonda peeru na loopbacku docs/DESIGN.md bin/majordomus test/cases/08_no_forbidden_constructs.sh zaznamenané důkazy: nespuštěno
Úloha se zahajuje s deklarovaným rozsahem souborů a profilem a na jeden checkout může být aktivní jen jedna úloha

Cesta rozsahu, která uniká z kořene repozitáře, se odmítne. Spuštění druhé úlohy, zatímco jedna je aktivní, se odmítne.

docs/CLI.md lib/start.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
Pole identity v každém záznamu stavu se počítají z gitu a nikdy se neautorují

Tělo předávky, které se pokusí jeden nastavit, se odmítne, místo aby se sloučilo.

docs/SCHEMAS.md lib/start.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
check hlásí, zda jsou stav, rozsah, blokátory a stáří checkpointu právě teď konzistentní docs/CLI.md lib/check.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
Dotčený soubor mimo nárokovaný rozsah je selhání, ne varování docs/DESIGN.md lib/check.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
Zpětně přečtený stav je vůči gitu označen jako exact, advanced, diverged nebo different_context docs/SCHEMAS.md lib/common.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
Překryv mezi paralelními pracovníky se počítá na nárokovaných cestách v obou směrech obsažení

Hlásí se, nikdy neblokuje. Rozpracovaná práce se hlásí a nikdy neblokuje.

docs/DESIGN.md lib/check.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
watch hlásí drift politiky, projekce, stavu, rozsahu, předávky, ověření, zastarání a retence docs/DESIGN.md lib/watch.sh test/cases/07_watch.sh zaznamenané důkazy: nespuštěno
handover zapisuje záznam jen pro připojování s vypočtenou hlavičkou a povinnými sekcemi

Tělo s chybějící nebo prázdnou povinnou sekcí se odmítne a sekce jmenuje.

docs/SCHEMAS.md lib/handover.sh test/cases/05_handover.sh zaznamenané důkazy: nespuštěno
Předávka je záznam stavu, ne přepis - její povinné sekce musí být přítomné a neprázdné, zástupné tělo se odmítne a její identita se vypočte a odmítne se, je-li zapsána do těla; přepis vložený do sekce se nezjistí docs/DESIGN.md lib/handover.sh test/cases/05_handover.sh zaznamenané důkazy: nespuštěno
finish vyhodnocuje kontrakt dokončení řádek po řádku a odmítne, pokud je kterýkoli řádek nesplněn docs/CLI.md lib/finish.sh test/cases/06_finish.sh zaznamenané důkazy: nespuštěno
každý odmítnutý finish připojí událost task.refused jmenující nárokovaný výsledek, počet nesplněných a doktríny, které odmítly, a finish --check nezapíše žádnou share/events.yaml lib/finish.sh test/cases/06_finish.sh zaznamenané důkazy: nespuštěno
Výsledek je hodnota z uzavřeného slovníku, ne volný text

no_match znamená, že práce byla provedena a hledaná věc neexistuje. failed znamená, že práci nešlo provést. Jsou to různé skutečnosti.

docs/SCHEMAS.md lib/finish.sh test/cases/06_finish.sh zaznamenané důkazy: nespuštěno
Kontext, který pracovník dostane, se sestavuje z trvalého stavu v pořadí autority a co profil vylučuje, je vyloučeno

Nejdřív git, pak úloha a profil, pak blokátory, pak psané záznamy, pak historie. Kontextový blok profilu rozhoduje, co se nabídne; je to jediný kód, který ta pole čte.

docs/CONTINUITY.md lib/context.sh test/cases/23_context.sh zaznamenané důkazy: nespuštěno
Sestavený kontext dodržuje rozpočet řádků a každá sekce, kterou vypustí, je pojmenována s důvodem

Počítá se vytištěný dokument, ne jeho sekce. Git, úloha, profil a otevřené blokátory se nikdy nevypouštějí; těla záznamů degradují na odkaz dřív, než zmizí.

share/skeleton/policy.yaml lib/context.sh test/cases/23_context.sh zaznamenané důkazy: nespuštěno
Checkpoint je záznam průběhu s omezenou velikostí a vypočtenou identitou; tělo nad limit je odmítnuto, ne zkráceno

Strop je to, co odlišuje checkpoint od předávky. Mód 0600, vytvořeno atomicky, nikdy se nestaguje.

docs/SCHEMAS.md lib/checkpoint.sh test/cases/20_checkpoint.sh zaznamenané důkazy: nespuštěno
Správný předchozí záznam se vyhledá podle worktree a branche a nesouvisející se nikdy nenabídne

Stejný worktree a větev, jinak stejná větev, jinak nic. Shody v rámci jedné sekundy se rozhodují pořadím v ledgeru. Absence se hlásí jako absence.

docs/CONTINUITY.md lib/common.sh test/cases/23_context.sh zaznamenané důkazy: nespuštěno
Ledger lze číst zpět jako provozní historii, filtrovanou podle úlohy, události a času

Co se stalo, kdy, pro kterou úlohu, na které hlavě a jaký výsledek byl přijat. Nikdy ne to, co kdo řekl.

docs/CLI.md lib/history.sh test/cases/22_history.sh zaznamenané důkazy: nespuštěno
Rotace knihy archivuje nejstarší řádky a nikdy je nesmaže

Odmítne přepsat existující archiv a nedělá nic, když je kniha pod svým stropem.

docs/SCHEMAS.md lib/history.sh test/cases/22_history.sh zaznamenané důkazy: nespuštěno
Rozhodnutí se zaznamenává s důvodem a svou úlohou a je nahrazeno pozdějším záznamem, ne upraveno

--why je povinné. --supersedes odmítne text, který neodpovídá žádnému zaznamenanému rozhodnutí. Úloha a head se vypočítají.

docs/SCHEMAS.md lib/decision.sh test/cases/21_decision_question.sh zaznamenané důkazy: nespuštěno
Nevyřešená otázka blokuje přijetí a položka, kterou kontrola neumí parsovat, je selhání, ne tiché propuštění

Kontrola, která nedokáže přečíst položku, se dá obejít překlepem v ní, proto check, doctor i watch selžou na poškozené položce.

docs/SCHEMAS.md lib/question.sh test/cases/21_decision_question.sh zaznamenané důkazy: nespuštěno
Prompt lokální pro repozitář se vykresluje proti uzavřené množině stavových tokenů a neznámý token je chyba

Žádné podmínky, smyčky, includy ani shell. Prompt, který tiše vykreslí překlepnutý token jako doslovný text, je horší než ten, který odmítne.

docs/SCHEMAS.md lib/prompt.sh test/cases/24_prompt_search.sh zaznamenané důkazy: nespuštěno
Trvalé záznamy lze doslovně prohledávat napříč druhy, bez indexu

Grep na pevný řetězec v pořadí podle autority. Žádné řazení, žádné embeddingy, žádný index, který by se mohl rozejít se záznamy, které popisuje.

docs/CLI.md lib/search.sh test/cases/24_prompt_search.sh zaznamenané důkazy: nespuštěno
Každé úložiště kontinuity se prokazuje jako dosažitelné vlastním příkazem, ne jen jako přítomné na disku

doctor spustí resolver, vykreslí každý prompt asset, zvaliduje oba naparsované sklady a sestaví kontext. Adresář záznamů, které nečte žádný příkaz, je přesně to selhání, které má tento nástroj zachytit.

docs/CLI.md lib/doctor.sh test/cases/25_continuity_lifecycle.sh zaznamenané důkazy: nespuštěno
Kontext, který se vztahuje na cestu, se skládá z dokumentů vrstvy vázaných na rozsah, od kořene k cíli, v jednom deterministickém pořadí s původem, a strom, který neprojde validací, nevyřeší nic

Dokument je soubor Markdown pod .ai/, jehož front matter nese schéma context/v1; jméno souboru je konvence a identitou je id. Pořadí je hloubka, pak deklarované pořadí, pak cesta. Poskytovatelé a publikum filtrují; extend, replace a final skládají; duplicitní id, visící odkaz, nahrazený final dokument nebo cyklus se odmítne jménem.

docs/CLI.md lib/context_docs.sh test/cases/69_context_documents.sh zaznamenané důkazy: nespuštěno
Každý adresář vrstvy nese kontextový dokument, výjimku deklaruje kontrakt, který podstrom řídí, a potomek může tento požadavek zúžit, ale nikdy oslabit

Adresář uvnitř stromu bez dokumentu je missing-contract, s uvedením adresáře a tam, kde požadavek explicitně učinil předek, i kontraktu, který ho učinil. Výjimka je children.require_contract v dokumentu podstromu; platí hodnota nejblíže adresáři, absence znamená, že je kontrakt dlužen, a snížení zděděného true je illegal-override. Strom je adresář manifestu bez poloviny, kterou manifest deklaruje jako nesledovanou; nic jiného se nepřeskakuje podle jména a podstrom, který vrstva nese, ale nevytváří, se uvolní pomocí children.exempt na kontraktu, který ho řídí a který smí jmenovat jen adresáře uvnitř svého rozsahu.

docs/CONTEXT.md lib/context_docs.sh test/cases/69_context_documents.sh zaznamenané důkazy: nespuštěno
Dopad sady změn na kontext v rozsahu se hlásí z gitu — dokumenty, rozsahy pod nimi, přesuny s jejich původem, sledované zdroje ke kontrole a zastaralé projekce — a nesouvisející změna nehlásí nic

context affected čte pracovní strom, index nebo základní ref, s detekcí přejmenování; změna sledovaného zdroje je WARN k posouzení a nikdy exit kód, protože nástroj nemůže rozhodnout, zda próza stále popisuje kód. context check-sync je validate, pak každá projekce proti svému razítku, pak affected; test/cases/71_context_sync.sh dokazuje exit kódy.

docs/CLI.md lib/context_docs.sh test/cases/70_context_impact.sh zaznamenané důkazy: nespuštěno
Vrstva AI repozitáře je jeden adresář, jehož manifest jmenuje každou sekci a lze jej číst bez nástroje

init zasévá .ai/ ze skeletonu a nic dalšího; žádný hook, žádný shellový soubor, žádná instalace nástrojů. doctor selže na sekci, kterou manifest jmenuje a která chybí, a na klíč manifestu, který nic nečte.

docs/SCHEMAS.md lib/init.sh test/cases/01_init.sh zaznamenané důkazy: nespuštěno
Vrstva nainstalovaná s --personal je vlastní jednomu člověku ve sdíleném repozitáři: nemění žádný sledovaný soubor, žádný řádek .gitignore ani nic, co ukazuje git status, a příkaz, který to tvrdí, to ověří

Krytí je označený blok v info/exclude společného adresáře gitu. init --personal skončí s kódem 10, pokud git status po něm nevypadá stejně jako před ním, instalátor to sám znovu porovná, update a capture install pokryjí každou cestu před zápisem a sledovanou cestu odmítnou celou a doctor při každém běhu ověří znovu. Zda je vrstva osobní, se čte z bloku a nikde se neukládá. init --extend --shared krytí odstraní a nic necommituje.

docs/INSTALL.md lib/common.sh test/cases/2979_a_personal_layer_changes_nothing_shared.sh zaznamenané důkazy: nespuštěno
Stav lokální pro checkout žije pod .ai/local/, git jej ignoruje a na novém klonu nebo worktree chybí

Záznam úlohy, ledger, rozhodnutí, otázky, checkpointy a předávky nikdy neputují přes git. Záznam, který do jiného checkoutu dorazí jinak, pojmenovává checkout, kterému patří, a jinde se nevynucuje, což dokazuje test/cases/27_foreign_task.sh.

docs/SCHEMAS.md lib/common.sh test/cases/01_init.sh zaznamenané důkazy: nespuštěno
Základ pravidel je vendorován do repozitáře s manifestem jmenujícím každý soubor a jeho hash a ruční úprava se odhalí a odmítne

rules vendor status ohlásí upravený, chybějící nebo cizí soubor; rules vendor update nad ním odmítne pokračovat, dokud se nepoužije --force, a nikdy se nedotkne rules/project/. Novější spustitelný soubor ohlásí novější balíček a neaplikuje jej.

docs/DOCTRINE.md lib/rules.sh test/cases/67_rule_dag.sh zaznamenané důkazy: nespuštěno
Efektivní sada pravidel se řeší jako graf závislostí v deterministickém pořadí a sadu, která se nevyřeší, neaplikuje nic

Chybějící nebo zastaralá závislost, cyklus, jedna identita zabraná dvakrát, projektové pravidlo ve vendorovaném jmenném prostoru, nevalidní front matter, neznámý klíč a blok x-majordomus bez vazby jsou odmítnuty každé zvlášť jménem. Každá závislost je uvedena před pravidlem, které na ní závisí, a dva běhy se shodují.

docs/DOCTRINE.md lib/rules.sh test/cases/67_rule_dag.sh zaznamenané důkazy: nespuštěno
Instrukční soubory providerů jsou tenké bootstrapy, které odkazují na vrstvu AI a nenesou žádné vlastní pravidlo

Každá projekce jmenuje .ai/README.md, README.md jmenuje AGENTS.md a doctor selže na projekci, která si vypěstovala vlastní sekci pravidel nebo jmenuje id pravidla, které efektivní sada neposkytuje (případ 899). Člověk i worker se k téže vrstvě dostanou týmiž dvěma kroky.

docs/DESIGN.md lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Repozitář s rozložením před .ai se migruje jednou, výslovně, s náhledem plánu a ověřenou zálohou svého lokálního stavu a příkaz je poté idempotentní

Každý další příkaz odmítne starší rozvržení a jmenuje migrate. --dry-run vytiskne plán a nic nezapíše. Soubor, který verze nezná, se ohlásí, nikdy nesmaže; cíl, který už existuje, odmítne celý běh.

docs/CLI.md lib/migrate.sh test/cases/66_migrate_legacy.sh zaznamenané důkazy: nespuštěno
Nástroj běží pouze pro čtení z libovolného umístění a dvě umístění jedné verze se o jednom repozitáři shodují

Kopie checkoutu, nesouvisející absolutní cesta a instalace na PATH čtou tytéž soubory repozitáře a nezapisují nic do distribuce, jejíž hash je po každém příkazu stejný. Kořen distribuce se odvozuje ze vstupního bodu, nikdy z prostředí.

docs/DESIGN.md lib/common.sh test/cases/65_tool_root_independence.sh zaznamenané důkazy: nespuštěno
To, co nástroj ví sám o sobě, se zapisuje jednou a všude jinde se odvozuje; druhá kopie je selhání testu

Hodnoty politiky nemají výchozí hodnoty na straně čtenáře, stavy tvrzení se deklarují v matici, fixtures webu odvozují své vstupy z generátoru a každý příkaz, doktrína i tvrzení se kontroluje proti seznamu čtenému z dispatch tabulky nebo registru, a ne zapsanému do testu.

docs/CONCEPTS.md lib/doctor.sh test/cases/28_no_hardcoded_values.sh zaznamenané důkazy: nespuštěno
Veřejný povrch příkazů je deklarován a srovnáván s dispatcherem

Registr je autorita pro to, co příkaz znamená; bin/majordomus zůstává autoritou pro to, co běží. Příkaz předaný bez záznamu i záznam, který nic nepředává, oba selhávají. Příkaz je veřejný právě tehdy, když ho uvádí text použití, kontrolováno oběma směry.

docs/DYNAMICITY.md share/commands.yaml test/cases/30_command_registry.sh zaznamenané důkazy: nespuštěno
Každý veřejný příkaz má behaviorální test a negativní test, vypočtené, ne zapamatované

Požadavek se odvozuje z registru, takže příkaz přidaný zítra dluží pokrytí od té chvíle. Pokrytí se deklaruje v hlavičkách jednotlivých případů, ne odhaduje, protože negativní aserce využívající stdin a smyčka případu povrchu jsou pro každé skenování neviditelné.

docs/DYNAMICITY.md test/cases/31_command_coverage.sh test/cases/31_command_coverage.sh zaznamenané důkazy: nespuštěno
Slovník událostí ledgeru je uzavřený, na vstupu i na výstupu

share/events.yaml deklaruje každý název, příkaz, který ho vysílá, a povinné klíče jeho obsahu. Neregistrovaný název je odmítnut při zápisu, odmítnut jako filtr historie a ohlášen příkazem history --validate, pokud je už uložen.

docs/SCHEMAS.md lib/common.sh test/cases/33_event_registry.sh zaznamenané důkazy: nespuštěno
Záznam úlohy jmenuje checkout, kterému patří, a jiný checkout se nikdy nepodřizuje jeho rozsahu

Záznam je lokální pro checkout a nikdy se nesleduje, takže necestuje přes git; ten, který dorazí jinou cestou, se pozná podle worktree, které jmenuje. check, finish --check a watch cizí záznam hlásí a nic z něj nevynucují; finish jej odmítne zapsat. Záznam z doby před zavedením pole se bere jako lokální, takže upgrade neobarví instalaci načerveno.

docs/SCHEMAS.md lib/check.sh test/cases/27_foreign_task.sh zaznamenané důkazy: nespuštěno
Blokující otázka blokuje dál i poté, co se práce předá nové úloze

Kontrola čte každou nevyřešenou položku v úložišti, a ne jen položky aktivní úlohy, takže předávka nemůže vyprat blokátor. Úložiště je lokální pro checkout, takže otázky, které kontrola vidí, jsou ty položené v této pracovní kopii. Odmítá se jen dokončený finish; blocked, partial, no_match a failed jsou poctivá nedokončení a odmítnuta nejsou. Libovolná úloha smí vyřešit libovolnou otázku. Alternativy - přenést otázku s předávkou nebo podmínit kontrolu překryvem rozsahu - byly v M001 zamítnuty s případem, který každá z nich řeší špatně.

docs/CONTINUITY.md lib/check.sh test/cases/50_blocker_across_handover.sh zaznamenané důkazy: nespuštěno
To, co kompilátor kontextu vybere z toho, co shledal relevantním, se počítá v tokenech pojmenovaného tokenizeru a zaznamenává se, nikdy neodhaduje

Měří se výběr, ne úspory. Zaznamenává to `majordomus economics measure`; metrika nese vlastní vyjádření, čím není.

docs/ECONOMICS.md apps/majordomus-cli/src/economics/context.rs test/cases/430_economics.sh zaznamenané důkazy: nespuštěno
Veličina o tokenech, kontextu nebo nákladech zapsaná do ručně psané prózy je odmítnuta a tvrzení vázané na metriku nelze zaručit, dokud její důkazy neobstojí

`majordomus economics check` skončí s kódem 10 a pojmenuje každé zjištění; čísla, která čtenáři vidí, se generují ze zaznamenaných běhů do docs/generated/economics.* a do dat webu.

docs/ECONOMICS.md apps/majordomus-cli/src/economics/claims.rs test/cases/431_economics_claims_gated.sh zaznamenané důkazy: nespuštěno
Milníky a úkoly jsou kanonické soubory repozitáře a klíč, který nikdo nečte, je chyba

Stejné pravidlo allowlist, pod kterým žijí politika a profily. Název souboru je id; záznam, který si odporuje se svým vlastním názvem souboru, je odmítnut, ne uveden do souladu.

docs/SCHEMAS.md lib/project.sh test/cases/40_project_model.sh zaznamenané důkazy: nespuštěno
Stav úkolů a milníků se odvozuje ze zaznamenaných faktů a nikde se neukládá

Úkol zaznamenává started_at, verified_at, completed_at, cancelled a své důkazy. BLOCKED, READY, ACTIVE, VERIFY, DONE a CANCELLED z toho a ze stavu jeho závislostí vyplývají. `status` není pole, takže jeho zápis je neznámý klíč.

docs/PLANNING.md lib/project.awk test/cases/41_project_status.sh zaznamenané důkazy: nespuštěno
Cyklus, závislost sama na sebe a závislost na neexistujícím úkolu jsou každé odmítnuty jmenovitě

Kahnovo vrstvení; hlášené jsou úkoly, které z grafu nikdy nevystoupí. Poškozený graf způsobí selhání doctor a watch ho ohlásí jako drift.

docs/PLANNING.md lib/project.awk test/cases/42_dag_waves.sh zaznamenané důkazy: nespuštěno
Vlny provádění se počítají z grafu a úkoly v jedné vlně, které sahají na stejné cesty, se hlásí jako serializované

Sdílení vlny je pro souběžnost nutné, ale nestačí. Překrývající se deklarovaný rozsah se serializuje konzervativně, protože falešná serializace stojí čas a falešná paralelnost stojí konflikt.

docs/PLANNING.md lib/project.awk test/cases/42_dag_waves.sh zaznamenané důkazy: nespuštěno
Úkol nelze dokončit, dokud chybí požadovaný důkaz

Důkazem je příkaz a jeho výsledek, nebo artefakt. Vyprávění se odmítá. Úkol, jehož completed_at je nastaveno, ale jehož důkazy jsou neúplné, se odvozuje jako VERIFY, nikdy DONE.

docs/PLANNING.md lib/plan.sh test/cases/41_project_status.sh zaznamenané důkazy: nespuštěno
Plán rozvoje se odvozuje ze stavu milníků a žádný dokument nesmí být jeho druhou autoritou

Pořadí je topologický rank grafu milníků, takže nikde neexistuje seznam verzí. Dokud přežívá ručně psaná tabulka plánu rozvoje, doktrína ji vůči modelu hlídá v obou směrech; jakmile zmizí, kontrola platí triviálně, což je právě regrese, kterou má odmítnout.

docs/ROADMAP.md lib/doctor.sh test/cases/49_roadmap_doctrine.sh zaznamenané důkazy: nespuštěno
Milníky a úkoly na GitHubu se generují z kanonického modelu a ručně upravená generovaná oblast se hlásí, ne přepisuje

Adaptér leží ve scripts/, protože samotný nástroj nevolá žádnou síť, což dokazuje test/cases/08_no_forbidden_constructs.sh. Počáteční značka nese hash záznamu, z něhož byl vygenerován, což odlišuje přesunutý plán od ruční úpravy; druhá značka nese identitu záznamu, takže titulek, který člověk přepíše, ji nemůže osiřet. Toto tvrzení se týká toho, co adaptér vykresluje a odmítá. Zda remote skutečně přijal, je jiná otázka a odpovídá na ni tvrzení github-projection-gated.

docs/PLANNING.md scripts/github-sync test/cases/45_github_projection.sh zaznamenané důkazy: nespuštěno
Projekce, která přestane být aplikována, shodí build, a kontrola, která se nedokáže dostat ke GitHubu, to oznámí, místo aby prošla

Adaptér končil kódem 11 při driftu od svého vzniku a nic ho nevolalo, takže projekce během pěti dnů zchátrala na desetinu modelu, zatímco každé sestavení bylo zelené. Kontrola rovnou odmítá behind, edited, conflict, unmanaged, state a milestone a hlídá nahromaděný dluh nepromítnutých záznamů proti .ai/repo/ci/github-drift-baseline.txt, který smí klesat a nikdy růst. Jediný drift, který hlásí bez odmítnutí, je drift, který způsobila hlava větve nebo mladé přistání samo, a ten pokrývá projected-record-edit-is-landable.

docs/PLANNING.md scripts/ci/github-check test/cases/97_github_gate.sh zaznamenané důkazy: nespuštěno
Pull request, který upravuje promítnutý záznam plánu, není odmítnut jen proto, že GitHub úpravu ještě nezobrazuje, a trunk je za to odmítnut, jakmile uplyne deklarované okno

GitHub ukazuje plán trunku a nic jiného, takže záznam, který pull request upravuje, tam zaostává, dokud se pull request nesloučí a přistání jej neaplikuje (.github/workflows/github.yml). Kontrola hlásí behind, state, milestone a closed jako PENDING u záznamů, které hlava od své merge base změnila, a na trunku u záznamů, které se změnily v přistání mladším než apply.window v .ai/repo/ci/github.yaml. Záznam se změnil, když se liší jeho soubor nebo jeho vykreslení. Drift na jakémkoli jiném záznamu se odmítá jako dřív, stejně jako každý záznam, když změnu nelze změřit.

docs/PLANNING.md scripts/ci/github-check test/cases/1038_a_head_is_judged_against_what_it_changes.sh zaznamenané důkazy: nespuštěno
Fáze záměru se odvozuje z milníků, které jej realizují, a každé kritérium z knihy důkazů; záměr je naplněn, jen dokud má každé kritérium aktuální úspěšný běh

O záměru se neukládá nic kromě jeho výroku. Úspěšný běh při otevřeném milníku kritérium splňuje, ale nic neuspokojuje; uzavření milníku je uspokojí; změna testu po jeho běhu zastará důkazy a záměr se vrací k ověřování, a selhávající běh také není důkaz, to vše bez doteku souboru záměru. `majordomus intent list`, `intent show`, HTTP API a nástroje MCP odpovídají ze stejného odvození.

docs/PLANNING.md apps/majordomus-cli/src/intent.rs test/cases/367_an_intent_is_satisfied_only_by_evidence.sh zaznamenané důkazy: zastaralé
Záměr, jehož kritérium jmenuje důkaz, který se nikam nevyřeší, se odmítne s uvedením jména

`majordomus intent validate` skončí s kódem 10 a `unresolved_evidence_ref`, který jmenuje záměr, a spouští jej kontrola intent-check. Milník nebo položka správy, která se nerozřeší na nic, je odmítnuta stejně. Odkaz na nic by jinak navždy vypadal jako plánovaný záměr.

docs/PLANNING.md apps/majordomus-cli/src/intent.rs test/cases/367_an_intent_is_satisfied_only_by_evidence.sh zaznamenané důkazy: zastaralé
Jakmile pod záměrem existuje práce, odmítne se s uvedením jména kritérium, kterému neslouží žádný úkol, úkol pod jeho milníky, který neslouží ničemu, i odkaz na neexistující kritérium

Úkol jmenuje kritérium, kterému slouží, v `serves`; pokrytí od kritéria k úkolu se odvozuje při každém čtení a vypisuje ho `majordomus intent coverage` spolu s důvodem, proč každý úkol existuje. Záměr zatím bez práce je `intent_not_planned`, varování, protože tak začíná každý záměr.

docs/PLANNING.md apps/majordomus-cli/src/intent_plan.rs test/cases/386_a_plan_is_held_to_its_intent.sh zaznamenané důkazy: zastaralé
Mezera, která nechává kritérium bez odpovědi, se odmítne a úkol sloužící záměru, který začal bez kritiky nebo při otevřeném blokujícím nálezu, neprojde validací záměru

Odmítnutí je `majordomus intent validate` a kontrola intent-check po startu. Samotný `plan start` uspěje; odmítnutí startu je intent-refused-at-plan-start, které je plánováno. Majordomus nezapisuje ani jeden záznam. Worker pozoruje a kritizuje a repozitář odmítá to, co do sebe nezapadá.

docs/PLANNING.md apps/majordomus-cli/src/intent_review.rs test/cases/386_a_plan_is_held_to_its_intent.sh zaznamenané důkazy: zastaralé
Práce realizující záměr se spojuje napříč relacemi, poskytovateli a předávkami a záměr, jehož milníky jsou všechny uzavřené, zatímco důkaz kritéria selhává, se odmítne s uvedením tohoto kritéria

`majordomus intent realization` skončí s kódem 10 a `closed_work_contradicted` a spouští jej kontrola intent-realization; `intent explain` říká, proč záměr stojí tam, kde stojí. Každý odkaz říká, jak je znám: deklarovaný, pozorovaný, odvozený nebo usuzovaný. Uzavřená práce, která je pouze neprokázaná, a úkol uzavřený, zatímco kritérium, kterému slouží, není splněno, jsou varování, nikoli odmítnutí.

docs/PLANNING.md apps/majordomus-cli/src/intent_realization.rs test/cases/388_an_intent_is_realised_across_providers_and_held_to_reality.sh zaznamenané důkazy: zastaralé
Zeptáte-li se před prací na úkolu, `intent preflight` jmenuje záměry, kterým úkol slouží, s platnou správou, nebo odmítne s uvedením příčiny

`majordomus intent preflight --issue <id>` (nebo `--path`) sleduje kritéria, která úkol deklaruje v `serves`, nikdy jen jeho milník, a každý odkaz posuzuje podle pokrytí, z něhož vychází `intent validate`. Odpovídá `serves` (exit 0), když platí každý odkaz a každý sloužený záměr má kritiku bez otevřeného blokujícího nálezu, `maintenance` (exit 0) pro úkol, který neslouží ničemu pod milníkem, jejž nejmenuje žádný živý záměr, a `refused` (exit 10) se jmenovanou příčinou: unknown_issue, no_issue_covers_paths, issue_serves_nothing, serves_another_intent, serves_unknown_criterion, intent_not_critiqued nebo open_blocking_finding. Nástroj MCP odpovídá totéž. `majordomus start` a `plan start` se ptají téhož joinu přes `intents.binding` (intent-in-session-context, intent-refused-at-plan-start).

docs/PLANNING.md apps/majordomus-cli/src/intent.rs apps/majordomus-cli/tests/intent.rs zaznamenané důkazy: zastaralé
Cockpit zobrazuje každý záměr s odvozenou fází na /cockpit/intents a kritéria, důkazy, sloužící úkoly a realizující práci jednoho záměru na /cockpit/intents/<id>

Obě stránky vykreslují schopnosti intent-realization a samy nic nerozhodují. Každé kritérium odkazuje na testovací objekt, který jmenuje, a na úkol, který mu slouží; realizující práce nese své poskytovatele a původ svého odkazu a záměr, který repozitář nedrží, je 404.

docs/COCKPIT.md apps/majordomus-cli/src/cockpit/intents.rs apps/majordomus-cli/tests/intent_realization.rs zaznamenané důkazy: zastaralé
Ú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 pracovníkovi, že se záměr změnil

`majordomus start --issue <id>` (nebo `--intent <id>`) se zeptá `intents.binding`, čemu úloha slouží, a zaznamená, co bylo jmenováno, dvěma piny; `majordomus context` pak při každém volání nese sekci INTENT čtenou z vazby - výrok, invarianty, sloužená kritéria se stavem jejich důkazů, kritiku a mezeru - a uvede `unknown`, když vazbu nelze přečíst. Předávka vazbu připíná a `handover --resolve` odpovídá `unchanged`, `evidence_moved` nebo `plan_changed` (test/cases/961). Úloha, která nic nejmenuje, se briefuje bez záměru a při politice `intent.binding: off` se neptá nic. Záznam drží jen jména a hashe: neukládá se žádná fáze, verdikt ani kritérium (ADR 0111).

docs/PLANNING.md lib/intent_binding.sh test/cases/960_a_task_starts_bound_to_what_it_serves.sh zaznamenané důkazy: nespuštěno
Kde politika vyžaduje navázání, zahájení úkolu nebo úlohy, která slouží záměru bez kritiky nebo s otevřeným blokujícím nálezem, se odmítne už při zahájení, ne až dodatečným hlášením

Pod politikou `intent.binding: required` se `majordomus plan start`, schopnost `plan.transition` i `majordomus start` ptají `intents.binding` a odmítnou odmítnutou vazbu, týmž slovním zněním v obou plánovacích enginech, a nic nezapíšou; odpověď, kterou nelze přečíst, také odmítne. Pod `advisory` se odmítnutá vazba úlohy hlásí a úloha startuje; při chybějícím klíči nebo `off` `plan start` uspěje jako dřív a `intent validate` poté jmenuje `executing_without_critique` nebo `executing_with_open_blocker` (intent-plan-reviewed). Politika tohoto repozitáře je `advisory`.

docs/PLANNING.md apps/majordomus-cli/src/intent_binding.rs test/cases/962_plan_start_asks_the_binding_in_both_engines.sh zaznamenané důkazy: nespuštěno
Spustitelný program v Rustu servíruje klientovi MCP vrstvu AI repozitáře přes stdio, přičemž na stdout jsou jen rámce protokolu

Jeden proces na klienta, živý, dokud žije jeho roura; diagnostika jde na stderr; relace nechá repozitář byte po bytu totožný. Vlastní sada crate, tests/mcp_stdio.rs, podřizuje tytéž rámce týmž pravidlům.

docs/MCP.md apps/majordomus-cli/src/mcp/protocol.rs test/cases/72_rust_mcp.sh zaznamenané důkazy: nespuštěno
O tom, co server MCP servíruje, rozhoduje manifest, deklarované třídy zdrojů a front matter každého souboru, takže objekt přidaný do vrstvy se servíruje bez změny executable

Sekvence přidat, odebrat a rozbít skrz sestavenou binárku je tests/external_extension.rs v crate; shellový případ dokazuje, že vrstva, kterou init zapíše, se servíruje a že pravidlo do ní přidané se objeví.

docs/MCP.md apps/majordomus-cli/src/index.rs test/cases/72_rust_mcp.sh zaznamenané důkazy: nespuštěno
Soubor vrstvy, který server MCP nedokáže přečíst, je vyloučen s diagnostikou uvádějící jeho cestu a index říká, že je degradovaný, nikdy ne potichu menší

Dva soubory jednoho druhu, které si nárokují jednu identitu, jsou oba vyloučeny a oba pojmenovány. --strict odmítne obsluhovat degradovanou vrstvu; --inspect u ní skončí s kódem 10.

docs/MCP.md apps/majordomus-cli/src/index.rs test/cases/72_rust_mcp.sh zaznamenané důkazy: nespuštěno
Každá schopnost Rust executable je definována jednou a registr odmítne duplicitní id nebo kolidující název projekce, přičemž pojmenuje obě strany

Dva zdroje, vestavěné spustitelné soubory a objekty vrstvy, se setkávají v jednom registru sestaveném na jednom místě; id, názvy a URI MCP, HTTP routes a cesty CLI jsou každé jedinečné, jinak se registr nesestaví. Testy crate v tests/registry.rs pokrývají každou kolizi.

docs/CAPABILITIES.md apps/majordomus-cli/src/capability/registry.rs apps/majordomus-cli/tests/registry.rs zaznamenané důkazy: nespuštěno
MCP, HTTP, OpenAPI, Swagger UI, příkazy capabilities a generovaná reference se odvozují z registru a změna jedné definice se dostane ke všem z nich

Žádná projekce nedeklaruje vlastní název, popis, schéma ani route; tests/projections.rs dokazuje, že každá deklarovaná projekce je přítomna a žádná není osiřelá a že změněný vstupní typ a popis dorazí do schématu MCP, operace OpenAPI i reference. MCP a HTTP odpovídají na tentýž handler shodně.

docs/CAPABILITIES.md apps/majordomus-cli/src/http/openapi.rs test/cases/76_capabilities_projections.sh zaznamenané důkazy: nespuštěno
Jak se čte každý deklarativní druh a jaké klíče smí nést, jsou data čtená za běhu a repozitář přidá druh s jeho JSON Schema bez změny kódu

share/kinds.yaml a share/schemas/*.schema.json patří distribuci; .ai/repo/knowledge/kinds.yaml a schemas/ patří repozitáři; název deklarovaný oběma je chyba jmenující oba soubory. Allow-listy shellového nástroje se generují z týchž schémat.

docs/CAPABILITIES.md apps/majordomus-cli/src/metadata/mod.rs test/cases/76_capabilities_projections.sh zaznamenané důkazy: nespuštěno
Každý generovaný artefakt deklaruje dokument, který promítá, kódování, ve kterém je zapsán, schéma, které jeho obsah splňuje, a svůj zdroj, a strukturovaný dokument se zapisuje v každém kódování, ve kterém je commitnut, z jedné hodnoty

JSON, YAML a Markdown dokumentu jsou vykreslení jedné hodnoty, takže se nemohou rozcházet; každé nese hlavičku původu ve formě, kterou jeho kódování dovoluje; index celé sady, docs/generated/artifacts.json, je sám generovaný a čte jej zpět artifacts.list.

docs/CAPABILITIES.md apps/majordomus-cli/src/generate.rs test/cases/52_generated_artifact_typing.sh zaznamenané důkazy: nespuštěno
Odevzdané projekce, dokument OpenAPI, reference schopností a povolené seznamy se znovu generují z registru a schémat a generate --check zastaralou odmítne

Při regeneraci bajtově shodné, bez časových značek, bez absolutních cest; --check nic nezapisuje a skončí s kódem 10, přičemž jmenuje každý soubor, který se liší nebo chybí. Spouští to CI.

docs/CAPABILITIES.md apps/majordomus-cli/src/generate.rs test/cases/76_capabilities_projections.sh zaznamenané důkazy: nespuštěno
Jeden sdílený server obsluhuje checkout: první majordomus mcp naváže HTTP na loopbacku se Swagger UI a MCP přes HTTP vedle své relace stdio a zaloguje URL, každý další klient tohoto checkoutu se k němu připojí a skončí, když odejde poslední klient

Volba je jeden soubor leasu pod .ai/local/state/mcp/, vytvořený atomicky a odstraněný při ukončení; zastaralý lease se převezme; přemostěný klient, jehož server zanikne, převezme nebo se znovu připojí, aniž by si toho klient všiml. Testy crate v tests/mcp_shared.rs pokrývají stranu socketu; --standalone drží jeden proces na klienta. Checkout, nikoli repozitář - propojený worktree je vlastní checkout a volí si vlastní server (ADR 0035), což znamenalo, že změřeno 2026-09-11 běželo sedm živých serverů nad jedním repozitářem git. Slovo bylo zde do ADR 0044 chybné; spolupráci napříč repozitářem činí sesbíraná nástěnka mcp-peers, ne sdílený proces.

docs/MCP.md apps/majordomus-cli/src/lease.rs test/cases/90_mcp_shared_server.sh zaznamenané důkazy: nespuštěno
Nic, co klient zanechá, nezamkne jiného klienta ze sdíleného serveru; poškozený, prázdný, zastaralý nebo opuštěný zámek se převezme a pojmenuje, klient, který nemůže sdílet, je obsloužen samostatně s důvodem v logu a signál odstraní zámek dřív, než server zanikne

Volba klasifikuje lease při každém pokusu a je časově omezená; commands/mcp.rs degraduje na samostatnou relaci, když nelze použít lease nebo server; SIGTERM, SIGINT a SIGHUP odpojí lease v handleru. Testy crate v tests/mcp_shared.rs dokazují každou cestu nad skutečnými procesy a případ 90 podstrčí poškozený lease za launcher. Doktrína je project.shared-server-resilience.

docs/MCP.md apps/majordomus-cli/src/lease.rs apps/majordomus-cli/tests/mcp_shared.rs zaznamenané důkazy: nespuštěno
Server, jehož zámek byl převzat, to říká na koncovém bodu, který sondují všichni čtenáři, odmítá přijmout nového klienta a hlásí, že to, co popisuje jeho health, je jiný proces; relace, které už měl, pokračují a skončí s nimi

Samotné převzetí je správné, hlídač zastaralého spustitelného souboru udělal svou práci; bez vlastníka zůstaly jeho důsledky. Vystřídaný proces si ponechal svůj socket, svou nástěnku peerů i svou generaci vrstvy a na GET / odpovídal stejným name a repository_id jako držitel leasu, takže na něm prošel každý test živosti v systému. Změřeno 2026-09-10 - dva servery jednoho checkoutu, jeden lease a relace, jejíž prostředí nesla starší adresu a četla nástěnku s jedním peerem, zatímco sdílená nástěnka měla dva. GET / nyní nese leaseholder (lease::LEASEHOLDER_KEY, čte ho lease::probe, takže zapisovatel a čtenář se nemohou rozejít), nový initialize je odmítnut s 409 lease_lost a jménem launcheru a kontrola serveru v health.report varuje, že tento proces není serverem, který popisuje. Server příliš starý na to, aby na otázku odpověděl, probe záměrně přijme - jeho odmítnutí by převzalo živý server, a tak se stane, že jeden checkout má servery dva. Doktrína je project.shared-server-resilience.

docs/MCP.md apps/majordomus-cli/src/lease.rs apps/majordomus-cli/tests/lease_lost.rs zaznamenané důkazy: nespuštěno
Každý klient připojený k serveru checkoutu je peer pojmenovaný vlastním initialize a majordomus_peers vypíše každého pracovníka repozitáře — jeho vlastní nástěnku i nástěnku každého dalšího checkoutu, každý peer označený worktree, ve kterém pracuje — zatímco majordomus_announce sděluje ostatním, na čem pracuje a kterých cest se chystá dotknout

Dvě schopnosti registru, peers.list (dotaz) a peers.announce (jediný příkaz), promítnuté jako každá jiná; každá nástěnka je pamětí jednoho procesu a s ním zaniká. peers.list sbírá - vyjmenuje checkouty, které git eviduje, přečte vlastní nástěnku z paměti a zeptá se serveru každého dalšího checkoutu na jeho vlastní nástěnku (checkouts=this, což drží sběr jen na jeden skok) a v boards a complete ohlásí, které checkouty pokryl a zda je dokázal přečíst všechny. Před ADR 0044 odpovídal nástěnkou jednoho checkoutu, zatímco bootstrap řekl každému workeru, že viděl repozitář; změřeno 2026-09-11, devět agentů napříč šedesáti worktrees četlo každý nástěnku, na které byl jen on sám. ID peera je pozice na jedné nástěnce a při opětovném připojení se přidělí znovu; checkout, který peer nese, je jeho trvalá polovina. Oznámení jsou informativní a zanikají s připojením; rozsah vynucuje záznam úlohy shellového nástroje, ne zde.

docs/MCP.md apps/majordomus-cli/src/peers.rs test/cases/250_the_board_is_repository_wide.sh zaznamenané důkazy: nespuštěno
Klient MCP otevřený v repozitáři spustí server sám a podle potřeby sestaví spustitelný program, přes konfigurace klientů v kořeni a bin/majordomus-mcp

.mcp.json (Claude Code), .gemini/settings.json (Gemini CLI) a .codex/config.toml (Codex) pojmenovávají tentýž launcher, který nic nezapisuje na stdout a předává všechny argumenty příkazu majordomus mcp; build řídí MAJORDOMUS_BIN, MAJORDOMUS_BUILD_PROFILE a MAJORDOMUS_NO_BUILD.

docs/MCP.md bin/majordomus-mcp test/cases/90_mcp_shared_server.sh zaznamenané důkazy: nespuštěno
Klient, který spustí server MCP z checkoutu bez spustitelného programu nebo bez takového, který lze sestavit, je obsloužen nainstalovaným release a je mu to řečeno, místo aby byl odmítnut

Jen `mcp` má fallback; každý jiný příkaz stále končí kódem 12. Fallback běží po buildu, který mohl uspět, nebo bez něj, když chybí cargo nebo je volného místa méně než práh, a na stderr uvádí release i důvod. Soubor uvnitř repozitáře a soubor, který neodpovídá na --version, se nikdy nepovažuje za nainstalovaný release. MAJORDOMUS_MCP_BUILD=1 vrací build přispěvateli. Relace z 2026-10-16, která začala jako jediný worker repozitáře (ADR 0156), začala právě zde, s kódem 12 při 4,5 GB volných proti prahu 5120 MB.

docs/MCP.md bin/majordomus-cli test/cases/3177_a_client_always_gets_a_server.sh zaznamenané důkazy: nespuštěno
Holé claude v dozorovaném repozitáři začíná promptem zahájení relace repozitáře jako první zprávou a běh s argumentem, mimo takový repozitář, s vypnutím nebo s promptem, který nelze vykreslit, zůstane přesně tak, jak byl

Ověřeno v bash a zsh proti atrapám claude a majordomus; skutečný claude přijímá prompt jako poziční argument (claude --help). Obaluje se pouze Claude Code; Codex a Gemini se netvrdí, dokud nejsou ověřeny proti skutečnému nástroji. Instalátor soubor nenačítá (source), protože se nedotýká ničeho mimo svůj prefix.

docs/MCP.md share/shell/session-start.sh test/cases/3221_a_bare_session_start_joins_the_cluster.sh zaznamenané důkazy: nespuštěno
Tag s předběžnou částí se publikuje jako prerelease, zaznamená se na kanálu prereleasů a nikdy se nevyhodnotí jako stabilní release, takže nepřipnutý instalátor a uzel sledující stabilní verzi si ponechají nejvyšší stabilní verzi

Drží se na třech místech, která se musí shodovat. scripts/release-record odvodí kanál ze tagu a odmítne stable u tagu s příponou; release.yml pro něj předává --prerelease --latest=false; Release::is_stable_candidate odmítne jakoukoli verzi s pre-release částí bez ohledu na to, co říká její záznam, a Release::findings hlásí chybné označení. Rozlišení a precedenci semver (alpha.2 před alpha.10, build metadata se ignorují) dokazují distribuční testy crate, které případ nespouští. Nalezeno auditem před v1.0.0-alpha.1, kdy by pipeline zveřejnila alpha jako stabilní release.

docs/DISTRIBUTION.md scripts/release-record test/cases/3179_a_prerelease_is_never_published_as_stable.sh zaznamenané důkazy: nespuštěno
URI majordomus:// se rozlišuje stejně přes čtení zdroje MCP, nástroj majordomus_get i HTTP routu objektu a majordomus://repository odpovídá na repository.info jako JSON dokument označený builtin

Jedna funkce, objects::resolve, je rozlišení pro každou projekci; soubor vrstvy je odpovězen označený declarative, dotaz s expozicí zdroje označený builtin s odpovědí jako daty a textem zdroje vedle; neznámé URI je všude not found; registr odmítne dotaz čtený jako zdroj, jehož vstup cokoli vyžaduje. Testy crate v tests/objects.rs pokrývají každou větev na úrovni knihovny.

docs/MCP.md apps/majordomus-cli/src/capability/builtin/objects.rs apps/majordomus-cli/tests/http_serve.rs zaznamenané důkazy: nespuštěno
Každá kontrola, kterou musí Rust executable projít, je jeden skript, scripts/rust-check, a CI tento skript spouští při každé změně, která může zasáhnout crate

Formát, lint s varováními jako chybami (veřejná položka bez dokumentace je jedním z nich), sady testů s příklady v dokumentaci, rustdoc s odmítnutými varováními, sestavení měření výkonu, vlastní validace registru, potvrzené projekce v synchronizaci, úplné pokrytí měření výkonu a pokrytí řádků nad potvrzeným minimem; --ci přidá kontrolu měření výkonu proti základní hodnotě platformy a pokrytí ponechá vlastní úloze, --integration spustí samotné kontroly registru pro změnu mimo crate. Úloha rust ve workflow spouští samotný skript v režimu, který zvolil plán, takže neexistuje druhý seznam, který by se rozešel v pořadí; případ čte skript, workflow a justfile a selže, když se neshodují; je-li přítomen toolchain, spouští i příklady v dokumentaci a sestavuje měření výkonu.

.ai/repo/rules/project/rust-cli-evidence.v1.md scripts/rust-check test/cases/77_rust_evidence.sh zaznamenané důkazy: nespuštěno
Pokrytí Rust crate se měří bez testovacího kódu ve jmenovateli, při každé změně, která může crate zasáhnout, a při každém pushi do master, a build selže pod hranicí ve scripts/rust-coverage-threshold nebo pod vlastní hranicí domény relací a kontinuity ve scripts/session-coverage-threshold

cargo-llvm-cov přes všechny cíle, exportovaný jako JSON a následně zpracovaný tak, že tests/, benches/, examples/ i každá inline položka `#[cfg(test)]` opustí zlomek na obou stranách. --ignore-filename-regex druhé nezvládne, proto je to skript a ne přepínač. Dvě minima, každé jedno celé číslo v samostatném souboru, každé čtené CI, scripts/rust-check i just coverage a každé západka — pokrytí změřené při jejím nastavení, které smí růst a nikdy klesat; mez minima crate je FLOOR_BOUND ve scripts/ci/rust-command-check (pravidlo project.rust-command-tested-in-file) a případ 77 ji tam čte. Doména, kterou druhé měří, je deklarována ve scripts/session-coverage-domain a skript odmítne doménu jmenující soubor, který export nenese, takže její zúžení kvůli zvýšení čísla je viditelná úprava. Pravé pokrytí větví vyžaduje nightly toolchain; nahrazuje je pokrytí regionů a hlásí se pod tímto jménem. Úloha coverage běží, když plán zvolí kontrolu rust-coverage, kterou volí třídy rust a share v .ai/repo/ci/gates.yaml a každý úplný plán.

.ai/repo/rules/project/rust-cli-evidence.v1.md scripts/rust-coverage test/cases/77_rust_evidence.sh zaznamenané důkazy: nespuštěno
Cesty Rust executable, které se škálují s repozitářem, mají criterion benchmarky, které se sestaví při každém pushi, a každá spustitelná schopnost deklaruje svou politiku měření výkonu, vyžadovanou nebo prominutou z typovaného důvodu

YAML subset a front matter, porovnávání glob vzorů, index, registr, dokument OpenAPI, jeden výpis MCP a jedno volání schopnosti (benches/projections.rs); router, bridge a sdílený server (benches/shared.rs). Čísla se hlásí, netvrdí se; žádný limit latence se neslibuje, dokud se nezměří na CI. Makro capability! nepřeloží spustitelnou schopnost bez případů měření výkonu, registr počítá povinné i prominuté a případ čte politiku každé spustitelné schopnosti zpět přes capabilities list.

.ai/repo/rules/project/rust-cli-evidence.v1.md apps/majordomus-cli/benches/projections.rs test/cases/77_rust_evidence.sh zaznamenané důkazy: nespuštěno
Schopnost Rust executable se deklaruje jednou a skládá se do svého modulu, kořen skládá moduly a registr odmítne schopnost mimo jmenný prostor jejího modulu

capability!, module! a compose_modules! vytvářejí prosté hodnoty předávané builderu registru; přidání schopnosti do existujícího modulu se dotkne jen souboru onoho modulu a MCP, HTTP, OpenAPI, Swagger UI, CLI, cíle měření výkonu, cache i generovaná reference ho následují. Testy crate v tests/registry.rs drží invarianty, tests/projections.rs propagaci.

docs/CAPABILITIES.md apps/majordomus-cli/src/capability/module.rs apps/majordomus-cli/tests/registry.rs zaznamenané důkazy: nespuštěno
Každá externě volatelná operace Rust executable je cílem benchmarku se jmenovatelem generovaným z registru a chybějící případ shodí strukturní kontrolu

Každý povinný spustitelný soubor je cílem přímo i na každém transportu, který jeho expozice deklaruje, s případy, které poskytuje jeho vstupní typ; vlastní operace transportů jsou cíle deklarované jednou; prominutí jsou typovaná a nikdy se nepočítají. Runnery měří executor, skutečný loopback socket a skutečného potomka majordomus mcp; výsledky jsou majordomus/benchmark-result/v1; baseline je pro každou platformu pod .ai/repo/benchmarks/rust/ a politika jsou data.

docs/CAPABILITIES.md apps/majordomus-cli/src/bench/coverage.rs apps/majordomus-cli/tests/bench_units.rs zaznamenané důkazy: nespuštěno
Po spuštění žádný požadavek MCP ani HTTP na spustitelný program v Rustu neprohledává repozitář, nesestavuje index ani registr, neodvozuje schéma ani nesestavuje projekci, což dokazuje perf.counters

Čítače platné pro celý proces, každý zvyšovaný na jednom pojmenovaném místě a poskytovaný jako perf.counters přes každý transport; tests/hot_path.rs pošle stovky požadavků skutečnými transporty a vyžaduje, aby startovací čítače zůstaly beze změny; výpisy MCP a dokument OpenAPI se připravují jednou.

docs/CAPABILITIES.md apps/majordomus-cli/src/perf.rs test/cases/91_canonical_architecture.sh zaznamenané důkazy: nespuštěno
Cachovaná schopnost Rust executable vrací stejnou hodnotu necachovaně, za studena i za tepla, zásah cache nespouští žádný handler, chyby a příkazy se nikdy necachují a klíč nese otisk registru

Jeden exekutor pro každý transport; CachePolicy na deskriptoru; omezeno na schopnost; klíčem je kanonické id, vstup v kanonické podobě a otisk sha-256 obsahu repozitáře a deskriptorů. tests/executor.rs a proptest harness v tests/properties.rs procházejí každou cachovanou schopnost každým případem a generovanými vstupy.

docs/CAPABILITIES.md apps/majordomus-cli/src/capability/executor.rs apps/majordomus-cli/tests/executor.rs zaznamenané důkazy: nespuštěno
Provider bootstrapy, které politika deklaruje (AGENTS.md, CLAUDE.md, GEMINI.md, ...), jsou cílem majordomus generate, vykreslené z politiky a šablon providerů bajt po bajtu tak, jak je vykresluje nástroj shell, a generate --check odmítne ručně upravený či zastaralý v CI

Jeden renderer, dva vstupní body, které se shodují na každém razítku; politika je jediným vstupem (její hash a hash profilů je první hash razítka). Cíl mimo repozitář, poskytovatel bez šablony, token, který politika neumí vyplnit, a cíl always_loaded přesahující rozpočet jsou odmítnuty s důvodem a nic se nezapíše. Režim regionu ponechává hostitelský dokument mimo značky. apps/majordomus-cli/tests/providers_projection.rs pokrývá stranu fixture; CI spouští generate --check při každém pushi.

docs/CAPABILITIES.md apps/majordomus-cli/src/providers.rs test/cases/93_rust_provider_projections.sh zaznamenané důkazy: nespuštěno
Stránka Registr webu se vykresluje ze site/data/registry/registry.json, datové sady, kterou majordomus generate site odvozuje z registru a indexu s jejich otisky, a generate --check zastaralou odmítne v CI

Každý vestavěný deskriptor celý se souborem, v němž byl složen, každý modul s jeho id, každý objekt vrstvy bez jeho obsahu, každý druh se schématem, deklarované projekce poskytovatelů, příkazový řádek tak, jak jej deklaruje clap, nástroje a zdroje MCP, cesty HTTP, cíle měření výkonu, pokrytí, politika a přijaté základní hodnoty a otisky registru a indexu (majordomus-site-registry/v2); žádné vlastní časové značky, žádné absolutní cesty, žádný stav gitu. Adresář patří výhradně spustitelnému souboru v Rustu, shellový generátor webu vlastní site/data/generated/ celý, takže žádný adresář nemá dva zapisovatele. Kanonický objekt přidaný do vrstvy změní otisk a datovou sadu a bootstrapy nechá být; expozice odebraná z deskriptoru posune cesty a pokrytí a nic jiného; test sleduje každou mutaci přesně k projekci, které se týká.

docs/CAPABILITIES.md apps/majordomus-cli/src/site.rs apps/majordomus-cli/tests/projections.rs zaznamenané důkazy: nespuštěno
Změna spouští kontroly, které její cesty mohou ovlivnit, podle jednoho modelu toho, co co ovlivňuje, a změna samotné pipeline nebo cesty, kterou model nezná, spouští všechny kontroly

Kontroly, které běží vždy, jsou v každém plánu; změněná cesta vybírá kontroly každé třídy, které odpovídá, jako sjednocení; třída může eskalovat; kontrola přináší, co implikuje a co vyžaduje; plán je deterministický a pro každou kontrolu říká, proč běžela či neběžela. Workflow čte výstupy plánu a nenese vlastní seznam cest; test/cases/26_ci_wiring.sh dokazuje, že úloha každé kontroly existuje, je podmíněna plánem a verdikt ji potřebuje.

.ai/repo/ci/gates.yaml scripts/ci-plan test/cases/94_ci_plan.sh zaznamenané důkazy: nespuštěno
Stav verdiktu je zelený, jen když plánování uspělo a každá kontrola vybraná plánem proběhla v úloze, která uspěla; selhaná nebo zrušená úloha, vybraná kontrola, jejíž úloha byla přeskočena, nebo plán, který nevybral nic, je červený

Úloha verdict se spouští vždy, takže stav nikdy nezůstane viset kvůli úloze, kterou plán přeskočil, a zapisuje tabulku každé kontroly s výsledkem její úlohy a důvodem, proč byla či nebyla naplánována. Případ ji pouští s fixture plány a kontexty needs přes každou červenou podmínku. Toto tvrzení znělo do 2026-09-11 "jediný stav, který pravidlo větve vyžaduje", což předpokládalo pravidlo větve, které neexistuje - viz ci-verdict-is-required níže. To, co scripts/ci/verdict počítá, platilo vždy; to, co na něm podmiňovalo merge, ne.

docs/CI.md scripts/ci/verdict test/cases/94_ci_plan.sh zaznamenané důkazy: nespuštěno
Behaviorální sada spouští omezený počet případů najednou se sémantikou sériového běhu, případ zapisující do checkoutu se deklaruje jako exkluzivní a běží sám a paralelní fáze selže s uvedením cest, když se checkout pod ní změnil

MJ_TEST_JOBS omezuje pool (xargs -P, nikdy holý ampersand); každý případ má vlastní log; verdikty se vykreslují v pořadí jmen a celý log selhávajícího případu předchází jeho řádku; filtr, který nic nezachytí, a prázdný adresář případů jsou chyby použití v obou režimech; MJ_TEST_REPORT zapisuje pro souhrn jeden řádek na případ; test/lib.sh odmítne případ, který nestojí ve fixture, jenž pro něj vytvořilo test/run.sh, takže ručně spuštěný případ nemůže zapsat svou fixture do checkoutu. test/cases/26_ci_wiring.sh dokazuje sémantiku selhání v obou režimech na soukromém harnessu.

docs/CI.md test/run.sh test/cases/94_ci_plan.sh zaznamenané důkazy: nespuštěno
Spustitelný program v Rustu, který sestavila kontrola rust, se publikuje jako artefakt se svým původem a každý případ v Rustu spouští program, který jmenuje MAJORDOMUS_BIN, místo aby si nějaký sestavoval

scripts/rust-check --artifact DIR zkopíruje debug spustitelný soubor vedle majordomus-cli.json, který jmenuje commit, target triple, toolchain a digest Cargo.lock; workflow jej nahraje jako majordomus-cli-<target>. rust_bin v test/lib.sh předá případu MAJORDOMUS_BIN, je-li nastaveno, odmítne soubor, který není spustitelný, při nenastavení jednou sestaví cargem a požádá případ o přeskočení, není-li ani jedno; launcher bin/majordomus-mcp respektuje stejnou proměnnou.

docs/CI.md scripts/rust-check test/cases/401_the_rust_artifact_carries_its_provenance.sh zaznamenané důkazy: nespuštěno
Publikace je podmíněna vším, co může učinit publikovaný web chybným, a na nic jiného nečeká; kontroly, které rozhodují, zda se změna smí mergovat, běží vedle ní na stejném commitu, ne před ní

Publikační cesta dokazuje, že commitnutá odvozená data jsou aktuální podle hashe vstupu, staví z nich web, spouští nad výstupem každou statickou kontrolu a pushuje gh-pages, v jedné úloze spouštěné přímo pushem na master na cestách odvozených z modelu kontrol; předběhnuté běhy se ruší; sada, kontroly crate, pokrytí, sada na macOS, kontrola měření výkonu a sonda prohlížeče běží ve validate.yml na stejném commitu a podmiňují merge. Případ dokazuje spouštěč, odvozené cesty, rušení, oprávnění, že na cestě není žádná těžká kontrola a žádná neopustila validate.yml, a že build, který přeskočí generování, je byte po bytu totožný s tím, který ho nepřeskočí.

docs/GITHUB_PAGES_PERFORMANCE.md .github/workflows/pages.yml test/cases/97_pages_fast_path.sh zaznamenané důkazy: nespuštěno
Dokument OpenAPI se odvozuje, tagy jsou moduly, příklady jsou případy benchmarku, odpovědi jsou stavy routeru podle druhu, próza je jeden text sdílený všemi projekcemi a API reference webu se vykresluje z commitnutého dokumentu

Tagy z registry.modules(), příklady z BenchmarkCases schopností vůči indexu repozitáře, odpovědi z jedné stavové tabulky podle druhu, info z about.rs a manifestu crate; benches/routes.rs měří čas každé trasy týmiž případy; web promítá commitnutý dokument, vykresluje /docs/api/ a servíruje /openapi.json surový a site-check odmítne build bez nich.

docs/CAPABILITIES.md apps/majordomus-cli/src/http/openapi.rs test/cases/92_openapi_reference.sh zaznamenané důkazy: nespuštěno
To, co pracovník z repozitáře čte, je deklarováno jednou v .ai/repo/scope.yaml, vyloučení má přednost před zahrnutím a Rust executable nic mimo něj neobjevuje, neindexuje ani neservíruje

Deklarace je typovaná a validovaná schématem (share/schemas/majordomus/scope/scope.v1.schema.json; z něj se pro shellový nástroj generuje share/allow/scope.txt); repozitář, který žádnou nedeklaruje, se čte pod výchozím nastavením distribuce a říká to; nalezený soubor mimo rozsah je diagnostika out_of_scope jmenující pravidlo; sledované tajemství je varování tracked_secret; repository.scope a repository.scope_classify se promítají do MCP, HTTP a `majordomus scope`. Testy crate v tests/scope.rs pokrývají každou větev na úrovni knihovny, socketu i procesu. Doktrína je project.scope-is-declared.

docs/SCOPE.md apps/majordomus-cli/src/scope.rs test/cases/93_scope_policy.sh zaznamenané důkazy: nespuštěno
Každý veřejný příkaz je pojmenován a spouštěn aktivním případem užití, zaručené tvrzení nebo nástroj MCP bez něj je pojmenovaná mezera a politika říká, které mezery shodí doctor, check a finish

Souhrn se počítá z registru příkazů, docs/CLAIMS.yaml, registru spustitelného souboru a případů užití pod .ai/repo/use-cases/; koncept se nikdy nezapočítává. Doktrína je majordomus.use-case-coverage, řízená politikou use_cases.coverage a klíčem finish use_cases_covered.

docs/USE_CASES.md lib/usecase.sh test/cases/94_use_cases.sh zaznamenané důkazy: nespuštěno
Scénář případu užití se provede proti skutečnému nástroji v jednorázovém repozitáři, ověří se návratový kód a výstup každého kroku a web ukazuje normalizované důkazy

majordomus usecase run zapíše .ai/local/evidence/use-cases/<id>.json; scripts/generate-site-data spouští stejné scénáře a vkládá důkazy do site/data/generated/catalogue.json, takže --check dokazuje, že stránky ukazují to, co nástroj udělal. Cesty, časové značky, id, hashe a doby trvání jsou normalizovány; nic z chování ne.

docs/USE_CASES.md lib/usecase.sh test/cases/94_use_cases.sh zaznamenané důkazy: nespuštěno
Ze souborů, kterých se změna dotkla, nástroj pojmenuje dotčené příkazy, pravidla, případy užití, scénáře a behaviorální případy a vygeneruje návrh pro schopnost, kterou žádný případ užití nepokrývá

usecase impact mapuje cesty přes docs/RESPONSIBILITIES.yaml, dispatch tabulku, identity pravidel a fixtures scénářů; usecase scaffold zapisuje návrhy z registru, fixture příkazu a tvrzení, nikdy však záruku.

docs/USE_CASES.md lib/usecase.sh test/cases/94_use_cases.sh zaznamenané důkazy: nespuštěno
Živý scénář smí spouštět jen příkazy, které share/commands.yaml deklaruje jako read-only, nepojmenovává žádnou přípravu a závazek tvrdí jen tam, kde nějaký existuje; každý jiný tvar usecase validate odmítne s exit 10

Třída se čte ze share/commands.yaml, deklarace, ze které už pocházejí referenční sémantiky, takže bezpečnost je vlastností deklarace, ne pečlivosti autora (ADR 38). Krok se závazkem je ve scénáři s fixture odmítnut, protože jednorázový repozitář nic nedluží, a krok, který zároveň spouští příkaz a ověřuje závazek, je odmítnut jako ani jedno.

docs/USE_CASES.md lib/usecase.sh test/cases/359_live_scenarios.sh zaznamenané důkazy: nespuštěno
Živý scénář nevybere holé spuštění usecase, jeho důkazy se zapisují do ignorované lokální poloviny a nikdy nepovýší příkaz na pokrytý; nesplněný závazek se hlásí jako nenaplněný, nikdy jako selhání

Živý výsledek popisuje jeden strom na jednom stroji v jedné minutě, proto se zapisuje do .ai/local/evidence/live/<id>.json, a ne vedle commitnutých fixture důkazů, a pokrytí jej počítá jako jmenování příkazu, nikdy jako jeho pokrytí. Běh odděluje dva verdikty, protože selhávající fixture scénář je vada nástroje, zatímco nesplněný závazek je neprovedená práce (ADR 38).

docs/USE_CASES.md lib/usecase.sh test/cases/359_live_scenarios.sh zaznamenané důkazy: nespuštěno
Web se nasazuje jedním skriptem, scripts/site-deploy, z terminálu nebo z publikačního workflow; odmítne špinavý strom, commit, který master neobsahuje, a build, který není z HEAD, pushne site/public do gh-pages s uvedením zdrojového commitu a nepushne nic, když je výstup beze změny

Případ provede celou cestu proti lokálnímu bare remote, bez sítě; patička každé stránky jmenuje commit, takže nasazení lze ověřit pomocí curl. Workflow volá tentýž skript s --skip-build po své kontrole. Nasměrování GitHub Pages na větev je jednorázové --configure-pages. Ruční postup je .ai/repo/skills/deploy-site/SKILL.md.

docs/GITHUB_PAGES_ARCHITECTURE.md scripts/site-deploy test/cases/96_site_deploy.sh zaznamenané důkazy: nespuštěno
Commit, jehož odvozená data zaostávají za kanonickými vstupy, se odmítne dřív, než vznikne, a repozitář, který tuto kontrolu odpojí, je selháním doctor

Generátor zaznamenává hash vstupu do site/data/generated/source.json, takže `pages current` odpoví na otázku "musí se to znovu vygenerovat?" za pětinu sekundy, aniž cokoli generuje, díky čemuž může běžet při každém commitu, ne jen v CI. V seznamu vynucování politiky je deklarována jako derived-current, zapojena přes git-hook:pre-commit a doctor toto zapojení ověřuje stejně jako ostatní – takže kontrola odmítne zastaralý commit a doktrína odmítne repozitář, který kontrolu odstraní. Dříve se zastaralost projevila až po merge a ten, koho zastavila, nikdy nebyl tím, kdo ji způsobil.

docs/GITHUB_PAGES_ARCHITECTURE.md scripts/pages test/cases/56_derived_current_gate.sh zaznamenané důkazy: nespuštěno
Stránky webu o spustitelném programu v Rustu (jedna na modul, jedna na schopnost, příkazový řádek, rozhraní MCP, měření výkonu, vlastní vyprávění programu) se odvozují z manifestu registru a datové sady registru, kterou program generuje, nic nejmenuje schopnost ručně a schopnost, která do registru přibude nebo z něj odejde, získá nebo ztratí svou stránku, položky indexu a odkazy samotnými generátory

scripts/generate-site-data čte docs/generated/registry.json - projekci čistě z kódu, takže skrz index neběží žádný cyklus - kvůli id, která mění na routes, a zapisuje site/data/generated/executable.json (routes, odkazy na moduly a API, zdroj na GitHubu, tvrzení připojená ke každému povrchu podle cesty jejich implementace) a obsahové stuby pod site/content/registry/; šablony čtou všechny ostatní fakty ze site/data/registry/registry.json. Manifest jmenující modul, který registr nedrží, zdrojový soubor, který strom nemá, nebo jiné schéma, se odmítne a nic se nepublikuje. scripts/site-check dokazuje vykreslenou stranu: každý modul a schopnost má stránku a žádná stránka není bez své položky, stránky CLI, MCP a měření výkonu vykreslují každý příkaz, nástroj, cíl a baseline, každá stránka schopnosti odkazuje na svůj modul a svou operaci a žádná šablona, generátor ani navigační soubor nejmenuje schopnost. Manifest patří mezi vstupy webu, takže jeho hash se mění spolu s kódem spustitelného souboru.

docs/GITHUB_PAGES_ARCHITECTURE.md scripts/lib/executable-site.jq test/cases/95_executable_reference.sh zaznamenané důkazy: nespuštěno
Každý odevzdaný odvozený artefakt repozitáře se znovu generuje jedním příkazem v pořadí závislostí a kontroluje jedním příkazem jen pro čtení, který jmenuje každý zastaralý artefakt, druhá regenerace na čistém stromu nic nezmění a žádný odvozený soubor nezaznamenává commit, do kterého přistává

scripts/derive spouští majordomus generate (projekce jen z kódu), scripts/generate-site-data (data a obsah webu a odvozené dokumenty, čtoucí manifest registru a dokument OpenAPI) a znovu majordomus generate (datovou sadu webu a matici měření výkonu nad indexem, k němuž se dokumenty připojily); žádná fáze nečte vlastní výstup. scripts/derive-check skládá generate --check a generate-site-data --check a skončí s kódem 10 s oběma zprávami. Commit, z něhož byla stránka sestavena, je fakt sestavení (site/data/build.json, servírovaný na /build.json, nikdy necommitovaný), takže source.json jej už nenese a generátor je na čistém stromu idempotentní. just derive, just derive-check a workflow Pages volají skripty; just test spouští kontrolu.

docs/GITHUB_PAGES_ARCHITECTURE.md scripts/derive test/cases/400_derivation_is_one_graph.sh zaznamenané důkazy: nespuštěno
Dovednost je jeden adresář pod sekcí dovedností vrstvy obsahující SKILL.md, objevený zdrojovou třídou `skill`, kterou čtou shellový nástroj i spustitelný program v Rustu, takže přidání souboru je celá registrace a katalog, příkaz, doctor, MCP i web se z něj odvozují

share/kinds.yaml deklaruje druh, share/schemas/majordomus/skill/skill.v1.schema.json jeho kontrakt a zdrojové třídy skill a skill_example v .ai/repo/knowledge/sources.yaml určují, které soubory ho nesou. Nic jiného dovednost nejmenuje. lib/skills.sh z tohoto zjišťování odvozuje jediný katalog pro `skills list|show|check`, validátor doktríny a scripts/generate-site-data; index v Rustu servíruje tytéž soubory jako zdroje majordomus://skill/<id> přes majordomus_list a majordomus_get, bez jakéhokoli kódu, který by ten druh znal. Případ dovednost přidá, rozbije, přejmenuje a odstraní a sleduje, jak všechny povrchy následují.

docs/SCHEMAS.md lib/skills.sh test/cases/95_skills.sh zaznamenané důkazy: nespuštěno
Úloha, která deklaruje závazky, dosáhne výsledku completed, jen když má každý z nich proti sobě zaznamenané důkazy, a důkazy pořízené nad soubory, které se od té doby změnily, nebo na commitu, který branch od té doby opustila, už nic nesplňují

Slovník závazků je share/obligations.yaml, takže token se přidává tam, ne v shellu. Důkazem je řádek ledgeru task.evidence nesoucí hash sledovaných souborů, které závazek pojmenovává; validátor hash přepočítá a při rozdílu uvede obě hodnoty, stejně jako to už dělá kontrola aktuálnosti webu. Závazek, jehož fakt je vzdálený, je místo toho vázán na commit, ve kterém byl převzat, a posuzuje se pomocí mj_git_label, ne pátého slovníku zastaralosti. Výsledek jiný než completed není nikdy odmítnut kvůli tomu, že něco dluží.

docs/CLI.md lib/evidence.sh test/cases/103_obligations.sh zaznamenané důkazy: nespuštěno
Závazek, jehož fakt nástroj dokáže zjistit, se ustavuje živě, ne zaznamenáním — čistý strom, vzdáleně sledovaná ref dosahující HEAD, trunk, který jej dosahuje, publikovaný web, který jej servíruje — a ručně zaznamenaný řádek jej ani nesplní, ani nezachrání

share/obligations.yaml dává každému tokenu established_by a jedno z hodnoty `none` ho zavazuje říct v `unestablished`, proč to zde nic nemůže určit. commit, push a target se určují z gitu bez fetche, takže zastaralý tracking ref může říct jen "ještě ne" a nikdy "ano"; pages se určuje pomocí scripts/pages verify s --timeout 0, tedy jediným sondováním kontroly publikace, kterou workflow Pages už spouští a která nyní končí kódem 12 místo 10, když web nikdy neodpověděl - nedosažitelný a nepublikovaný jsou různé nálezy. Takto určený fakt se bere na HEAD, což je `exact` z mj_git_label; ostatní tři štítky si na záložní cestě zachovávají svůj význam a deploy a verify zůstávají zaznamenávány ručně, protože nasazení je fakt o stroji, s nímž tento repozitář nikdy nekomunikuje.

docs/CLI.md lib/evidence.sh test/cases/103_obligations.sh zaznamenané důkazy: nespuštěno
Každá dovednost se validuje proti povolenému seznamu generovanému z jejího schématu, jejího adresáře, jejích sekcí a jejích referencí, porušení jmenuje soubor a každý důvod a repozitář bez dovedností se hlásí, ne propouští

`skills check` a doktrína majordomus.skill-integrity (spouštěná příkazy doctor a watch) provádějí jedno vyšetření – neznámé klíče, verze schématu, celočíselná verze, uzavřená množina stavů, id shodné s adresářem, neprázdné sekce Purpose, Procedure a Output, duplicitní id, popisy, které dvě dovednosti nerozliší, související id, která se dají vyřešit, příklady s nadpisem – a vypíšou počty toho, co prozkoumaly. Generátor webu odmítne sestavit web z dovednosti, která neprojde validací.

docs/CLI.md lib/skills.sh test/cases/95_skills.sh zaznamenané důkazy: nespuštěno
Sekce dovedností webu se vykresluje z katalogu dovedností, jedna stránka na dovednost nese její vlastní tělo a příklady a odstraněná nebo přejmenovaná dovednost nezanechá žádnou stránku, položku ani odkaz

site/data/generated/skills.json a site/content/skills/ zapisuje generátor z katalogu lib/skills.sh, adresář s obsahem se při každém běhu nahradí celý; generate-site-data --check skončí s kódem 10, když se dovednost změnila nebo se projekce upravila ručně, a CI tuto kontrolu spouští dřív, než se web sestaví.

docs/GITHUB_PAGES_ARCHITECTURE.md scripts/generate-site-data test/cases/95_skills.sh zaznamenané důkazy: nespuštěno
Provozní okamžik je jeden soubor pod vrstvou, objevený, ne registrovaný, a odpovídá na něj příkazový řádek, HTTP API, dokument OpenAPI, MCP, odvozený graf i web, aniž by se cokoli jiného měnilo

Odstranění souboru jej odstraní ze všech, což je přesně to, na čem by skrytý registr selhal.

docs/WHY.md apps/majordomus-cli/src/why.rs apps/majordomus-cli/tests/why.rs zaznamenané důkazy: nespuštěno
Každý odkaz, který moment činí, se rozliší proti věci, kterou pojmenovává, a ten, který se nerozliší, je chyba nesoucí nejbližšího kandidáta

Publika, oblasti a související okamžiky proti katalogu; příkazy, schopnosti, tvrzení, pravidla a případy užití proti jejich vlastním registrům.

docs/WHY.md apps/majordomus-cli/src/why.rs apps/majordomus-cli/tests/why.rs zaznamenané důkazy: nespuštěno
Diagnóza vlastních příznaků čtenáře je deterministické počítání nad metadaty katalogu a každé doporučení jmenuje okamžiky, které k němu vedly

Žádné vážení ani procenta; dotazník na webu a `majordomus why diagnose` provádějí stejnou aritmetiku nad stejnými daty.

docs/WHY.md apps/majordomus-cli/src/why.rs apps/majordomus-cli/tests/why.rs zaznamenané důkazy: nespuštěno
Uzavřená epizoda provádění je sdílený objekt vrstvy, zapsaný nástrojem z gitu a ledgeru, validní proti kontraktu, který nepřipouští konverzaci ani absolutní cestu, a objevovaný, nikoli registrovaný

Záznam leží v sekci sessions manifestu. Každé pole je odvozené - časy z hodin, hlavy a commity z gitu, seznamy odkazů z událostí účetní knihy pro danou epizodu - a jedinou ručně psanou částí je tělo. Repozitář je pojmenován svým remote a pracovní kopie hashem, takže resolver rozliší záznamy jednoho checkoutu od druhého bez prozrazení cesty. Objevuje je jedna třída zdrojů; index, MCP, objektové cesty, graf i web ji následují.

docs/SCHEMAS.md lib/session.sh test/cases/63_session_records.sh zaznamenané důkazy: nespuštěno
Hák poskytovatele otevře epizodu pod modelem a předá pracovníkovi, co po sobě zanechal předchozí, zaznamená, co se kompakcí chystá zahodit, a uzavře epizodu záznamem pokračování vedle její obálky

Vlastní události poskytovatele SessionStart, PreCompact a SessionEnd vymezují hranici a řídí životní cyklus; každá je idempotentní, protože jsou to i události, a doctor ověří zapojení tím, že prožene payload koncovým shimem s vypnutou mutací. Událost start zapíše briefing z politiky na stdout, čímž záznam o pokračování dorazí k pracovníkovi, který o něj nežádal; zbylé dvě nezapisují nic, protože se spouštějí uvnitř již probíhajícího tahu. Pracovní kontext, který každé otevření zmrazí, je lokální, jen se k němu připisuje, nepřepisuje se, a je odmítnut, pokud by obsahoval konverzaci.

docs/DOCTRINE.md lib/session_context.sh test/cases/54_session_lifecycle_hooks.sh zaznamenané důkazy: nespuštěno
Subsystém relací umí číst sám sebe: každou otevřenou epizodu úložiště, nejen tu, kterou sleduje ukazatel, epizody, které se už nedokážou samy uzavřít, commit, o kterém odpovídá obsluhující proces, i to, co deklaruje adaptér každého provideru

continuity.state odpovídá na otázku pracovníka o jedné epizodě, což je správné pro briefing, ale slepé k ostatním oknům otevřeným na stejném worktree, protože state/session-current.yaml je symlink, který přesměruje nejnovější událost start. Pět schopností životního cyklu místo toho čte úložiště, ledger a index, každé postavení určí z toho, co repozitář dokáže pozorovat, a ke každému nálezu přiloží nápravu. Nikdy nezapisují, neposuzují žádné prahy – věk hlásí session.freshness a continuity.state – a nedeklarují žádný příkazový řádek, protože čtou .ai/local/ a jsou poskytovány, ne distribuovány. Stránka Continuity v Cockpitu je jejich projekcí a nemá vlastní model relace.

docs/CONTINUITY.md apps/majordomus-cli/src/capability/builtin/lifecycle.rs test/cases/171_session_observability.sh zaznamenané důkazy: nespuštěno
Klient bez provider hooků dostane epizodu provádění z připojení MCP, po pádu naváže na vlastní a nikdy se netvrdí, že byl zachycen jeho prompt

Epizoda se otevírá na episodes.attach a nikdy na initialize, takže klient, který vrstvu jen čte, nezanechá záznam; je klíčována vnější identitou, kterou klient dodá, a nikdy id peera, které se přiděluje pro každé spojení; každá zpráva, kterou klient pošle, je jeho heartbeat; ztráta spojení epizodu odpojí, ne uzavře, a opětovné připojení pod toutéž identitou pokračuje ve stejné epizodě. Nic z toho nezapisuje záznam relace - nástěnka spouští `capture session --provider generic`, tentýž příkaz, který spouští shim hooku poskytovatele, a hlásí, co řekl. Zachycení promptu je pro spojení deklarováno jako nemožné a nepokouší se o ně: serveru MCP se předávají volání nástrojů, nikdy prompt, který je vyvolal. ADR 0103.

docs/MCP.md apps/majordomus-cli/src/episodes.rs test/cases/200_generic_mcp_episode.sh zaznamenané důkazy: nespuštěno
Co každý poskytovatel dokáže ohledně životního cyklu relace a zachytávání promptů, je jedna deklarace s citací u každé buňky, každé rozhraní ji promítá a žádný poskytovatel, kterého deklarace jmenuje, nezůstane bez hlášení

share/providers.yaml nese u každého poskytovatele blok offers - episode (hooks, connection, none), prompts (hook, none) a citaci, ze které byl každý ověřen; slovo mimo kterýkoli slovník shodí čtení souboru, místo aby se degradovalo na none. share::ProviderDeclaration a product::ProductProvider jej nesou a každý povrch je projekce. `capture status` jej spojuje se stromem a hlásí dva fakty na aspekt, schopnost dodavatele a stav tohoto checkoutu, nad sjednocením deklarovaných poskytovatelů a tabulek adaptérů; `unsupported` je vyhrazeno poskytovateli, který věc neumí, a `unadapted` pojmenovává mezeru v této distribuci. scripts/provider-evidence-check je kontrola a případ ji drží u jejího vlastního negativu. ADR 0103, pravidlo project.a-provider-capability-cites-its-evidence.

docs/CONCEPTS.md share/providers.yaml test/cases/200_generic_mcp_episode.sh zaznamenané důkazy: nespuštěno
Architektonické rozhodnutí je jeden soubor v sekci adrs vrstvy, validovaný proti kontraktu rozhodnutí, s identitou, o kterou se nehlásí nic jiného, s reciprokým nahrazením a s rozřešením každého odkazu, který činí

share/kinds.yaml deklaruje druh, share/schemas/majordomus/adr/adr.v1.schema.json jeho kontrakt (share/allow/adr.txt se z něj generuje) a třída zdrojů adr v .ai/repo/knowledge/sources.yaml říká, které soubory jej nesou; nic jiného rozhodnutí neregistruje. lib/adr.sh odvozuje z tohoto objevování jeden katalog pro `adr list|show|check` a pro mj_validate_adr, validátor majordomus.adr-integrity spouštěný z doctoru a watch. Případ procvičuje duplicitní identity, neznámý stav, verzi schématu, kterou nic nečte, jednostranné nahrazení, nahrazený záznam bez náhrady a chybějící sekci těla.

docs/SCHEMAS.md lib/adr.sh test/cases/99_adr.sh zaznamenané důkazy: nespuštěno
Rozhodnutí uvádí, co uvedlo v platnost, jako typované odkazy, z nichž každý je validován, a opačný směr — čím bylo pravidlo, dokument, implementace či případ rozhodnuto — se čte z grafu znalostí, místo aby se zapisoval podruhé

Dopředná hrana je `related` v front matter rozhodnutí – rule:<id>, claim:<id>, file:<path>, test:<path>. Validace odmítne pravidlo, které efektivní sada nemá, tvrzení, které matice nemá, a cestu, kterou repozitář neobsahuje. Extraktor z každého udělá hranu grafu (declares, supports, references, tested_by), jejíž původ je klíč front matter, který ji vyslovil, takže `knowledge edges` odpovídá v obou směrech z jednoho autorského faktu.

docs/SCHEMAS.md lib/adr.sh test/cases/99_adr.sh zaznamenané důkazy: nespuštěno
majordomus adr propose zapíše rozhodnutí se stavem proposed a odmítne zapsat jakýkoli jiný stav, přidělí jeho identitu pod zámkem, aby se souběžní pracovníci nikdy nesrazili, a zaznamená, z čeho bylo rozhodnutí odvozeno

Přijetí je úkon člověka - nástroj, který umí zapsat `accepted`, mění vlastní odvození v pravdu repozitáře a pozdější čtenář nepozná, které z toho je které, proto propose pro to nemá žádný příznak a extrahovaný záznam, který si je nárokuje, je nález. Extrahovaný záznam musí jmenovat své důkazy v provenance.derived_from, jehož reference jsou typované a reference na soubory a testy se musí přeložit; může být stále nahrazen, protože to je něco, co mu udělal pozdější záznam. Identita se přiděluje pod zámkem nad adresářem sekce a případ to dokazuje skutečnými souběžnými procesy, protože tento repozitář vydal dvě 0005 a dvě 0007, než to cokoli kontrolovalo.

docs/SCHEMAS.md lib/adr.sh test/cases/99_adr.sh zaznamenané důkazy: nespuštěno
Každý příkaz příkazové řádky Rust executable má shrnutí, nápovědu ke každému argumentu a tam, kde se spouští, alespoň jeden příklad; kořen má dlouhý popis a každý příklad ukázaný čtenáři se spouští proti sestavenému executable

Dokumentace a příklady jsou deklarovány vedle deklarace clap jako typovaný Rust; příklad je vektor argumentů a příkazový řádek, který čtenář vidí, se z něj skládá. capabilities validate skončí s kódem 10 a pojmenuje každé porušení s příkazem, souborem a pravidlem; sada zparsuje každý zdokumentovaný vektor kanonickým parserem a spustí každý příklad proti zkompilovanému binárnímu souboru v jednorázovém repozitáři, dva dlouho běžící příkazy jako omezené sondy. Příklad, který sada záměrně nespouští, nese svůj důvod a ukazuje ho všude, kde se příklad zobrazuje.

.ai/repo/rules/project/rust-cli-evidence.v1.md apps/majordomus-cli/src/cli.rs apps/majordomus-cli/tests/cli_examples.rs zaznamenané důkazy: nespuštěno
Každý webový povrch je deklarován jednou u svého producenta a rozřešen do jediné topologie, z níž se promítá router, vstupní stránka i strojově čitelný index

Povrch je mount, producent, druh, kategorie, viditelnost a původ každého z nich; cesty, na které spustitelný soubor odpovídá, pocházejí z již existujících deklarací schopností, generovaný adresář se deklaruje vedle svého výstupu a web aplikace se čte z konfigurace generátoru webu. Žádný centrální seznam neexistuje. Případ se stránky i indexu ptá nezávisle a vyžaduje stejnou množinu veřejných mountů, takže ručně do stránky zapsaný odkaz jím neprojde.

.ai/repo/adrs/0013-every-web-surface-is-discovered-from-its-producer-resolved-o.md apps/majordomus-cli/src/web/model.rs test/cases/89_web_surface.sh zaznamenané důkazy: nespuštěno
/docs servíruje dokumentaci tohoto repozitáře a /swagger servíruje Swagger UI a ani jedno nesmí zabrat mount druhého

Swagger UI držel /docs, dokud nedorazila dokumentace, a ta chtěla jméno, které už jí bylo dáno. Případ ověřuje mounty jako data dřív než jako cesty, odmítne producenta Swaggeru na /docs a dokazuje, že mount dokumentace po svém sestavení nepohltí /swagger ani /openapi.json. Nesestavená dokumentace odpoví 503 a jmenuje příkaz, který ji sestaví, místo prohlížeče, který tam dříve odpovídal.

.ai/repo/rules/project/web-surface-declared-once.v1.md apps/majordomus-cli/src/web/discover.rs test/cases/89_web_surface.sh zaznamenané důkazy: nespuštěno
Rustdoc crate je webové rozhraní na /rustdoc deklarované objevením z crate, přítomné v topologii, jeho odevzdané projekci i na domovské stránce, ať už jeho producent běžel, nebo ne, a běžící server odpovídá na /rustdoc/ ze stromu, který producent zapsal

Povrch je deklarován z crate tak, jak je poskytovaná dokumentace deklarována z konfigurace webu, takže nic na něm nezávisí na tom, zda ho některý checkout sestavil; built_from pochází ze surface.json producenta a v docs/generated/web.json chybí, protože ten se musí v každém klonu číst stejně. Stranu Rustu tvoří testy web::discover. ADR 0086 rozhoduje o mountu a o tom, proč není pod /docs.

docs/RUSTDOC.md apps/majordomus-cli/src/web/discover.rs test/cases/488_rustdoc_discoverable.sh zaznamenané důkazy: nespuštěno
Build webu složí každý publikovaný statický povrch do svého výstupu na jeho přípojném bodě, načtený z commitnuté topologie bez ručně pojmenovaného povrchu, a odmítne build s uvedením producenta, pokud artefakt publikovaného povrchu chybí

Seznam je docs/generated/web.json, čtený přes mj_web_composed v lib/common.sh, na který se ptá i každá kontrola, která musí odlišit stránky webu od složeného povrchu. Přípojný bod, který web sám už vyplňuje, se odmítne jako druhý vlastník jedné cesty, místo aby se přepsal. Skládání běží po Zole a po přístupnostním průchodu webu, takže normalizace webu se stránek jiného producenta nikdy nedotkne.

docs/RUSTDOC.md scripts/site-build test/cases/486_rustdoc_composition.sh zaznamenané důkazy: nespuštěno
Rustdoc crate se publikuje na /rustdoc spolu s webem, sestavený z commitu, který web uvádí, a nikdy se necommituje

Případ nasadí složený web do lokálního bare remote, bez sítě, a publikovanou větev přečte zpět. Soubor /build.json webu zaznamenává každý složený povrch s commitem, který deklaroval jeho producent, takže commit, ze kterého byla reference sestavena, je zvenčí čitelný vedle commitu, ze kterého byl sestaven web. Strom vytváří v CI úloha rustdoc workflow pro pages pomocí .github/actions/rustdoc, tedy akce, kterou používá i workflow pro validaci.

docs/RUSTDOC.md scripts/site-deploy test/cases/489_rustdoc_deploy.sh zaznamenané důkazy: nespuštěno
Každá položka, kterou crate exportuje, má svou stránku rustdoc na routě odvozené z její cesty a druhu, žádná stránka položky neexistuje bez své položky a modul přidaný do crate se stane povinnou stránkou bez úpravy jakéhokoli seznamu

majordomus quality rustdoc spojuje vykreslený strom s quality::source::Inventory, vlastním měřením syntaktického stromu crate o tom, co exportuje, které měří i kontrola rust-quality. Pro referenci se neudržuje žádný soupis modulů ani položek. Kontrola skončí s kódem 10 a pojmenuje každou chybějící nebo osiřelou stránku, a s kódem 12, když strom neexistuje – nikdy neprojde nad prázdnem. Testy crate quality::rustdoc obsahují jednu fixture pro každý způsob selhání.

docs/RUSTDOC.md apps/majordomus-cli/src/quality/rustdoc.rs test/cases/490_rustdoc_new_module.sh zaznamenané důkazy: nespuštěno
Strom rustdoc sestavený z jiného commitu, než jako který se kontroluje nebo nasazuje, je odmítnut, a to kontrolou integrity před publikací i veřejným ověřením po ní

Dva svědci, kteří nesdílejí zapisovatele, jmenují commit: built_from producenta a hodnota, kterou rustdoc vykresluje na stránce konstanty COMMIT samotného crate. scripts/pages verify-rustdoc je tvrdý krok workflow pages, jakmile web servíruje nasazený commit, takže nasazení, jehož veřejná reference chybí, je rozbitá nebo zastaralá, shodí svůj běh, a scripts/ci/pages-check se ptá znovu jako kontrola pages-live.

docs/RUSTDOC.md scripts/pages test/cases/487_rustdoc_staleness.sh zaznamenané důkazy: nespuštěno
Stránka každého builtin modulu na webu odkazuje na stránku, na které referenci crate tento modul dokumentuje, a to z jediného mapování modul-stránka, kterému je podřízena i kontrola rustdoc publikovaného stromu, a jen v buildu, který referenci sestavil

Mapování je quality::rustdoc::module_routes: exportované moduly crate, každý se stránkou odvozenou z vlastního inventáře crate, kterou `majordomus quality rustdoc` od stromu vyžaduje jako zjištění o chybějící stránce. `majordomus generate` ji přenese do datové sady registru webu jako rustdoc u každého modulu a modul, pro který rustdoc stránku nevytvoří (pub(crate) nebo privátní), žádnou nenese. Šablona ji spojí s povrchy, které sestavení složilo, z data/build.json, kterou scripts/site-build zapisuje z docs/generated/web.json; žádnou cestu neodvozuje a sestavení bez reference nic neodkazuje. scripts/ci/link-check ověří každý takový odkaz proti složenému webu.

docs/RUSTDOC.md apps/majordomus-cli/src/site.rs test/cases/492_rustdoc_module_links.sh zaznamenané důkazy: nespuštěno
Cesta k worktree větve se odvozuje jen z identity gitu a názvu větve — sourozenec primárního checkoutu pojmenovaný s -wt, potom větev se zachovanou hierarchií — a z každého adresáře každého worktree je odpověď stejná, bez čehokoli registrovaného či konfigurovaného

Identitou je společný adresář gitu a hlavní worktree, který git uvádí jako první, nikdy aktuální adresář, takže propojený worktree neodvozuje kontejner sám v sobě. Název větve se validuje referenčními pravidly gitu a odvozená cesta se při každém volání dokazuje, že zůstává pod kontejnerem. Každý registrovaný worktree dostane postavení a každá podmínka stabilní kód s nápravou; čtyři schopnosti worktree.* promítají stejnou typovanou topologii do MCP, HTTP, OpenAPI, Swagger UI a Cockpitu a pre-commit hook se ptá hlídače.

docs/WORKTREES.md apps/majordomus-cli/src/worktree/path.rs test/cases/96_worktree_topology.sh zaznamenané důkazy: nespuštěno
Špatně umístěný worktree se přesune na svou kanonickou cestu se zachovanou změněnou, připravenou, nepřipravenou i nesledovanou prací, ověřeno otiskem pořízeným před přesunem a po něm, a krok se hlásí jako přesunutý, jen když se oba rovnají

Plán nic nemění a před aplikací se přepočítá pod zámkem repozitáře. Git přesune adresář jedním přejmenováním; obyvatel kontejneru odejde na přípravnou cestu a pak dovnitř; přesun mezi souborovými systémy se odmítne, pokud není povolena kopie, a pak se ověří proti manifestu každé položky, než se odstraní originál. Nic se neresetuje, neodkládá do stashe, nečistí, nečekoutuje ani nepřepisuje: existující cíl je pojmenovaný konflikt, zamčený worktree čeká, odpojený se nikdy nepřesouvá a pracovní checkout relace se hlásí a přesouvá jen na požádání.

docs/WORKTREES.md apps/majordomus-cli/src/worktree/migrate.rs test/cases/96_worktree_topology.sh zaznamenané důkazy: nespuštěno
Funkce produktu je jeden soubor pod vrstvou, objevený, ne registrovaný, a odpovídá na ni příkazový řádek, HTTP API, dokument OpenAPI, MCP, odvozený graf, matice schopností a úvodní stránka webu i stránky funkcí, aniž by se cokoli jiného měnilo

Odstranění souboru jej odstraní ze všech, což je přesně to, na čem by skrytý registr selhal. Druh, jeho schéma a jeho zdrojová třída jsou deklarace, takže zjišťování, validace, identita, index i zdroj MCP nepotřebovaly žádný vlastní kód.

docs/PRODUCT.md apps/majordomus-cli/src/product.rs test/cases/97_product_features.sh zaznamenané důkazy: nespuštěno
Produkt je zařazen pod několik oblastí deklarovaných jednou jako soubory vrstvy; funkce jmenuje právě jednu a členové, rozhraní, záruky a případy užití každé oblasti se odvozují z funkcí, které ji jmenují, takže stabilní funkci nelze vynechat z mapy produktu, aniž by to model odmítl

Doména neuvádí žádnou funkci. Stabilní funkce, která nejmenuje žádnou doménu, přestože nějaká je deklarována, nebo jmenuje doménu, která neexistuje, neprojde product validate; odstranění souboru domény ji odstraní z každé odpovědi (ADR 0104).

docs/PRODUCT.md apps/majordomus-cli/src/product.rs test/cases/800_product_domains.sh zaznamenané důkazy: nespuštěno
Přes která rozhraní je funkce zpřístupněna, co za ní stojí a na co odpovídá, se odvozuje z registrů, které tato fakta vlastní, nikdy se nepíše ručně, a zdrojový soubor, který některé zapíše, schéma odmítne

Soubor funkce obsahuje pouze odkazy a redakční rozhodnutí. Povrchy plynou z toho, na co se promítají její moduly, příkazy a druhy, počty z registru a indexu, okamžiky z katalogu why, cesta z id. Schéma nastavuje additionalProperties false, takže `surfaces:` nebo `route:` ve funkci je chyba validace, ne tvrzení, kterému stránka uvěří.

docs/PRODUCT.md apps/majordomus-cli/src/product.rs apps/majordomus-cli/tests/product.rs zaznamenané důkazy: nespuštěno
Každý odkaz, který funkce činí, se vyřeší proti registru, který jej vlastní, a ten, který ne, je chyba jmenující soubor, klíč a nejbližšího kandidáta, ne stránka odkazující nikam

Modul schopnosti, veřejný příkaz nebo druh objektu, který nepojmenovává žádná stabilní funkce, se ohlásí jako mezera a zobrazí na matici, ne odmítne: věc, kterou produkt dělá a produktová stránka ji nezmiňuje, je přesně to, co má model zviditelnit.

docs/PRODUCT.md apps/majordomus-cli/src/product.rs apps/majordomus-cli/tests/product.rs zaznamenané důkazy: nespuštěno
Datová sada, ze které se web vykresluje, nese jen pole, která jmenuje povolený seznam, takže próza funkce, strojová cesta nebo pole, které nikdo nepovolil, se nemůže dostat na publikovanou stránku

Hranicí je kopie pole po poli přes PUBLIC_FEATURE_FIELDS, ne vyloučení, na které by se dalo zapomenout: pole přidané do modelu na webu chybí, dokud ho někdo nepojmenuje. Test ověřuje, že tam není klíč mimo allowlist, žádné tělo, žádný kořen fixture ani dočasná cesta; scripts/generate-site-data artefakt odmítne ještě jednou, než z něj cokoli vykreslí.

docs/PRODUCT.md apps/majordomus-cli/src/site.rs apps/majordomus-cli/tests/product.rs zaznamenané důkazy: nespuštěno
Domovská stránka webu a stránky funkcí nepojmenovávají žádnou vlastní funkci, modul, příkaz, provider ani počet a zastaralý produktový dataset je odmítnut pre-commit hookem i kontrolou rust dříve, než ho lze mergovat

scripts/site-check odmítne šablonu, generátor, program jq nebo navigační soubor, který jmenuje cestu funkce nebo vlastní soubor poskytovatele, dokazuje, že každá veřejná funkce má svou stránku a každá stránka funkci, a porovnává značky, které matice ukazuje, se značkami, které odvodil model. `majordomus generate --check` odmítne strom, jehož datová sada neodpovídá repozitáři.

docs/GITHUB_PAGES_ARCHITECTURE.md site/templates/index.html test/cases/400_derivation_is_one_graph.sh zaznamenané důkazy: nespuštěno
Schopnost přidaná do registru se objeví v seznamu, navigaci a vyhledávání Cockpitu a na vlastní stránce s formulářem generovaným z jejího schématu, aniž by se upravil jediný řádek Cockpitu

a_capability_the_repository_adds_reaches_every_cockpit_surface přidá jedno pravidlo do fixture repozitáře, z něhož registr udělá schopnost, a ptá se Cockpitu na ni přes skutečný socket v jeho výpisu, na její vlastní stránce, na stránce jejího objektu s položkou navigace pro její druh a v jeho vyhledávání; the_runner_form_is_generated_from_the_input_schema ve stejném souboru dokazuje formulář. Nic v Cockpitu tu schopnost nejmenuje.

docs/COCKPIT.md apps/majordomus-cli/src/cockpit/mod.rs apps/majordomus-cli/tests/cockpit.rs zaznamenané důkazy: nespuštěno
Dashboard UI na /ui odkazuje každou schopnost, kterou načetl, na stránku této schopnosti, servíruje se pod bezpečnostní politikou Cockpitu a nikdy nečeká na frontu pull requestů, která je vlastní stránkou a fragmentem

the_dashboard_is_served_at_ui_under_the_cockpits_policy spustí skutečný server nad fixture repozitářem a ověří, že stránka odkazuje na /cockpit/capabilities/<id> pro každou ze schopností health.report, release.version, distribution.releases, plan.status, plan.roadmap a mesh.peers, nese content-security politiku Cockpitu a frontu tahá z /ui/panels/pull-requests, místo aby citovala integration.queue; the_queue_panel_is_a_page_and_a_fragment dokazuje vlastní route fronty.

docs/MAJORDOMUS_UI.md apps/majordomus-cli/src/ui/dashboard.rs apps/majordomus-cli/tests/ui_surface.rs zaznamenané důkazy: nespuštěno
Observatory na /ui/observatory a /ui/kiosk zobrazí scénu, jen když schopnosti, které vyžaduje, odpověděly něčím k vykreslení, nebo — u scény meshe, kde žádný mesh neběží — když repozitář nese jeho nahrávku, kterou označí jako replay; scéna bez obojího nenese žádný model a uvede důvod zdroje, na serveru i v publikovaném snímku stejně

Případ spustí server nad čerstvě inicializovaným repozitářem a pořídí z něj snímek UI a na obojím čte projekci, kterou stránka nese: osm scén v deklarovaném pořadí, každý zdroj uvedený se svým stavem a selhavší s důvodem, dostupnou scénu s modelem a nedostupnou bez něj a s důvodem, tři scény meshe nedostupné tam, kde žádný mesh neběží, kiosk nesoucí stejné scény, dvě přesměrování a snímek obsahující stránku a její skript. Čte projekci, ne plátno: co skript vykreslí z modelu dostupné scény, se tu netvrdí.

docs/MAJORDOMUS_UI.md apps/majordomus-cli/src/ui/observatory.rs test/cases/3011_the_observatory_draws_nothing_it_did_not_read.sh zaznamenané důkazy: nespuštěno
Objekt nasazení, který porušuje svůj uzavřený kontrakt — klíčem, který kontrakt nemá, jinou verzí schématu, chybějícím polem, rozhraním, portem, počtem strojů nebo health routou, které by nemohly fungovat, hodnotou, která vypadá jako přihlašovací údaj, nebo identitou, o kterou se hlásí dva soubory — doctor odmítne s uvedením důvodu

Toto je shellová polovina kontraktu, rozhodnutá bez přítomného toolchainu Rustu. Sémantická polovina, tedy health route, kterou nezaregistrovala žádná schopnost, nebo balíček, který workspace neobsahuje, patří do apps/majordomus-cli/src/deploy/mod.rs a dokazují ji testy tohoto modulu, ne tento případ. Případ páruje každé odmítnutí podle jeho důvodu; nevyžaduje, aby nález jmenoval objekt, nekontroluje exit status doctor a neukazuje, že objekt dorazí do indexu nebo výpisu objektů, takže nic z toho se zde netvrdí.

.ai/repo/rules/vendor/majordomus/rules/deployment-contract.v1.md lib/deployment.sh test/cases/84_deployment_contract.sh zaznamenané důkazy: nespuštěno
Důkaz tvrzení je provedení zaznamenané s commitem, proti kterému běželo, ne cesta k testu, která se vyřeší

Matice váže tvrzení k testu cestou a kontrola cesty dokazuje jen to, že soubor existuje. Kniha pod .ai/repo/evidence zaznamenává poslední provedení každého testu s jeho výsledkem, délkou, commitem, stavem stromu, digestem zdroje, časem a původem; `majordomus evidence show` odvozuje stav každého tvrzení z tohoto joinu při každém čtení a tvrzení, jehož test nikdo nespustil, se čte jako `not_run`, místo aby z existence souboru zdědilo záruku.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/mod.rs test/cases/124_evidence.sh zaznamenané důkazy: zastaralé
CI zaznamenává každý test, který spustila, spolu s commitem a během, ve kterém proběhl, a web publikuje verdikt sledovaného ledgeru u tohoto commitu jako aktuální jen tehdy, když běh CI na publikovaném commitu měřil čisté stromy a nic nechybělo, nebylo odmítnuto ani neselhalo; jinak jako zastaralý se vzdáleností či selháními, jako neznámý s důvody, nebo jako nedostupný s důvodem

Úloha evidence ve validate.yml nejprve odvodí report přes `majordomus evidence show` na vlastním checkoutu, změřeném čistém či špinavém, se staženými reporty a výstupem v dočasném adresáři runneru, takže tento report je verdiktem sledovaného ledgeru na commitu běhu. Teprve poté zaznamená výsledky sady a crate přes `majordomus evidence record --origin ci`, který každé provedení označí během z jeho prostředí; tyto řádky jsou záznamem běhu, počítají se v manifestu a o žádném verdiktu nerozhodují, a řádky běhu na trunku se do sledovaného ledgeru dostanou jen přes zaznamenávací pull request z ADR 0080. Sada i úloha rust měří každá strom, ve kterém běžely, s vyloučením jen výstupů, které jejich běh pojmenovává, na cestách, kam tento běh zapisuje (rust-check zapisuje v adresáři crate), a pracovní strom manifestu se odvozuje z těchto měření; report změřený na jiném commitu je odmítnut a report, který nepřinesl žádné provedení, je nepřítomný. U pull requestu je zaznamenaným commitem merge commit, který běžel, s head vedle něj. `scripts/pages evidence` publikuje artefakt publikovaného commitu nebo jeho nejbližšího předka do site/data/evidence.json, který se nikdy necommituje, a zadrží current, se všemi důvody, kdykoli běh nemůže report potvrdit, včetně reportu, který kolektor neodvodil nebo nepřinesl. ADR 68, ve znění ADR 0087.

docs/EVIDENCE.md scripts/ci/evidence-collect test/cases/357_ci_records_evidence.sh zaznamenané důkazy: nespuštěno
Každé pravidlo jmenuje, co jej dokazuje, a každá cesta, kterou jmenuje, je ve stromu

Pravidlo mohlo v anglické próze pojmenovat případ chování a nikdo si nevšiml, když byl tento případ přejmenován nebo smazán; pravidlo se dál četlo jako vynucované. Kontrola drží obě poloviny vztahu. Pojmenovaná cesta, která ve stromu není, je `dangling` a nikdy se neratchetuje, protože neexistující důkaz je horší než žádný důkaz. Pravidlo kterékoli třídy, které nepojmenovává ani validátor, ani test, ani důvod, je `unproven`, což je polovina, kterou žádná jiná kontrola v tomto repozitáři neumí hledat; poradní není výjimka a jedinou výjimkou je vendorované pravidlo označené `principle`, které balíček připíná hashem a které kontrola počítá při každém běhu. `majordomus rules` hlásí stejný stav `unproven` pro každou třídu, ale za nález ho označuje jen u blokujícího pravidla; u poradního ho odmítá až kontrola.

docs/DOCTRINE.md scripts/ci/rule-proof-check test/cases/125_rule_proof.sh zaznamenané důkazy: zastaralé
Každé tvrzení, pravidlo, funkce, příkaz, schopnost, nástroj MCP a případ užití, které repozitář deklaruje, je předmět důkazů, jehož členové a testy se odvozují z již existujících deklarací, a odevzdaný index předmětů, který se od tohoto odvození liší, se odmítne

`majordomus generate site` zapisuje site/data/registry/evidence-subjects.json z matice tvrzení, pravidel, funkcí, případů užití, registru příkazů, zdokumentovaných příkladů příkazové řádky, vestavěných schopností a první hlavičky pokrytí a negativní hlavičky každého případu; schopnost se skládá z tvrzení implementovaných v souboru, v němž je její modul sestaven, a slovo příkazu, na které odpovídá shellový nástroj i spustitelný soubor, jmenuje oba programy. Nic neuvádí subjekt, člena ani route ručně, takže přidání deklarace přidá její subjekt a odebrání ho odebere. `generate --check` ruční úpravu odmítne. Soubor nese jen strukturu - žádný řádek knihy ani commit - takže zaznamenání běhu ho nikdy nezastará.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/subject.rs test/cases/507_evidence_subjects_are_derived.sh zaznamenané důkazy: nespuštěno
Behaviorální a negativní testy, které rejstřík subjektů uvádí pro příkaz, jsou přesně ty, které uvádí jeho stránka příkazu, obojí načtené z první hlavičky pokrytí a negativního testu každého případu

Hlavičky případů měly před indexem několik čtenářů: stránky příkazů generátoru webu, doktrínu pokrytí příkazů, kontrolu command-furnished a trasování dopadu případů užití, přičemž poslední dvě hledají příkaz kdekoli v kterémkoli řádku covers mezi hranicemi slov, a ne jako slovo prvního. Index čte první řádek slovo od slova, jako stránka. Případ drží obojí shodné, drží každý případ na jedné hlavičce od každého druhu a drží každý řádek covers na jmenování týchž veřejných příkazů v obou čteních, takže čtenáři se zatím nemohou rozejít; kontrolní řez je přesune na index. Dvě další shellová odvození se k testům dostávají deklaracemi, ne hlavičkami: stránky schopností dávají každé schopnosti tvrzení implementovaná v souboru jejího modulu a stránky doktrín jmenují první test každého pravidla. Tentýž případ drží každé z nich shodné s indexem.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/subject.rs test/cases/507_evidence_subjects_are_derived.sh zaznamenané důkazy: nespuštěno
Pravidlo, které žádný program nedokáže vyjádřit, to říká ve své vlastní hlavičce s důvodem a počítá se zvlášť od každého pravidla, které má kontrolu

Některá pravidla opravdu nemají strojový výraz: původ toho, co bylo napsáno, nebo zda si mechanismus zaslouží své náklady. Před `reviewed_because` ležela v seznamu dluhů vedle pravidel, na která se jen nedostalo, a obojí bylo nerozlišitelné. Důvod je celá deklarace — vedle něj není žádný příznak, protože příznak lze nastavit, ale důvod nelze nastavit, aniž by se napsal. Spustitelný důkaz ho vždy přebije, takže pravidlo, které získá případ, přestane být vynucováno revizí, aniž si kdokoli musí pamatovat něco smazat.

docs/DOCTRINE.md scripts/ci/rule-proof-check test/cases/125_rule_proof.sh zaznamenané důkazy: zastaralé
Stav důkazu pravidla se odvozuje ze stromu a knihy společně a mechanismus, který odmítá porušení, se nikdy nehlásí jako běh, který prošel

`majordomus doctrine` se ptá, zda repozitář pravidlo nyní splňuje; graf důkazů se ptá, zda je pravidlo vůbec ve stavu, v němž by splněno být mohlo. Deset stavů a ty, které se nesmí slít, jsou `proven` (úspěšný běh a od té doby se nic nezměnilo), `gated` (spustitelná kontrola, kterou spouští kontrola CI, bez zde zaznamenaného verdiktu) a `reviewed` (deklarovaná výjimka). Stav pravidla je nejslabší z jeho částí, takže jediný visící případ způsobí, že pravidlo visí, kolik dalších jich prochází.

docs/DOCTRINE.md apps/majordomus-cli/src/rules/mod.rs test/cases/133_rule_graph.sh zaznamenané důkazy: zastaralé
Každý autorský soubor v tomto repozitáři je psán anglicky a vlastní jméno, testovací fixture nebo publikovaný překlad, který takový není, nese svůj důvod vedle kontroly

Kontrola je test abecedy a říká to: písmeno, které se vyskytuje v češtině, slovenštině či polštině a nikdy v angličtině, nebo celé jiné písmo, není angličtina, ať je o souboru pravda cokoli jiného. Anglická próza nesoucí větu v jiném jazyce zapsanou v ASCII jím projde a vždy projde - pravidlo zůstává širší než kontrola, což je poctivý vztah mezi nimi. Dvě výjimky se deklarují s důvodem: `name` pro vlastní jméno a `fixture` pro soubor, který používá cizí řetězec jako data k důkazu, že s ním program umí zacházet.

docs/DOCTRINE.md scripts/ci/english-only-check test/cases/138_governance_gates.sh zaznamenané důkazy: zastaralé
Stránka publikovaného webu psaná v jazyce čtenáře je deklarována s tímto jazykem a důvodem a je odmítnuta, pokud stránka sama tentýž jazyk nedeklaruje

project.english-only v2 (ADR 0077) drží vlastní artefakty repozitáře v angličtině bez výjimek a jmenuje jednu oddělenou populaci: obsah publikovaný pro čtenáře v jeho jazyce. Toto oprávnění stojí tři deklarace, které se musí shodovat - cesta je pod site/content-src/ nebo jeho projekcí, allow list nese jazyk a povinný důvod a samotná stránka deklaruje tentýž jazyk. Třetí z nich brání tomu, aby allow list byl souborem, do něhož lze připsat položku a umlčet nález.

.ai/repo/rules/project/english-only.v4.md scripts/ci/english-only-check test/cases/403_published_translation.sh zaznamenané důkazy: nespuštěno
Každé zjištění, které příkaz hlásí, pojmenuje příkaz, který ho reprodukuje

`mj_finding` bere příkaz k reprodukci jako pátý argument a bez něj nález vypíše bez příkazu, takže volající, který na něj zapomněl, vytvořil nález, který vypadal přesně jako nález, který ho mít nemůže. Kontrola počítá argumenty každého volání pomocných funkcí pro hlášení, volání předávající dál bere jako věc volajícího a volání, které neumí rozebrat, hlásí jako nečitelné, místo aby ho tiše propustila. Zavedena byla s prázdnou baseline: devět porušení, která našla, bylo opraveno, ne zaznamenáno.

docs/DOCTRINE.md scripts/ci/finding-reproduce-check test/cases/138_governance_gates.sh zaznamenané důkazy: zastaralé
Běh zaznamenaný pro tento commit a běh, jehož vstupy se od té doby prostě nezměnily, se hlásí jako různé stavy, nikdy jako jeden

`proven` znamená, že rozdíl mezi vlastním commitem provedení a pracovním stromem je prázdný, s výjimkou řádku samotné účetní knihy — strom před vámi je strom, který běh změřil. `inputs_unchanged` je úspěšný běh, kde se nic z toho, co tvrzení jmenuje, neliší od pracovního stromu — absence známé invalidace, nikoli důkaz na HEAD, protože změna, kterou tvrzení nejmenuje, ho mohla porušit. Smíchání obojího je cesta, jak odznak přestane cokoli znamenat, proto jsou stavy odlišné v modelu, v každé projekci i v kontrole.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/mod.rs test/cases/124_evidence.sh zaznamenané důkazy: zastaralé
Zaznamenání výsledku jednoho testu nikdy nesmaže důkazy zaznamenané pro jiný test

Účetní kniha se slučuje po testech, nepřepisuje se po bězích, takže `bash test/run.sh 84_distribution_model` následované záznamem aktualizuje přesně tuto jednu položku. Zápis celé knihy by z běhu jednoho případu udělal repozitář, který prokázal jedinou věc, což je horší než repozitář, který neprokázal nic, protože to vypadá záměrně.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/ledger.rs test/cases/124_evidence.sh zaznamenané důkazy: zastaralé
Každé tvrzení pojmenovává test, který je má rozhodnout, a každý test pojmenovává tvrzení, která má rozhodnout, z jednoho odvození

`evidence claim` odpovídá, co dokazuje tvrzení, a `evidence proves` odpovídá, co dokazuje test, včetně ostatních tvrzení, která ho sdílejí. Oba čtou stejný join, takže si ty dva směry nemohou odporovat; relace, kterou lze procházet jen jedním směrem, je jen půl relace.

docs/EVIDENCE.md apps/majordomus-cli/src/capability/builtin/evidence.rs test/cases/124_evidence.sh zaznamenané důkazy: zastaralé
Tvrzení, které deklaruje záruku, již žádný zaznamenaný běh nepodporuje, pojmenuje kontrola, místo aby se zobrazilo jako zaručené

`majordomus evidence show --check` skončí s kódem 10 u každého zaručeného tvrzení, které důkazy nepodporují, a `scripts/evidence-check` to hlídá proti .ai/repo/evidence-baseline.txt, který eviduje stav po jednotlivých tvrzeních, nikoli seznam jmen. Selhat mohou dvě věci: záruka, kterou baseline vedla jako podloženou a která už není, a podložená záruka, která z matice zmizela. Tvrzení, které baseline nikdy neznala a které nemá zaznamenaný běh, je nový dluh — pojmenovaný a započítaný, nikdy regrese — protože západka, která by střílela na růst, by zdaňovala sepisování tvrzení. Kontrola je poradní, dokud baseline nese nepodložené řádky, a `--strict` je cílový stav; posuzuje se pouze `guaranteed`, protože advisory, planned a rejected už samy říkají, že aktuální důkaz není tím, co tvrdí.

docs/EVIDENCE.md scripts/evidence-check test/cases/124_evidence.sh zaznamenané důkazy: zastaralé
Tvrzení se čte jako prokázané, jen když byl jeho úspěšný běh zaznamenán na commitu, který předložená revize obsahuje, mezi oběma se nezměnilo nic než kniha důkazů a ani zaznamenaný, ani předložený strom nebyl špinavý; běh na commitu, který předložená revize neobsahuje, se čte jako zastaralý; pojmenovaná revize se posuzuje podle knihy odevzdané v ní a čistý neúspěšný běh téhož testu, který checkout drží neodevzdaný a zaznamenaný mezi nimi, ji omezí na zastaralou

`evidence::freshness` je jediná pravdivostní tabulka, kterou čtou všechny povrchy, a jen její řádek proven se smí zobrazit jako ověřený. `evidence show --presented HEAD` posuzuje načtený commit tak, jak je commitnut, z knihy, kterou ten commit drží, proti jeho stromu změřenému bez pracovní kopie knihy; `--presented-tree` toto měření jen oslabuje. Běh, který drží pracovní kniha a commitnutá ne, je uveden v `presented.uncommitted` a čte se jen monotónním pravidlem, které proven zadržuje a verdikt nikdy nerozhoduje.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/freshness.rs test/cases/502_evidence_is_judged_at_the_presented_revision.sh zaznamenané důkazy: nespuštěno
Test, který odmítl běžet, se čte jako not_run s detailem, že odmítl, nikdy jako prokázaný ani selhávající, a test, který skončil chybou nebo vypršel, se čte jako selhávající

Zaznamenané přeskočení dříve četlo jako selhání, protože tak četl každý výsledek, který nebyl průchodem. Je to absence důkazu, ne protidůkaz: tvrzení čte not_run s podrobností, že test odmítl běžet, a záruka, která na něm spočívá, je stále zjištěním, takovým, které říká, že test odmítl, ne že nebyl nikdy zaznamenán.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/freshness.rs test/cases/502_evidence_is_judged_at_the_presented_revision.sh zaznamenané důkazy: nespuštěno
Pravidlo s neúspěšným testem se čte jako neúspěšné bez ohledu na jeho ostatní testy, takže blokující pravidlo, jehož testy jsou jeden neúspěšný a jeden nespuštěný, je stále nález

`freshness::aggregate` je jediná agregace: selhávající, pokud selhává kterákoli část, jinak nejslabší z částí, které mohou nést důkaz, jinak nejslabší ze všech. Deklarované pořadí řadí failing nad not_run, takže prosté nejslabší z neúspěšného a přeskočeného testu dalo not_run, což není nález, a selhání skrylo.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/freshness.rs test/cases/502_evidence_is_judged_at_the_presented_revision.sh zaznamenané důkazy: nespuštěno
Žádný objevovací socket meshe se neotevře, dokud repozitář necommitne zapnutou deklaraci meshe, a vypnutá či chybějící deklarace se hlásí jako důvod, ne jako chyba

Sdílený server aktivuje runtime meshe pouze z povoleného objektu mesh-declaration (druh, schéma a třída zdrojů ve vrstvě); testy dokazují, že zakázaná deklarace nic neotevře, nevytvoří žádnou identitu a odpoví proč, a že aktivace nikdy nezdrží obsluhu. Kostra, z níž nový repozitář vychází, žádnou deklaraci nedodává (ADR 0050); tento repozitář commituje vlastní povolenou, revidované rozhodnutí, které popisuje docs/MESH.md a drží test/cases/491_the_mesh_is_on_here.sh.

docs/MESH.md apps/majordomus-cli/src/shared.rs apps/majordomus-cli/tests/mesh.rs zaznamenané důkazy: nespuštěno
Každé pozorování objevování konverguje do jednoho omezeného registru, deduplikovaného podle identity uzlu a runtime napříč zdroji, chráněného proti replay na úrovni instance, a každý povrch tento registr promítá a nedrží žádné vlastní peery

tests/mesh.rs dokazuje konvergenci k jednomu záznamu přes skutečný socket a unit testy registru dokazují deduplikaci z více zdrojů, zahazování replayů, zacházení s restartem a mez vyřazování; test/cases/130_mesh.sh pokrývá cestu operátora bez sítě a žádnou část tohoto tvrzení nenese; scripts/ci/mesh-check (kontrola mesh-check) odmítne UDP socket mimo src/mesh/ a druhé místo konstrukce MeshRegistry. Od discovery protokolu 2 (ADR 0067) je záznam jedním runtimem uzlu, takže dva worktrees jednoho stroje jsou dva záznamy pod jedním klíčem.

docs/MESH.md apps/majordomus-cli/src/mesh/registry.rs apps/majordomus-cli/tests/mesh.rs zaznamenané důkazy: nespuštěno
Dva runtimy jednoho repozitáře se propojí jen podepsaným handshake chráněným proti replay, který ověřuje protokol, identitu repozitáře a důvěru, a každé odmítnutí je typované a viditelné

Oddělené serverové procesy se propojují přes TCP a jejich odmítnutí poškozených, padělaných, budoucího protokolu, jiného repozitáře a nedůvěryhodných hello se čtou zpět přes HTTP; unit testy mesh::cooperation pokrývají replay hello a synchronizačního čítače i propojení se sebou samým. Žádné TLS - autenticita je věcí protokolu, důvěrnost sítě (ADR 0067).

.ai/repo/rules/project/mesh-cooperation-is-authenticated.v1.md apps/majordomus-cli/src/mesh/cooperation.rs apps/majordomus-cli/tests/mesh_cooperation.rs zaznamenané důkazy: nespuštěno
Výhradní nárok učiněný na jednom runtime vylučuje překrývající se nárok na každém propojeném runtime a souběžné nároky se všude vyřeší na jednoho pojmenovaného vítěze

Property testy mesh::state dokazují, že fold nezávisí na pořadí ani duplicitě a že žádné prokládání nenechá dva držené exkluzivní claimy ve střetu; integrační testy odmítnou konfliktní claim napříč dvěma procesy, dvěma worktree i přes relay; test rozdělení sítě v procesu a scénář network_partition v laboratoři sloučí rozdělení do jednoho drženého a jednoho konfliktního claimu. Nejde o silnou konzistenci: při rozdělení mohou držet obě strany a konflikt se pojmenuje po zacelení.

.ai/repo/rules/project/mesh-cooperation-is-authenticated.v1.md apps/majordomus-cli/src/mesh/state.rs apps/majordomus-cli/tests/mesh_cooperation.rs zaznamenané důkazy: nespuštěno
Runtimy obsluhující různé repozitáře nikdy nevytvoří kooperativní spojení, ani když se navzájem objeví

Identita repozitáře je digest kořenových commitů nebo deklarovaná hodnota, nikdy cesta; handshake odmítne neshodu oběma směry a ingest odmítne událost jiného repozitáře. Laboratoř to dokazuje mezi uzly Linuxu, které se navzájem objevily multicastem.

.ai/repo/rules/project/mesh-cooperation-is-authenticated.v1.md apps/majordomus-cli/src/mesh/repository.rs apps/majordomus-cli/tests/mesh_cooperation.rs zaznamenané důkazy: nespuštěno
Runtime, který přestane vysílat tep — zhroutil se, byl zabit nebo oddělen sítí — vyprší u svých peerů v deklarované lhůtě, jeho nároky přestanou vylučovat a jeho restart se znovu připojí jako týž runtime bez duplikátu

Serverový proces se zabije signálem SIGKILL a znovu se spustí ve stejném checkoutu; jeho peer jej uvádí jednou s počítanými restarty a claim jeho předchozího běhu zůstává vypršelý. Beats stárnou na vlastních monotónních hodinách každého runtime. Laboratoř to opakuje s docker kill a odpojením sítě.

docs/MESH.md apps/majordomus-cli/src/mesh/cooperation.rs apps/majordomus-cli/tests/mesh_cooperation.rs zaznamenané důkazy: nespuštěno
Runtimy propojené jen přes relay konvergují k jednomu digestu stavu, každá událost je držena jednou, bez smyčky replikace

Tři serverové procesy v řadě se shodnou na digestu, drží stejný počet událostí a po konvergenci nenesou další události; podpisy původu přežijí přenos. Doručení je at-least-once s idempotentní aplikací, ne exactly-once.

docs/MESH.md apps/majordomus-cli/src/mesh/journal.rs apps/majordomus-cli/tests/mesh_cooperation.rs zaznamenané důkazy: nespuštěno
Zhutnění žurnálu spolupráce nemění nic živého — předávka, kterou nikdo nepřevzal, si ponechá svůj proud po omezenou dobu, kdo převzal předávku a kdo odpověděl na revizi, zůstává u nich a zhutněný runtime, který znovu ohlásí tep, se načte znovu celý

Případ 493 spouští tests/mesh_compaction.rs, dva runtimy propojené skutečným podepsaným protokolem přes transport uvnitř procesu, protože žádný black-box ovladač nedosáhne kompakce v omezeném čase (server kompaktuje každých šedesát heartbeatů a mrtvý stream drží patnáct minut; deklarovat lze jen heartbeat a expiraci). Jednotkové testy deníku reprodukují každou vadu zaznamenanou v PR 588 a jeho property test zajišťuje, že kompakce nezmění žádný živý claim, otevřenou relaci, přebírajícího předávky ani odpověď na review na náhodných historiích. Nepokryto – dva runtimy mohou vypsat různé digesty, dokud každý kompaktuje podle vlastního rozvrhu; živý stav se shoduje a docs/MESH.md to říká.

docs/MESH.md apps/majordomus-cli/src/mesh/journal.rs test/cases/493_mesh_compaction_keeps_what_is_live.sh zaznamenané důkazy: nespuštěno
Samostatné linuxové uzly na skutečné síti se navzájem objeví přes multicast, propojí se, sdílejí claimy a předávky a zotaví se z rozdělení sítě i pádu, v laboratoři, kterou CI spouští

Čtyři kontejnery na jednom docker bridge, bez seedů; deset scénářů se změřenými časy zapsanými do target/mesh-lab/evidence.json; úloha CI mesh-lab spustí laboratoř a poté scripts/ci/mesh-lab-evidence, který odmítne záznam, jenž není úplným přejímacím záznamem — laboratoř sama sebe nesoudí. Případ 414 pokrývá tohoto čtenáře a drží jeho požadovanou množinu rovnou scénářům, jichž laboratoř dosahuje. Jeden segment vrstvy 2 a jedno jádro — nikoli směrovaná topologie, topologie s NAT ani WAN; fyzické stroje jsou zdokumentovaný ruční postup.

docs/MESH.md test/mesh-lab/run test/cases/414_mesh_lab_evidence.sh zaznamenané důkazy: nespuštěno
Objevený uzel nezíská žádné provádění ani oprávnění tím, že byl zaslechnut; stav meshe smí změnit jen podepsaný provoz od propojeného uzlu a důvěra označuje záznamy podle explicitní politiky, jejíž výchozí hodnota je deny_unknown

Jednotkové testy důvěry dokazují, že deny_unknown pozoruje, aniž by důvěřoval, sémantiku allowlist a TOFU a že změna klíče u známého id uzlu je odmítnuta; integrační test dokazuje, že padělaná obálka je započtené odmítnutí. Objevení stále nic neuděluje: být slyšen nebo důvěryhodný sám o sobě žádné spojení nepovoluje – spojení vyžaduje handshake z mesh-cooperation-links – a nic, co propojený peer pošle, nic nespouští; příkazy spolupráce zapisují deník tohoto runtime a u přijaté předávky jeden záznam do adresáře handovers tohoto checkoutu (ADR 0067).

.ai/repo/rules/project/mesh-is-observation-not-authority.v1.md apps/majordomus-cli/src/mesh/trust.rs apps/majordomus-cli/tests/mesh.rs zaznamenané důkazy: nespuštěno
Zapnutá deklarace meshe, kterou sdílený server neaktivoval, je selhání kontroly `runtime` v `mesh doctor` (exit 10) nesoucí důvod serveru a řádek `Mesh: DECLARED ENABLED BUT NOT ACTIVE` v briefingu na začátku relace — nikdy tiché vypnutí; a commitnutá deklarace tohoto repozitáře je sledovaná, zapnutá, povoluje flotilu na allowlistu a pojmenovává hub

Runtime drží jediný bit, který říká, zda sdílený server o něčem rozhodl (aktivoval se, nebo odmítl s uvedeným důvodem); kontrola `runtime` v doctoru čte rozhodnutí serveru, je-li bit nastaven, a hlásí absenci, není-li; `majordomus mesh doctor` se ptá běžícího serveru na jeho zprávu, takže verdikt je verdiktem serveru. Knihovna hooků z této zprávy vykreslí řádek briefingu a sama žádný požadavek neposílá. apps/majordomus-cli/tests/mesh.rs dokazuje tři verdikty na skutečném serveru; případ dokazuje odpovědi briefingu a návratový kód přes startovací událost poskytovatele a čte potvrzenou deklaraci tohoto repozitáře (ADR 0059). Nezajišťuje, že mesh k někomu dosáhne, a huby se spouštějí ručně.

docs/MESH.md apps/majordomus-cli/src/mesh/doctor.rs test/cases/494_the_mesh_is_declared_and_held.sh zaznamenané důkazy: nespuštěno
Příchozí povolení, která deklarace meshe na stroji implikuje — port multicastové skupiny, deklarované porty hubu, jejichž adresa je adresou stroje, port serveru za loopbackem — se odvozují z deklarace příkazem `majordomus mesh firewall`, který pojmenuje backend firewallu hostitele, příkazy, které je povolí, a vlastní verdikt firewallu, skončí s exit 10, když je pozorováno chybějící pravidlo nebo jádro zalogovalo zahození směrem na tyto porty, a jehož `apply` spouští příkazy jen jako root a nikdy přes HTTP ani MCP; `mesh doctor` nese stejný verdikt jako svou kontrolu `firewall`

Plán, detekce backendu a každý úsudek o výstupu firewallu jsou čisté funkce s doctesty; hostitele se dotýká jen pozorování a aplikace a každé říká, kdy nemohlo (nepozorovatelné bez roota je absence, ne selhání, pokud log jádra neukazuje zahozené pakety). Případ spouští report nad deklarací tohoto repozitáře a nad fixtures a nikdy nic neaplikuje. Nenutí firewall, na němž příkaz nikdo nespouští, cokoli připustit.

docs/MESH.md apps/majordomus-cli/src/mesh/firewall.rs test/cases/495_the_firewall_admits_the_mesh.sh zaznamenané důkazy: nespuštěno
Poskytovatelé a modely se deklarují jednou v share/models.yaml a CLI, HTTP, OpenAPI, MCP i Cockpit vykreslují tuto jedinou deklaraci bez vlastního názvu modelu

models.list a models.route jsou deklarace schopností, takže každý povrch je projekce; diagnostika katalogu sama při prvním čtení ohlásí duplicitní alias nebo nedeklarovaného dodavatele. Pořadí deklarací je pořadí preferencí směrování, ověřitelné přečtením souboru.

docs/MODELS.md apps/majordomus-cli/src/models/mod.rs test/cases/131_models.sh zaznamenané důkazy: nespuštěno
Rozhodnutí o směrování uvádí, proč byl vybraný model vybrán, a u každého vyloučeného modelu první kontrolu, kterou nesplnil — stejná odpověď na stejnou otázku, bez skrytého stavu

Směrování je čistá funkce nad deklarovaným katalogem a uvedenou potřebou; unit testy dokazují pořadí preferencí, pevné pořadí kontrol za každým důvodem vyloučení a to, že model uvedený přímo se stále kontroluje proti požadavkům.

docs/MODELS.md apps/majordomus-cli/src/models/mod.rs test/cases/131_models.sh zaznamenané důkazy: nespuštěno
Katalog modelů hlásí, zda je nastavena pojmenovaná proměnná s přihlašovacími údaji dodavatele, a nemůže nést žádnou tajnou hodnotu — schéma nemá pole, ve kterém by se dala skrýt

credential_env pojmenovává proměnnou prostředí a zjišťuje se pouze std::env::var_os(..).is_some(); test projde JSON schéma katalogu a odmítne každý název vlastnosti, který zavání přihlašovacím údajem.

docs/MODELS.md apps/majordomus-cli/src/models/mod.rs test/cases/131_models.sh zaznamenané důkazy: nespuštěno
Koncová událost poskytovatele a jeho událost kompakce odvozují znalosti, které epizoda vytvořila, do kandidátních záznamů ve sledovaném stromu, z knihy a gitu a nikdy z konverzace, ať je úloha aktivní, nebo ne, a zaznamenají do knihy, že tak učinily

Cesta uzavření v lib/session.sh spouští deriver poté, co je záznam relace publikován, a před připojením session.closed, takže po každém uzavření následuje jeho řádek knowledge.derived; adaptér komprese jej volá přímo, nezávisle na přepínači kontrolních bodů. Rozhodnutí se stane konvencí, vyřešená otázka faktem, zablokovaná úloha poučením, ověřené dokončení faktem; Next Action předávky je stav pokračování a nikdy se z ní neodvozuje. Nic nečte konverzaci, prompt ani model.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/563_knowledge_is_derived_at_the_boundary.sh zaznamenané důkazy: nespuštěno
Druhé odvození nad týmiž důkazy nic nezapíše, řekne to a nechá pracovní strom beze změny; id záznamu se odvozuje z epizody a výtahu důkazů, takže tentýž fakt vždy skončí v témže souboru

Záznam se složí do dočasného souboru ve stejném adresáři a porovná se bajt po bajtu se souborem, který pojmenovává id; shodný se ohlásí jako beze změny a dočasný soubor se odstraní, odlišný se přejmenuje přes původní. Datum je den řádku s důkazem, nikdy hodiny, a do bajtů nevstupuje žádná náhodná hodnota, takže stejný ledger a stejný git dají na každém stroji stejný soubor.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/564_knowledge_derivation_is_idempotent.sh zaznamenané důkazy: nespuštěno
Vypnutý přepínač politiky nic neodvozuje a řekne to; odvození, které selže uvnitř provider hooku, se zaznamená jako provider.event.failed a hook přesto skončí s 0

session.knowledge_on_end a session.knowledge_on_compact jsou dva přepínače, čtené z politiky a nezávislé na checkpoint_on_compact. Hook musí svému poskytovateli vrátit úspěch a vrácení úspěchu není totéž jako tvrzení, že se práce stala, proto adaptér hlásí selhání přes mj_capture_session_failed s poslední řádkou deriveru jako důvodem a epizodu v každém případě uzavře.

docs/KNOWLEDGE.md lib/capture.sh test/cases/565_knowledge_switch_and_failure_leave_evidence.sh zaznamenané důkazy: nespuštěno
Každý záznam znalostí je validní podle schématu bez neznámého klíče, jednoznačně identifikovaný, doložený důkazy, je-li ověřený, rozlišuje každý odkaz, který uvádí, a neobsahuje žádnou konverzaci; check, doctor a `majordomus knowledge check` odmítnou záznam, který tomu neodpovídá

mj_validate_knowledge_integrity čte candidates/ a curated/ jednou a odmítne kandidáta, který tvrdí verified, visící cíl derived_from nebo relations, duplicitní id napříč oběma adresáři, klíč, který generovaný allow-list nenese, nahrazený záznam bez superseded_by i bez zamítnutí a řádek titulku, popisu či těla, který odpovídá kontrole přepisů, jíž se dodržuje never-store-transcripts. Reference na knihu a git (session, task, decision, commit) se přeloží zde, v jednom průchodu, a jsou vnější vůči kompilátoru grafu, který je nikdy nehlásí jako visící.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/707_knowledge_check_refuses_malformed_records.sh zaznamenané důkazy: nespuštěno
Repozitář, ve kterém se epizody uzavírají a do prahu zastarání nenásleduje žádné odvození znalostí, hlásí doctor a watch jako zastavený zapisovač a zjištění zmizí, jakmile se odvození zapíše

mj_validate_knowledge_lifecycle porovnává dva fakty stejně jako validátor z ADR 0052, uzavírání epizod a následné derivace, posuzované vůči session.freshness.stale_minutes; zároveň čte zdroj životního cyklu kvůli volání deriveru, dokud je zapnuté session.knowledge_on_end. Checkout, jehož ledger neobsahuje žádný řádek knowledge.derived, se přeskočí, ne selže, takže v den, kdy derivér dorazí, žádný checkout nezčervená; první derivace přeskakování ukončí. Čtečka v Rustu knowledge_base.status dělá část posudku o aktuálnosti ze stejných čísel.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/708_health_sees_a_stopped_knowledge_writer.sh zaznamenané důkazy: nespuštěno
verified zapisuje jen promote s důkazy na stdin nebo člověk úpravou souboru, nikdy deriver; povýšení přesune záznam do curated/ a zamítnutí jej nahradí s důvodem, každé zanechá řádek v knize

Prázdný stdin se odmítne, protože úkon bez důkazů je jen tvrzení, a stdin s označením přepisu se odmítne z téhož důvodu, z něhož záznam nesmí žádné nést. Povýšení zachová derived_from, přidá povyšující epizodu, připojí důkazy pod sekci Evidence a zapíše knowledge.promoted; zamítnutí přepíše kandidáta na místě jako superseded se sekcí Rejected a zapíše knowledge.rejected. Deriver přeskakuje povýšené či nahrazené id, takže žádný z těchto úkonů další hranice epizody nevrátí.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/709_knowledge_promotion_is_an_act.sh zaznamenané důkazy: nespuštěno
knowledge observe zapíše jeden řádek ledgeru observation.recorded s jeho druhem, tématem, tvrzením a typovanými odkazy na důkazy, uvnitř otevřené epizody, uvnitř úlohy či mimo ni, a odmítne jakýkoli jiný tvar nebo nepřítomnost epizody, aniž by cokoli zapsal

Druhy jsou friction, workaround, defect, drift a repetition. Subjekt je cesta relativní k repozitáři bez „..“ nebo capability:, rule:, command:, gate: následované identifikátorem; odkaz na důkaz je file:, test:, commit:, issue: nebo claim: následované tím, co jmenuje. Výrok přes více řádků nebo začínající jako replika konverzace se odmítá. Nevalidní pozorování skončí kódem 2; pozorování zaznamenané bez otevřené epizody skončí kódem 10 s odkazem na session start, protože deriver vybírá řádky podle razítka epizody. Každé odmítnutí nechá knihu, jaká byla. Pozorování se na hranici epizody odvodí do kandidáta (ADR 0118).

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/980_a_session_records_what_it_observed.sh zaznamenané důkazy: nespuštěno
Každé pozorování zaznamenané epizodou se na jejím konci a bez modelu stane vlastním kandidátem, který říká, o čem je, a knowledge candidates seskupí záznamy o jednom tématu s epizodami, které za nimi stojí; epizoda, která nic nepozorovala, zaznamená, že nic nenašla

Id pochází z ADR 0091: epizoda následovaná otiskem druhu, subjektu a tvrzení, takže každý soubor patří jediné epizodě a nic se nečte, nesloučí a nezapisuje zpět. Odmítnutý záznam zůstává odmítnutý a pozdější pozorování jeho subjektu je nový kandidát uvedený vedle něj ve stejné skupině. Čtečka v Rustu knowledge_base.candidates odpovídá na stejné skupiny. ADR 0118.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/981_an_observation_becomes_a_grouped_candidate.sh zaznamenané důkazy: nespuštěno
Každý kandidát odvozený z pozorování nese trasu — platform, enforcement, generator, documentation nebo project — odvozenou ze struktury jeho tématu a nikdy z jeho formulace a v repozitáři, který nástroj přijal, trasuje vlastní share/ do project

platform je subjekt command:, capability: nebo rule:majordomus.*, cesta pod vendorovanými pravidly, nebo vlastní share/ nástroje, jen když leží uvnitř repozitáře; enforcement je jiné rule: nebo gate:; generator je cesta, kterou rozsah deklaruje jako generovanou nebo kterou .gitattributes označuje merge=derived; documentation je cesta pod docs/; cokoli jiného je project. Směrování nic nerozhoduje; povýšení a zamítnutí zůstávají úkony. ADR 0118.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/982_a_candidate_is_routed_by_what_it_is_about.sh zaznamenané důkazy: nespuštěno
Úvodní briefing pojmenuje kandidáty čekající na posouzení na této větvi, počet a id, omezeně a v rámci rozpočtu briefingu, a jejich nepřítomnost vypíše, místo aby ji vynechal

Sekce stojí po otevřených otázkách a před předávkou v odvozeném briefingu a je omezena stejně jako blok otevřených otázek. Větev kandidáta je větev epizody, kterou jmenuje jeho derived_from, čtená ze sledovaného záznamu relace nebo, dokud ještě není zapsán, z knihy; kandidát, jehož epizodu tento checkout nedokáže přeložit, je jmenován na vlastním řádku jako unattributed, ne skryt.

docs/KNOWLEDGE.md lib/derive.sh test/cases/710_briefing_names_the_candidates.sh zaznamenané důkazy: nespuštěno
Více kandidátů, než dovoluje strop politiky, nebo kandidát starší než věk daný politikou je advisory zjištění doctoru, které je pojmenuje; obě čísla jsou deklarována jednou v politice

knowledge.candidates_max_files a knowledge.candidate_max_age_minutes se čtou přes mj_pol_req a chybějící klíč se hlásí na třídě pravidla. Stáří revize je stáří položky ve frontě — nejstarší řádek knowledge.derived, který soubor jmenuje, poté commit, který jej přidal, poté datum záznamu — nikdy ne samotný den důkazu. Kandidát, kterého správa verzí nesleduje, je rovněž jmenován, s nápravou git add za fix:, protože záznam, který git nedrží, nikdo neobjeví. Pravidlo se spouští pouze z doctoru, takže plná fronta revizí nikdy nezčervená watch.

docs/KNOWLEDGE.md lib/knowledge.sh test/cases/711_candidates_are_reviewed_not_accumulated.sh zaznamenané důkazy: nespuštěno
Kandidáti čekající na posouzení, jeden záznam podle id s rozřešenými odkazy a stav odvození checkoutu jsou každý jednou deklarace a odpovídají stejným obsahem přes příkazovou řádku, HTTP i MCP

knowledge_base.candidates, knowledge_base.record a knowledge_base.status jsou bloky capability! v jednom modulu; majordomus generate je promítne do cest HTTP, dokumentu OpenAPI, nástrojů a zdrojů MCP, podpříkazů knowledge spustitelného souboru, katalogu modulů cockpitu a inventáře měření výkonu. Čtečka bere kandidáty z indexu, účetní knihu z modulu relací a prahy z čtení politiky v modulu kontinuity; nic nezapisuje a absenci hlásí jako absenci.

docs/KNOWLEDGE.md apps/majordomus-cli/src/capability/builtin/knowledge_base.rs apps/majordomus-cli/tests/knowledge_base.rs zaznamenané důkazy: nespuštěno
Každý spustitelný řádek, funkce a oblast, které změna v crate Rustu přidá nebo se jich dotkne, musí být pokryty testem; změna, která nechá nový kód nepokrytý, se odmítne a nedotčený starý dluh se ponechá

scripts/ci/coverage-differential protne jediný kanonický export llvm-cov (bez testovacího kódu) s řádky, kterých se podle gitu změna dotkla vůči merge-base větve s trunkem, včetně pracovního stromu, a skončí s kódem 10 na první změněné spustitelné položce, kterou žádný test nepokrývá. Pravidlem je project.new-code-is-covered; případ 132 podstrčí záměrně nepokrytý změněný řádek, dokáže, že kontrola selže, pak jej pokryje a dokáže, že projde, a dokáže, že nerozřešitelná báze je UNKNOWN, ne tichý průchod.

docs/COVERAGE.md scripts/rust-coverage test/cases/132_coverage_differential.sh zaznamenané důkazy: nespuštěno
Zpráva commitu, která nesplňuje deklarovanou politiku commitů repozitáře, je odmítnuta v okamžiku zápisu a stávající dluh historie je zaznamenán a nesmí růst

Soudcem je commit.validate; .githooks/commit-msg se ho ptá s odloženými cestami, což je jediný okamžik, kdy lze ještě levně zaznamenat opravu bez testu mezi svými soubory, a scripts/ci/commit-policy se téhož soudce ptá na historii přes commit.history. Hook je v seznamu vynucování politiky deklarován jako commit-policy-on-message a doctor toto zapojení sesouhlasuje. Předtím bylo pravidlo project.conventional-commits jen poradní a jeho chování při selhání znělo "Toto pravidlo nerozhoduje žádný příkaz; rozhoduje recenzent"; nashromáždilo se 48 předmětů nad deklarovanou šířku a 38 neznámých slov typu, aniž si toho někdo všiml.

docs/COMMIT.md apps/majordomus-cli/src/commit/verdict.rs test/cases/274_commit_policy.sh zaznamenané důkazy: zastaralé
Slovník rozsahů, proti kterému se commit posuzuje, se učí z vlastní historie tohoto repozitáře, ne z tabulky, takže subsystém commitnutý dnes je ve slovníku dnes a rozsah mimo něj je varování, ne odmítnutí

commit.scopes čte nejvýše 1500 commitů z git log a počítá souvislost každého scope s prefixy adresářů do hloubky čtyř segmentů; suggest() remízu hlásí jako nejednoznačnou, místo aby ji rozhodl, a neodpoví vůbec nic, pokud žádný dřívější commit nespojuje žádný scope s danými cestami - což je poctivá odpověď pro první commit subsystému a lepší než nejoblíbenější scope repozitáře. Případ dokazuje, že slovník sleduje historii: scope, který byl před commitem o něm neznámý, je po něm známý.

docs/COMMIT.md apps/majordomus-cli/src/commit/scopes.rs test/cases/274_commit_policy.sh zaznamenané důkazy: zastaralé
Plán commitu nese otisk repozitáře, worktree, HEAD a přesné sady změn, ze které byl odvozen, takže plán, podle kterého se jedná po pohybu stromu, se odmítne s důvodem, ne aplikuje

Několik pracovníků sdílí checkout a ještě víc jich sdílí repozitář, takže plán vypočtený na jednom HEAD a provedený na jiném by commitnul soubory, které někdo jiný stageoval, pod zprávou o práci, která už není tím, co se změnilo. Otisk není zámek a závodu nezabrání; odmítá být tím, kdo v něm tiše prohraje. Dva worktree jednoho repozitáře sdílejí repozitář a liší se worktree, což drží jejich plány od sebe. Nese také pravidlo project.derived-files-regenerated: množina změn obsahující generované soubory je jeden commit, protože jen poslední z několika by mohl nést aktuální odvozená data.

docs/COMMIT.md apps/majordomus-cli/src/commit/plan.rs test/cases/274_commit_policy.sh zaznamenané důkazy: zastaralé
Testovací binárka crate, která nespustila žádný test nebo jen filtrovanou podmnožinu, se zaznamená jako přeskočení, ta s neúspěšným testem jako selhání a ta, která nevytiskla žádný výsledek, jako chyba, ať jsou ve výstupu jakékoli barevné kódy; co zatím žádné tvrzení nedokáže pojmenovat, je uvedeno jako zahozené

Výsledkový řádek cargo test říká ok i pro binárku, která nespustila nic, proto recorder čte její počty. Selhávající počet je selhání, binárka, která nic neprošla nebo spustila filtrovanou podmnožinu, je přeskočení, řádek bez počtu nebo binárka bez výsledkového řádku je chyba a escape sekvence se odstraňují jako první. Unit-test binárka crate, její doctesty, binárky mimo tests/ a výsledkové řádky, které nejmenoval žádný řádek Running, jsou v záznamu uvedeny jako dropped s důvodem, protože žádné tvrzení je nemůže jmenovat, dokud je runner nezaznamená po jednom.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/record.rs test/cases/506_a_crate_binary_that_ran_nothing_is_not_a_pass.sh zaznamenané důkazy: nespuštěno
Zaznamenané provedení nese commit a strom, které uvedlo měření jeho vlastního běhu, přičemž měření jmenuje report, ke kterému patří, a nikdy neskrývá sledovanou změnu; měření jiného commitu nebo jiného reportu se odmítne, lokální měření, které nejmenuje žádný report, se odmítne, report z CI bez měření se odmítne a report zaznamenaný bez měření nese neznámý strom, který se nikdy nečte jako prokázaný

evidence stamp měří checkout tak, jak jej běh zanechal, přičemž účetní kniha důkazů je ignorována a vyloučeny jsou jen vlastní nesledované výstupy běhu; evidence record --provenance přenáší toto měření do provedení ve zprávě a digest čistého běhu bere z commitu. Razítko měří v okamžiku pořízení, ne v průběhu běhu, a soubor stromu úlohy CI nejmenuje žádnou zprávu, dokud CI neorazítkuje svou zprávou.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/record.rs test/cases/505_a_recording_carries_what_its_run_measured.sh zaznamenané důkazy: nespuštěno
Každý záznam vytvoří záznam běhu pojmenovávající svůj commit, strom, který měřil běh každého reportu, jeho součty a to, co chybělo, bylo zahozeno nebo neznámé, a souhrn pokrytí se k němu připojí jen svázaný s commitem a stromem, na kterých byl měřen

evidence record vrací EvidenceRunRecord a zapisuje jej přes --run-record; --coverage naváže souhrn scripts/rust-coverage na jeho commit a změřený strom s minimy, která uvádějí soubory prahů. Záznam běhu o verdiktu nerozhoduje; může pouze odepřít proven jediným monotónním pravidlem, které zatím žádný povrch neaplikuje.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/run.rs test/cases/505_a_recording_carries_what_its_run_measured.sh zaznamenané důkazy: nespuštěno
Záznam pořízený s --ledger local zapisuje jen ignorovaný lokální ledger, nemění žádný sledovaný soubor a nehýbe žádným verdiktem

Lokální účetní kniha leží pod .ai/local/evidence/, kterou repozitář ignoruje; sledovaná kniha zůstává jedinou autoritou, z níž se odvozuje verdikt.

docs/EVIDENCE.md apps/majordomus-cli/src/evidence/ledger.rs test/cases/505_a_recording_carries_what_its_run_measured.sh zaznamenané důkazy: nespuštěno
Testovací případ, který odmítne běžet, se hlásí jako přeskočení a tak se i zaznamená, takže kniha důkazů nikdy nemůže číst případ, který nic neověřil, jako důkaz tvrzení, které jmenuje

Případ, který nemohl splnit předpoklad, to oznámil pomocí `exit 0`, tedy stavem, pro který runner zapsal `ok`, takže `majordomus evidence record` zanesl do ledgeru jako úspěch běh, který nic neměřil. `skip` z test/lib.sh skončí s kódem 4 a zapíše soubor, který runner pojmenovává v MJ_SKIP_MARK, runner zapíše SKIP do TSV v sériové i paralelní fázi a Outcome::Skip nic nedokazuje. Přeskočení stále není selhání: návratový kód běhu se nemění a běh, ve kterém všechny případy odmítly, je běh, ne "nenalezeny žádné případy". Ani selhání není přeskočení: případ běží pod `set -e`, `jq -e` selže s kódem 4, když nevyprodukoval výsledek, a 4 bez značky se zaznamená jako FAIL. Stará podoba je odmítnuta tam, kde by se zapsala: případ, který dokazuje toto tvrzení, čte každý soubor v test/cases/ a selže, když některý říká `exit 0` před svým posledním příkazem mimo tělo heredoc nebo komentář, takže případ může skončit se stavem 0 jen tím, že dojde ke svému konci.

docs/EVIDENCE.md test/run.sh test/cases/413_a_skipped_case_is_not_a_proof.sh zaznamenané důkazy: nespuštěno
Majordomus uvažuje, rozhoduje, implementuje a ověřuje i bez jediného poradce: chybějící poradci se hlásí jako běžný stav, podstatná nejistota dostane strukturované lokální posouzení a závěr netvrdí, že proběhlo nezávislé posouzení

případ staví své prostředí od nuly (env -i, PATH obsahující jen git a node, žádné přihlašovací údaje), takže platí i na stroji, kde je nainstalován každý advisor.

docs/REASONING.md apps/majordomus-cli/src/reasoning/policy.rs test/cases/730_reasoning_works_with_no_advisor.sh zaznamenané důkazy: nespuštěno
Každý transport poradce podléhá jednomu kontraktu — typovaná selhání, termíny, zrušení, normalizované odpovědi, hlášené využití, zakrytá tajemství — prokázanému proti atrapám bez sítě, modelu či přihlašovacích údajů

node --test scripts/lib/advisors/contract.test.mjs; případ odmítne běh s méně testy, než sada obsahuje.

docs/REASONING.md scripts/lib/advisors/contract.mjs test/cases/731_advisor_transport_contract.sh zaznamenané důkazy: nespuštěno
Poradci, kteří se neshodnou, nikdy nerozhodují počtem: závěr je odmítnut, dokud je neshoda nad jeho posouzením nevyřešená, vyřešení vyžaduje důkazy a každá obdržená odpověď musí být zvážena

případ nechá zvítězit menšinový postoj, jakmile spor rozhodne experiment.

docs/REASONING.md apps/majordomus-cli/src/reasoning/store.rs test/cases/732_disagreement_is_settled_by_evidence.sh zaznamenané důkazy: nespuštěno
Poradce, který vyprší, je omezen rychlostí, odmítne své přihlašovací údaje nebo odpoví chybně formátovaně, je zaznamenán přesně jako takový, nikdy neblokuje práci, otevře jistič, který se po ochlazení zase zavře, a nikdy neshodí relaci

circuit se odvozuje ze zaznamenaných výsledků a hodin; případ zkracuje cooldown pomocí MAJORDOMUS_REASONING_COOLDOWN_SECONDS.

docs/REASONING.md apps/majordomus-cli/src/reasoning/availability.rs test/cases/733_advisor_failure_and_recovery.sh zaznamenané důkazy: nespuštěno
Rozhodnutí a jeho původ přežijí relaci: další relace je najde ve svém kontextu a předávce, znovu použije platný závěr místo další konzultace a znovu jej otevře jen na základě nových důkazů

skriptovaný poradce relace B by se při dotazu zasekl, takže znovupoužití dokazuje absence konzultace.

docs/REASONING.md apps/majordomus-cli/src/reasoning/state.rs test/cases/734_reasoning_survives_the_session.sh zaznamenané důkazy: nespuštěno
Poradci se deklarují jednou v share/advisors.yaml odkazem na tabulku providerů a katalog modelů; nový poradce se dostane do příkazové řádky, politiky, HTTP, OpenAPI, MCP i Cockpitu bez úpravy jediného konzumenta

případ přidá reprezentativního poradce do fixture katalogu a přečte jej zpět z každého povrchu, pak odstraní jeho spustitelný soubor a vidí jej všude jako nedostupný.

docs/REASONING.md share/advisors.yaml test/cases/735_a_new_advisor_needs_no_consumer_edit.sh zaznamenané důkazy: nespuštěno
Relace si nemůže nárokovat revizi, kterou nedostala: konzultace musí jmenovat poradce, kterého vybral její zaznamenaný plán, revize závěru se počítá a reasoning check a doctor odmítnou padělaný záznam, vazbu na poskytovatele, přihlašovací údaje modelu v CI a odmítnuté tvrzení v dokumentu

negativní případ: každá vada je podstrčena a musí být pojmenována příkazem reasoning check (kód 10) i doctorem.

docs/REASONING.md apps/majordomus-cli/src/reasoning/check.rs test/cases/736_reasoning_check_refuses_drift.sh zaznamenané důkazy: nespuštěno
Zda úloha přidala dluh, zanechala branch nebo worktree, nebo rozrostla backlog, odpovídá invariant dokončení z gitu, základů dluhu a zaznamenaného pozorování forge, měřeno od místa, kde úloha začala; odečet, který nebyl proveden, je neznámý, nikdy propuštění

odečty patří repozitáři, ne jednomu pracovníkovi; případ přidá záznam do baseline, vytvoří větev a worktree a poškodí výchozí commit úlohy, aby viděl unknown místo pass.

docs/CLI.md apps/majordomus-cli/src/gates/closing.rs test/cases/1037_the_closing_question_is_measured.sh zaznamenané důkazy: nespuštěno
Každý diagram Mermaid sestaveného webu dostane id (diagram-<name>), seznam svých uzlů, ovládací prvky prohlížeče a odkaz pro každý uzel, který je identitou objektu, k němuž web má stránku, vše odvozené při buildu; odkaz na

případ staví fixture web, spouští průchod a scripts/ci/link-check nad ním a podstrčí nedeklarovaný uzel, uzel jiného diagramu, chybějící diagram a duplicitní deklarovaný název; chování prohlížeče je specifikace diagramu ve scripts/interaction-probe, kterou toto tvrzení nepokrývá.

docs/DIAGRAMS.md scripts/lib/diagrams.mjs test/cases/3006_diagrams_are_interactive_and_linkable.sh zaznamenané důkazy: nespuštěno

advisory

claimzdrojimplementacetestzaznamenané důkazy
Záznam rozhodnutí bez úlohy, hlavy (head) a důvodu se hlásí a neblokuje

decisions.md je záměrně ručně editovatelný, takže nepřipsatelná položka je varování. finish stále odmítne, když profil vyžaduje záznam, který nenajde.

docs/DOCTRINE.md lib/check.sh test/cases/21_decision_question.sh zaznamenané důkazy: nespuštěno
Třída schopností, úsilí při uvažování, upovídanost výstupu, kontext a ověřování jsou pět nezávislých os

Osy se validují a promítají do instrukcí workeru. Zda je worker dodržuje, zvenčí pozorovat nelze.

share/skeleton/profiles/implementation.yaml lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Profil pojmenovává třídu schopností, a ne model konkrétního dodavatele

Přiřazení třídy ke konkrétnímu modelu je na tom, kdo spouští pracovníka. Majordomus model nikdy nevybírá ani nevolá.

share/skeleton/profiles/deep-work.yaml lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Profil deklaruje, jaký kontext má worker načíst, a nic víc

majordomus context nyní sestavuje briefing z těchto přepínačů a tento výběr je zaručen (viz context-assembly). Toto tvrzení zůstává informativní, protože nic neměří, co worker po předání briefingu skutečně přečetl.

share/skeleton/profiles/routine.yaml lib/check.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno
Stupňování úsilí při uvažování po opakovaných zablokovaných pokusech se zaznamenává, nepředpokládá se share/skeleton/profiles/debugging.yaml lib/update.sh test/cases/03_update.sh zaznamenané důkazy: nespuštěno
Profil určuje, jak často má worker vytvářet checkpoint, a zastaralá úloha se hlásí

Zpráva o zastaralosti je zaručena. To, zda worker vytváří kontrolní body, zaručeno není.

share/skeleton/policy.yaml lib/check.sh test/cases/04_start_check.sh zaznamenané důkazy: nespuštěno

plánováno

claimzdrojimplementacetestzaznamenané důkazy
Úloha bude vědět, které commity vytvořila, místo aby je odvozovala z rozsahu

Rozsah se dnes kontroluje pomocí git diff base..HEAD a rozsah commitů nemá autora, takže když do téže větve ve stejném checkoutu commituje jiná relace, její soubory se započtou jako práce této úlohy. Zaznamenání každého commitu v okamžiku, kdy vznikne, mění otázku z heuristiky nad rozsahy na výčet. Seznam by byl jen vyhledávací tabulkou, kterou git přebije, nikdy autoritou, a přepsaný commit by se ohlásil jako nerozpoznaný, ne odhadem přiřazený.

docs/CONTINUITY.md — — zaznamenané důkazy: žádný test
Volitelné runtime adaptéry omezí velikost čtení, velikost výstupu a fan-out podle limitů odvozených z profilu

Jediná studovaná implementace byla během pár dní vrácena zpět, protože její limity byly globální konstanty, ne odvozené z úlohy.

docs/DESIGN.md — — zaznamenané důkazy: žádný test
Telemetrie provádění se bude zaznamenávat, jakmile ji poskytovatel poctivě zpřístupní

Dnes nic neměří spotřebu tokenů. Každé pole estimated_ je označeno a vyloučeno z vynucování.

docs/DESIGN.md — — zaznamenané důkazy: žádný test
Majordomus uvede změnu celkového počtu tokenů jen z porovnaných, ověřených běhů, které splňují pravidlo publikace dané metodikou

Měření, jeho runner i kalkulátor existují; chybí dostatek důkazů. Generovaná zpráva uvádí, co zaznamenané běhy ukazují a proč z nich zatím žádné tvrzení neplyne.

docs/ECONOMICS.md — — zaznamenané důkazy: žádný test
Náklady na přijatý výsledek se budou vykazovat jen z naměřených dat docs/DESIGN.md — — zaznamenané důkazy: žádný test
Doporučení směrování se budou odvozovat z naměřených dat o nákladech a výsledcích

Pouze doporučení. Majordomus model nevolá.

docs/DESIGN.md — — zaznamenané důkazy: žádný test
Jedna politika bude sdílena napříč repozitáři a pracovníky docs/DESIGN.md — — zaznamenané důkazy: žádný test
Milník bude na GitHubu uzavřen, teprve až budou splněny intenty, které realizuje

Projekce na GitHub uzavře milník jen podle jeho odvozeného stavu plánu a žádný záměr nečte. Uzavřenou práci, které důkazy odporují, odmítne kontrola intent-realization, ne tracker.

docs/PLANNING.md — — zaznamenané důkazy: žádný test
Kritérium rozhodnuté příkazem nebo nasazením bude splněno zaznamenaným důkazem

Takové kritérium se rozváže a čte jako `not_derivable` a samo nikdy nenaplní kritérium, protože kniha důkazů zaznamenává jen běhy testů a tvrzení. Záměr, jehož kritéria jsou všechna tohoto druhu, dnes nelze splnit.

docs/PLANNING.md — — zaznamenané důkazy: žádný test
Žádný pull request nelze mergnout do výchozí větve, dokud je stav verdiktu červený, protože to vyžaduje pravidlo větve

Pojmenováno, aby opomenutí bylo vidět, a ne jen naznačeno tvrzením výše, které je předpokládalo. Změřeno 2026-09-11 - `gh api repos/korczis/prismatic-majordomus/branches/master/protection` odpovídá 404 Branch not protected a `gh api repos/korczis/prismatic-majordomus/rulesets` odpovídá []. Na master tedy není žádný povinný stav a každá kontrola v tomto repozitáři je při merge pouze poradní, což je důvod, proč může červený trunk přetrvávat, proč mohou odvozená data zastarat po merge na straně serveru (obojí zaznamenává docs/CI.md) a proč poctivé čtení zeleného běhu zní "nic nenamítalo", a ne "nic nemohlo namítat". Uzavření je úkon v nastavení repozitáře, který provádí operátor, ne změna tohoto stromu; je zde zaznamenáno, protože slib, který nikdo nedodržuje, je horší, když nikdo nevidí, že dodržen není.

docs/CI.md — — zaznamenané důkazy: žádný test

zamítnuto

claimzdrojimplementacetestzaznamenané důkazy
Řazené nebo sémantické vyhledávání v trvalých záznamech záměrně není implementováno

Korpus tvoří hrstka souborů Markdown a jeden JSONL. Index nebo úložiště embeddingů by byl druhý zdroj pravdy, který je nutné udržovat v souladu s prvním, a prohledání je rychlejší než tento problém. Přehodnotí se jen tehdy, objeví-li se repozitář, kde je prohledání měřitelně příliš pomalé.

docs/CONTINUITY.md — — zaznamenané důkazy: žádný test
Záznam úlohy nemá závislosti; posloupnost mezi relacemi se nereprezentuje

Odmítnuto pro záznamy úloh, a jen pro ně. Úkoly a milníky závislosti nesou, validované jako dva grafy — viz docs/ROADMAP.md a docs/PLANNING.md. Odmítnuto zůstává, aby úloha, záznam práce jedné relace, čekala na jinou; na checkout je aktivní jedna úloha a koordinací mezi checkouty je zpráva o překryvu rozsahů. Původní znění říkalo, že nikde neexistuje graf závislostí, což přestalo platit, když přišel model plánu.

docs/DESIGN.md — — zaznamenané důkazy: žádný test

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