Somebody needs to know what this repository actually holds. Not the code — the governance:
which rules are in force, what a decision put in force, which capabilities exist and where
each came from, what is generated and what was written, what is stale, what is failing.
Today the answers are spread across a JSON document, a Swagger form, three commands with
different exit codes, and six hundred files. A reviewer reads files. A newcomer reads
files. An operator who wants to try one capability writes a curl by hand from a schema.
The temptation is to build a dashboard: a second application that fetches the API and lays
it out, with its own list of pages, its own idea of what a capability is, and its own
health checks. That is a second model of the same facts, and it drifts on the first edit
that forgets it.
knowledge sources: the source classes the repository declares — the same classes that
become the object kinds the Cockpit's navigation offers, so what it can show is what the
repository says exists
doctor: proves the layer and its projections before anything serves them; the Cockpit's
own health page is the executable's side of the same question, and it names the engine
behind every verdict rather than reaching one of its own
The server itself is started by the AI client's autostart or by majordomus serve, and it
logs the URL. Everything below is on that one port: no second process, no second command.
setup: installed-wired
given:
- 'a repository with the layer installed, its projections generated and the client autostart wired'
steps:
- id: what-the-server-will-serve
run: ['knowledge', 'sources']
note: 'the source classes the Cockpit lists as object kinds are the ones the repository declares'
expect:
exit: 0
stdout_contains: ['^policy +shared +policy', '^knowledge sources: [0-9]+ file']
- id: sound-before-it-is-served
run: ['doctor']
note: 'the Cockpit renders what the layer holds; a layer that does not pass here is what its health page would report'
expect:
exit: 0
stdout_contains: ['doctor: 0 failure']
then:
- 'the shared server the client autostart binds serves the Cockpit at /cockpit beside Swagger UI at /swagger'
- 'every page is rendered from a capability, so a capability added to the registry has a page with no edit to the Cockpit'
- 'the health page reports one check per dimension, each naming the engine that decided it and the command that reproduces it'
The Cockpit is a projection of the capability registry, not an application over it. Every
page is laid out from what a capability answered through the same executor MCP and the HTTP
routes call, so a page is counted in the same performance counters, answered from the same
cache and bound by the same validation as any other caller.
What that buys, concretely: the navigation's catalogues are the registry's modules, the
index's kinds and the graph derivations; the capability explorer is the registry filtered;
the form that runs a capability is generated from its input schema and calls its real
route; the examples on its page are its own benchmark cases. Adding a capability adds its
page, its navigation entry, its search entry, its palette entry, a working form and a
benchmark target, with nothing edited in the Cockpit.
The graphs answer the questions a list cannot: what a rule depends on, what a decision put
in force, which module feeds which interface, what shape .ai/ is. They are derived in the
executable from the registry and the index, served as ordinary capabilities, and drawn by a
library that is a consumer of the same nodes and edges — so a reader without JavaScript
gets every node and every edge as a table, and loses nothing.
-
the source classes the Cockpit lists as object kinds are the ones the repository declares
context shared context 77afef342ab6 .ai/README.md
context shared context 1aa0cfc9a98b .ai/repo/README.md
context shared context 210fe3243d2c .ai/repo/adrs/README.md
context shared context 6dc507447b9f .ai/repo/applications/README.md
context shared context 06b0af6581a4 .ai/repo/deployments/README.md
context shared context 18111b83801f .ai/repo/features/README.md
context shared context c1ae02e4d03c .ai/repo/knowledge/README.md
context shared context 9939471c0d0a .ai/repo/knowledge/candidates/README.md
context shared context 3be0a8483464 .ai/repo/knowledge/curated/README.md
context shared context 53695b36fc07 .ai/repo/mesh/README.md
context shared context cb11ba2b8aeb .ai/repo/profiles/README.md
context shared context b09939447728 .ai/repo/project/README.md
context shared context aaade142a03c .ai/repo/prompts/README.md
context shared context fa27e74a38c5 .ai/repo/rules/README.md
context shared context 39f8246be04e .ai/repo/rules/project/README.md
context shared context 07e9f6f77e38 .ai/repo/sessions/README.md
context shared context c08c8f28ce3d .ai/repo/skills/README.md
context shared context 99905d2cd5a9 .ai/repo/use-cases/README.md
context shared context 95d10752d6ae .ai/repo/why/README.md
context shared context 124141e223e4 .ai/repo/workflows/README.md
policy shared policy 663ed6512fa1 .ai/repo/policy.yaml
scope shared scope 264ce22ddc67 .ai/repo/scope.yaml
profile shared profile 2bbbd4d3b45b .ai/repo/profiles/debugging.yaml
profile shared profile 4e0b1ed0bb8c .ai/repo/profiles/deep-work.yaml
profile shared profile 4e4fe1af1c3d .ai/repo/profiles/implementation.yaml
profile shared profile c3f4f310c328 .ai/repo/profiles/routine.yaml
rule shared rule fa27e74a38c5 .ai/repo/rules/README.md
rule shared rule 39f8246be04e .ai/repo/rules/project/README.md
rule shared rule 8513b44dfe15 .ai/repo/rules/vendor/majordomus/rules/adr-integrity.v1.md
rule shared rule 1c35b4925c67 .ai/repo/rules/vendor/majordomus/rules/ai-layout-integrity.v1.md
rule shared rule 6b737b2767d6 .ai/repo/rules/vendor/majordomus/rules/blocker-resolution.v1.md
rule shared rule d6a33fc1b28c .ai/repo/rules/vendor/majordomus/rules/bootstrap-integrity.v1.md
rule shared rule f8137aa6fcd4 .ai/repo/rules/vendor/majordomus/rules/candidates-reviewed.v1.md
rule shared rule 826525b6e3a9 .ai/repo/rules/vendor/majordomus/rules/catalogue-integrity.v1.md
rule shared rule a56642f78cc5 .ai/repo/rules/vendor/majordomus/rules/checkpoint-freshness.v1.md
rule shared rule 78f8269d371d .ai/repo/rules/vendor/majordomus/rules/command-coverage.v1.md
rule shared rule e468040ac890 .ai/repo/rules/vendor/majordomus/rules/command-surface.v1.md
rule shared rule adf88f652092 .ai/repo/rules/vendor/majordomus/rules/completion-gates.v1.md
rule shared rule 523fbb99c024 .ai/repo/rules/vendor/majordomus/rules/context-budget.v1.md
rule shared rule 018f8d63e837 .ai/repo/rules/vendor/majordomus/rules/context-integrity.v1.md
rule shared rule f5336d1b0b06 .ai/repo/rules/vendor/majordomus/rules/dag-integrity.v1.md
rule shared rule d804fedbbf1a .ai/repo/rules/vendor/majordomus/rules/decision-records.v1.md
rule shared rule 072a8155ad66 .ai/repo/rules/vendor/majordomus/rules/decision-threshold.v1.md
rule shared rule 78db07930224 .ai/repo/rules/vendor/majordomus/rules/deployment-contract.v2.md
rule shared rule 2033490a50b9 .ai/repo/rules/vendor/majordomus/rules/doctrine-wiring-integrity.v1.md
rule shared rule afc294593532 .ai/repo/rules/vendor/majordomus/rules/enforcement-wiring.v1.md
rule shared rule db680840291e .ai/repo/rules/vendor/majordomus/rules/handover-integrity.v1.md
rule shared rule 3427bfc92e29 .ai/repo/rules/vendor/majordomus/rules/knowledge-graph.v1.md
rule shared rule eec2b2184f6c .ai/repo/rules/vendor/majordomus/rules/knowledge-integrity.v1.md
rule shared rule 33fc8bac42c8 .ai/repo/rules/vendor/majordomus/rules/knowledge-observed.v1.md
rule shared rule ebe4eb49d09c .ai/repo/rules/vendor/majordomus/rules/layout-integrity.v1.md
rule shared rule d3c88435f42d .ai/repo/rules/vendor/majordomus/rules/ledger-integrity.v1.md
rule shared rule 628f11b96703 .ai/repo/rules/vendor/majordomus/rules/lifecycle-observed.v1.md
rule shared rule d1bb01668123 .ai/repo/rules/vendor/majordomus/rules/note-integrity.v1.md
rule shared rule 88f7f9322b00 .ai/repo/rules/vendor/majordomus/rules/obligation-closure.v1.md
rule shared rule 51e122071249 .ai/repo/rules/vendor/majordomus/rules/policy-completeness.v1.md
rule shared rule ae11a7b983a5 .ai/repo/rules/vendor/majordomus/rules/policy-integrity.v1.md
rule shared rule 84f5b9f70992 .ai/repo/rules/vendor/majordomus/rules/principle-01-sessions-are-workers.v1.md
rule shared rule cbd041431c84 .ai/repo/rules/vendor/majordomus/rules/principle-02-minimum-sufficient-context.v1.md
rule shared rule c02aa47f226c .ai/repo/rules/vendor/majordomus/rules/principle-03-externalise-decisions.v1.md
rule shared rule fb8aff3c3984 .ai/repo/rules/vendor/majordomus/rules/principle-04-one-worker-one-scope.v1.md
rule shared rule 7fa1a1c5c27e .ai/repo/rules/vendor/majordomus/rules/principle-05-justified-escalation.v1.md
rule shared rule 87de78333726 .ai/repo/rules/vendor/majordomus/rules/principle-06-depth-is-not-verbosity.v1.md
rule shared rule a843319fda37 .ai/repo/rules/vendor/majordomus/rules/principle-07-define-done-first.v1.md
rule shared rule 1b01d93b42fa .ai/repo/rules/vendor/majordomus/rules/principle-08-verify-outcomes.v1.md
rule shared rule 5eae52cc5589 .ai/repo/rules/vendor/majordomus/rules/principle-09-isolated-parallelism.v1.md
rule shared rule c7307cc9d919 .ai/repo/rules/vendor/majordomus/rules/principle-10-handovers-carry-state.v1.md
rule shared rule abbd45d5b53e .ai/repo/rules/vendor/majordomus/rules/profile-requirements.v1.md
rule shared rule f2fd82b09aaa .ai/repo/rules/vendor/majordomus/rules/project-integrity.v1.md
rule shared rule bc3eadf4f9f5 .ai/repo/rules/vendor/majordomus/rules/projection-integrity.v1.md
rule shared rule 6a768205d5ed .ai/repo/rules/vendor/majordomus/rules/prompt-capture.v1.md
rule shared rule 5d4230b7c618 .ai/repo/rules/vendor/majordomus/rules/prompt-continuity.v1.md
rule shared rule c820246fbdc1 .ai/repo/rules/vendor/majordomus/rules/prompt-integrity.v1.md
rule shared rule 9b68dbd49ac6 .ai/repo/rules/vendor/majordomus/rules/publication-currency.v1.md
rule shared rule 58fca43f73a9 .ai/repo/rules/vendor/majordomus/rules/questions-store-integrity.v1.md
rule shared rule 4043b457e438 .ai/repo/rules/vendor/majordomus/rules/record-changed-files.v1.md
rule shared rule 6ac34a128a32 .ai/repo/rules/vendor/majordomus/rules/retention-caps.v1.md
rule shared rule 959aad5152d0 .ai/repo/rules/vendor/majordomus/rules/roadmap-integrity.v1.md
rule shared rule e254bad15ecd .ai/repo/rules/vendor/majordomus/rules/rule-package-integrity.v1.md
rule shared rule d73fb1b2f702 .ai/repo/rules/vendor/majordomus/rules/schema-integrity.v1.md
rule shared rule 5bae41c80fda .ai/repo/rules/vendor/majordomus/rules/scope-integrity.v1.md
rule shared rule 2e5b9f5ad9c7 .ai/repo/rules/vendor/majordomus/rules/session-lifecycle.v1.md
rule shared rule 8f779c44c5c2 .ai/repo/rules/vendor/majordomus/rules/session-records.v1.md
rule shared rule 5beb962c3c18 .ai/repo/rules/vendor/majordomus/rules/skill-integrity.v1.md
rule shared rule 70a6e878886b .ai/repo/rules/vendor/majordomus/rules/state-consistency.v1.md
rule shared rule 7e381d15f9f3 .ai/repo/rules/vendor/majordomus/rules/task-continuity.v1.md
rule shared rule 2a25cd588cea .ai/repo/rules/vendor/majordomus/rules/task-on-the-mesh.v1.md
rule shared rule 1955176df430 .ai/repo/rules/vendor/majordomus/rules/use-case-coverage.v1.md
rule shared rule 1a2e830a8912 .ai/repo/rules/vendor/majordomus/rules/verification-integrity.v1.md
prompt shared prompt aaade142a03c .ai/repo/prompts/README.md
prompt shared prompt cd5ec861eb54 .ai/repo/prompts/continue.md
prompt shared prompt 8a5e3920d4a3 .ai/repo/prompts/debug.md
prompt shared prompt 17dba8771fc4 .ai/repo/prompts/handover.md
prompt shared prompt 16d69f71530d .ai/repo/prompts/review.md
workflow shared document 124141e223e4 .ai/repo/workflows/README.md
workflow shared document a43c0936e7e3 .ai/repo/workflows/continuity.md
workflow shared document 726b52e6993e .ai/repo/workflows/plan.md
workflow shared document 39db3723e051 .ai/repo/workflows/task-lifecycle.md
workflow shared document 09ea91004f94 .ai/repo/workflows/use-cases.md
session shared session 07e9f6f77e38 .ai/repo/sessions/README.md
curated shared knowledge 3be0a8483464 .ai/repo/knowledge/curated/README.md
candidates shared knowledge 9939471c0d0a .ai/repo/knowledge/candidates/README.md
use_case shared use-case 99905d2cd5a9 .ai/repo/use-cases/README.md
taxonomy shared taxonomy 207a79579af9 .ai/repo/use-cases/taxonomy.yaml
feature shared feature 18111b83801f .ai/repo/features/README.md
application shared application 6dc507447b9f .ai/repo/applications/README.md
mesh-declaration shared mesh-declaration 00e82f259df7 .ai/repo/mesh/mesh.yaml
readme shared document 776e4d79cd72 AGENTS.md
readme shared document 0c98332bdeb6 CLAUDE.md
readme shared document 4cd27b17330c GEMINI.md
decisions operational decision 0885fc07773e .ai/local/state/decisions.md
questions operational question ebeb154be99d .ai/local/state/open-questions.md
knowledge sources: 112 file(s) in scope all
- exit 0
- stdout_contains /^policy +shared +policy/
- stdout_contains /^knowledge sources: [0-9]+ file/
-
the Cockpit renders what the layer holds; a layer that does not pass here is what its health page would report
OK knowledge graph — buildable here: 100 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
OK context .ai/ — 20 context document(s) carry the contract; ids unique, references resolve, no final document superseded, no cycle [reproduce: majordomus context validate]
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
OK wiring doctor-on-commit — wired via .githooks/pre-commit
OK wiring finish-on-push — wired via .githooks/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.8))
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 — 37 kind(s); every one that carries metadata declares a schema
OK schema share/schemas — 54 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
OK skill reachable — no personal command or skill shares a name with a projected skill [reproduce: majordomus run editors.status]
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(2) — 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
INFO clone release — no remote-tracking branch, so whether the trunk's landed work is released cannot be measured
· reasoning <decided by the advisors and the executable of the recording machine>
· layout - — <judged when the recording machine has built the executable>
· budget doctor — <timed against the policy budget>
doctor: 0 failure(s)
- exit 0
- stdout_contains /doctor: 0 failure/
The chain from this page to the code: the use case names commands, rules and claims; each rule is dispatched from the registry and each claim names the test that proves it; the scenario above executed the commands. Nothing in this chain is prose about intent.
Computed from what they share: claims, rules, commands, category, applications. Nobody maintains this list.