○zaručeno
Znalosti repozitářepokročilýmaintainerreviewerjen pro čtení
Někdo přidá adresář pod .ai/ — novou sekci, místo pro data, podrozdělení stávající — a nenapíše README.md. Ten den se nic nerozbije. Adresář nepřispívá nic do řetězce, který pracovník rozlišuje, nejmenuje žádný formát pro soubory, které drží, a příští člověk, který tam přistane, přečte jeho předky a zbytek hádá. Ponecháno bez povšimnutí takto vrstva s kontraktem na adresář přechází ve vrstvu s kontraktem na adresář, na který si někdo vzpomněl.
context validate: celý strom, přičemž missing-contract jmenuje každý adresář, který dluží dokument
context resolve <path>: odmítne, dokud je strom rozbitý, místo aby odpovídal z části, která je náhodou v pořádku
doctor: tatáž kontrola přes majordomus.context-integrity, kterou spouští pre-commit hook
setup: undocumented-directory
given:
- 'a repository with Majordomus installed, a new section that carries its contract, and one directory below it that carries none'
steps:
- id: validate
run: ['context', 'validate']
note: 'the directory with no document is named, and the one that has its contract is not'
expect:
exit: 10
stdout_contains: ['missing-contract', 'zones/deep']
stdout_not_contains: ['zones — missing-contract']
- id: resolve
run: ['context', 'resolve', '.ai/repo/zones']
note: 'nothing resolves against a tree that does not validate, not even the part that is correct'
expect:
exit: 10
stdout_contains: ['does not validate']
- id: doctor
run: ['doctor']
note: 'the same finding through the rule majordomus.context-integrity, which the pre-commit hook runs'
expect:
exit: 10
stdout_contains: ['missing-contract']
then:
- 'a directory of the layer with no context document is a named failure, not a silence'
- 'the same tree, and what each directory owes, is readable through majordomus_directories and GET /api/v1/directories without running the gate'
- 'the finding names the directory, so the fix is one file in one place'
- 'the tree refuses to resolve until it is fixed, so nobody reads a half-documented layer'
- 'the same tree, and what each directory owes, is readable through majordomus_directories and GET /api/v1/directories without running the gate'
Povinnost zdokumentovat adresář se vynucuje, ne pamatuje. Oprava je jeden soubor: README.md nesoucí schema: context/v1, který říká, k čemu adresář slouží a co do něj patří. Kde jsou adresáře pod kontraktem instancemi druhu, a ne sekcemi — dovednost a její příklady — řídicí kontrakt je vyjme pomocí children.require_contract: false a výjimka putuje se stromem, který popisuje.
Scénář
Provedeno proti skutečnému nástroji v repozitáři připraveném pomocí undocumented-directory, při každém generování tohoto webu. To, co následuje, není popis toho, co by se mělo stát; je to to, co se stalo.
dáno
- ·repozitář s nainstalovaným Majordomem, nová sekce, která nese svůj kontrakt, a jeden adresář pod ní, který žádný nenese
kdy
- 1
majordomus context validate - 2
majordomus context resolve .ai/repo/zones - 3
majordomus doctor
pak
- ·adresář vrstvy bez dokumentu kontextu je pojmenované selhání, ne ticho
- ·týž strom a to, co každý adresář dluží, lze číst přes majordomus_directories a GET /api/v1/directories bez spuštění kontroly
- ·nález pojmenovává adresář, takže oprava je jeden soubor na jednom místě
- ·strom se odmítá rozlišit, dokud není opraven, aby nikdo nečetl napůl zdokumentovanou vrstvu
- ·týž strom a to, co každý adresář dluží, lze číst přes majordomus_directories a GET /api/v1/directories bez spuštění kontroly
Co nástroj udělal
Důkaz běhu, z něhož byla tato stránka vygenerována: pass, 3 kroky. Výstup je normalizován: cesta k repozitáři, časová razítka, id a doby trvání jsou zástupné hodnoty; nic dalšího se neupravuje.
Testováno v test/cases/94_use_cases.sh, který spouští každý scénář a odmítne krok, jehož zaznamenaný výstup není tím, co vyprodukoval.
-
adresář bez dokumentu je pojmenován a ten, který svůj kontrakt má, ne
FAIL context .ai/repo/zones/deep — missing-contract: carries no context document; a directory inside the tree says what it is for, or its governing contract exempts it (children.require_contract: false) [reproduce: printf '%s\n' '---' 'schema: context/v1' > .ai/repo/zones/deep/README.md]
context validate: 1 problem(s) in 20 document(s)
- exit 10
- stdout_contains /missing-contract/
- stdout_contains /zones/deep/
- stdout_not_contains /zones — missing-contract/
-
nic se nerozřeší proti stromu, který neprojde validací, ani ta část, která je správná
FAIL context .ai/repo/zones/deep — missing-contract: carries no context document; a directory inside the tree says what it is for, or its governing contract exempts it (children.require_contract: false) [reproduce: printf '%s\n' '---' 'schema: context/v1' > .ai/repo/zones/deep/README.md]
majordomus: context: the tree does not validate (1 problem(s) above); nothing is resolved partially
- exit 10
- stdout_contains /does not validate/
-
totéž zjištění přes pravidlo majordomus.context-integrity, které spouští pre-commit hook
OK knowledge graph — buildable here: 99 node(s), 58 edge(s), compiled into a temporary file and removed; no stored index to go stale
OK knowledge records — 0 record(s) valid against knowledge/v1; every reference resolves [reproduce: majordomus knowledge check]
OK knowledge candidates — 0 await review, cap 40
OK layout .ai/manifest.yaml — schema ai-repository/v1
OK layout .ai/repo/scope.yaml — version 1; 14 in pathspec(s); every key is one the schema declares
OK layout .ai/local/ — ignored, and nothing under it is tracked
OK layout .ai/ — every section the manifest names exists; the layer is readable without the tool
OK layout .ai/repo/prompts — present
OK layout .ai/local/state/handovers — present, 0 record(s)
OK layout .ai/local/state/checkpoints — present, 0 record(s)
OK records ledger.jsonl — every line is a well-formed event
OK policy 39 key(s) — every policy value the code reads is declared, with no reader-side default
OK bootstrap 3 projection(s) — each points at .ai/README.md, carries no rule of its own and names only rules in force
OK catalogue 0 use case(s), 0 application(s) — every command, doctrine, claim, responsibility, category, setup and cross-reference resolves, both directions
FAIL context .ai/repo/zones/deep — missing-contract: carries no context document; a directory inside the tree says what it is for, or its governing contract exempts it (children.require_contract: false) [reproduce: printf '%s\n' '---' 'schema: context/v1' > .ai/repo/zones/deep/README.md]
OK policy .ai/repo/policy.yaml — parsed, version 1
OK profiles 4 files — parsed; default 'implementation' exists
INFO adr .ai/repo/adrs/ — no decisions; nothing to validate
OK records decisions.md — every entry is attributable
INFO project .ai/repo/project — no canonical project model here; nothing to validate
OK command surface — 30 public command(s), reconciled against the dispatch table [reproduce: majordomus doctor]
OK doctrine 50 of 61 rule(s) carry a validator — validator, dispatch, propagation, test and CI resolve for every one of the 50; the remaining 11 declare no validator and this check does not examine them
FAIL wiring doctor-on-commit — hook .git/hooks/pre-commit does not exist [reproduce: ls -l .git/hooks/pre-commit]
FAIL wiring finish-on-push — hook .git/hooks/pre-push does not exist [reproduce: ls -l .git/hooks/pre-push]
OK command coverage — every public command is exercised and refuted [reproduce: bash test/run.sh 31_command_coverage]
OK resolver handovers — no record for this worktree and branch (absence, not a stale match) [reproduce: majordomus handover --resolve]
OK lifecycle activity — 0 episode(s) opened here; too few to judge whether the writers stopped
OK knowledge wiring — the close path and the compaction adapter call the deriver
OK knowledge deriver — no episode has closed here; nothing to judge
INFO project .ai/repo/project — no canonical project model here; nothing to validate
OK projection AGENTS.md — content matches its stamp
OK projection CLAUDE.md — content matches its stamp
OK projection GEMINI.md — content matches its stamp
OK budget AGENTS.md — 42 lines, budget 150
OK links AGENTS.md — all references resolve
OK counts AGENTS.md — no hardcoded counts
OK context builder — 21 lines, budget 300 [reproduce: majordomus context]
OK capture share/schemas/majordomus/capture/capture.v1 — 2 file(s) describe majordomus.capture/v1 at the path the identifier derives: the record as JSON Schema, the document as protobuf
OK capture .ai/local/prompts — ignored and untracked
OK capture .ai/local/prompts — no records yet; the archive is empty
OK capture .ai/local/prompts — every prompt is present as all three: the record, the Markdown and the YAML
OK prompts .ai/local/prompts — the archive and every record in it are readable by their owner only
OK prompts .ai/local/prompts — no records yet; the archive is empty
OK prompt 4 asset(s) — front matter valid, every token known
OK records open-questions.md — every entry parses
OK retention ledger — 1 lines, cap 5000
OK retention handovers — 0 files, cap 200
OK retention checkpoints — 0 files, cap 500
OK retention sessions — 0 records, cap 500
INFO project .ai/repo/project — no canonical project model here; nothing to validate
OK rules .ai/repo/rules/vendor/majordomus — every file matches the manifest (1 (1.0.0-alpha.2))
OK rules 61 rule(s) — resolve in one deterministic order; vendored baseline plus project rules, no override — 51 carry a validator, 10 are normative text this tool does not check
OK rules blocking — all 44 blocking rule(s) carry a validator
OK schema rules — 61 rule(s) resolve in one order: the vendored baseline in manifest order, then the project's, as a dependency graph
OK schema share/kinds.yaml — 36 kind(s); every one that carries metadata declares a schema
OK schema share/schemas — 53 schema(s), each valid JSON and each applied — by a kind, through an allow-list the tool reads, by a validator that names it, or as a generated document's contract (15)
OK records 0 record(s) — every changed_files names work, not generated or local state
OK session .ai/local/session-contexts — ignored and untracked
OK session .ai/local/session-contexts — no working contexts yet; the store is empty
INFO skill .ai/repo/skills/ — no skills; nothing to validate
INFO use-case 30 advisory gap(s) — not covered by an active use case, and the policy does not require it: command:init command:update command:doctor command:watch command:start command:context command:checkpoint command:handover command:check command:finish command:history command:decision command:question command:prompt command:evidence command:skills command:capture command:search command:doctrine command:plan command:version command:session command:knowledge command:adr command:usecase command:rules command:migrate command:recover command:bench command:archive [reproduce: majordomus usecase coverage]
OK use-case 0 of 30 target(s) covered — every public command the policy requires is named and run by an active use case (policy use_cases.coverage)
INFO env - — bash <version>, git <version>, jq <version>, shellcheck present
WARN clone unpushed — commits on no remote: main(3) — work on one disk is invisible to every other session and cannot be integrated [reproduce: git push -u origin <branch>]
OK clone uncommitted — no linked worktree, so no uncommitted work can sit in one
INFO clone trunk — no remote-tracking branch, so this checkout's distance from the remote trunk cannot be measured
· reasoning <decided by the advisors and the executable of the recording machine>
· budget doctor — <timed against the policy budget>
doctor: 3 failure(s)
- exit 10
- stdout_contains /missing-contract/
Proč to nástroj ví
Řetězec od této stránky ke kódu: případ užití jmenuje příkazy, pravidla a tvrzení; každé pravidlo se dispatchuje z registru a každé tvrzení jmenuje test, který ho dokazuje; scénář výše provedl příkazy. Nic v tomto řetězci není text o záměru.
Přes MCP se ke stejné vrstvě dostanete přes majordomus_directories (povrch MCP).
Pravidla, díky nimž platí
Uplatněné záruky
- ○zaručeno Kontext, který se vztahuje na cestu, se skládá z dokumentů vrstvy s rozsahem, od kořene k cíli, v jednom deterministickém pořadí s původem, a strom, který neprojde validací, nevyřeší nic
- ○zaručeno Každý adresář vrstvy nese kontextový dokument, výjimku deklaruje kontrakt, který podstrom řídí, a potomek smí tento požadavek zúžit, ale nikdy oslabit
Související případy užití
Vypočteno z toho, co sdílejí: tvrzení, pravidla, příkazy, kategorie, aplikace. Tento seznam nikdo neudržuje.
- Dohledat změnu k dokumentům kontextu, kterých se týkáVypíše dokumenty kontextu s rozsahem, vyřeší, které se vztahují na cestu a proč, a zjistí, kterých dokumentů se změna dotýká, než přistane.
- Řekněte jednou, k čemu vaše práce slouží, a nechte to říkat každý povrchZaznamenejte provozní způsob selhání jako jeden soubor a nechte na něj odpovídat příkazovou řádku, API, MCP i web, aniž by se kdekoli registroval.
- Čtěte jen kontext, který se vejde do rozpočtu, a vězte, co se zahodiloSestavte kontext, který worker potřebuje právě teď, v pořadí autority, oříznuté na rozpočet řádků, a podívejte se na každou zahozenou sekci jmenovanou s důvodem.
- Určit jako data, co patří do AI kontextuPřečtěte si deklarovanou politiku rozsahu repozitáře, zjistěte, které cesty jsou v indexu a které mimo něj, a nechte ji uplatňovat doctor a index znalostí místo pevně zadaného seznamu.
- Pracovat na větvi v jediném worktree, kam patříZaložit větev bez volby cesty, najít z kteréhokoli checkoutu všechny checkouty repozitáře a přivést zbloudilý domů s nedotčenou necommitnutou prací.
Okamžiky, na které to odpovídá
-
→ našel pravidlo pro adresář v README, které žádná relace nikdy nenačetla Lokální pravidlo je buď v vždy načítaném souboru, kde za něj platí každá relace, nebo vedle kódu, kde ho nic nesvazuje s upravovanou cestou.
-
→ našel totéž vysvětlené třikrát, pokaždé trochu jinak Každá ručně udržovaná kopie faktu se rozchází podle vlastního rozvrhu a čtenář nepozná, která kopie je aktuální.
-
→ strávil první hodinu v neznámém repozitáři zjišťováním, co je tu normální Co je v codebase konvenční, je znalost pravidelných přispěvatelů, takže za ni platí znovu každý nově příchozí, člověk i stroj.
-
→ recenzoval dobře napsaný příspěvek, který porušil konvenci, již neměl jak zjistit Asistenti umožňují komukoli vyrábět věrohodné příspěvky ve velkém; konvence, které z nich dělají správné, jsou stále jen v hlavách správců.