The registry is the one model every interface of the Rust executable answers from. majordomus mcp, the HTTP routes, the OpenAPI document, the capabilities commands, the generated reference and every page under this route are projections of the same entries. This page is rendered from site/data/registry/registry.json, which majordomus generate site writes and majordomus generate --check compares in CI; the routes come from docs/generated/registry.json through scripts/generate-site-data. Nothing below is typed by hand: a number that disagrees with the executable is a stale generated file, and the build refuses it.
Registry
What the Rust executable compiled the repository into: every capability, every object of the layer, the kinds it reads, and the fingerprint that names this exact state.
- registry fingerprint
- d1a79ec082933410bf86c27db889ac1c7ac5ce4ab4b0dd73cd680cf004b08347
- index fingerprint
- 699db1350cdda9b1acc654c5159777a61105716dfd73a9805d5212f6983be41f
- generator
- majordomus-cli 0.4.0 · dataset majordomus-site-registry/v2
- layer
- ai-repository/v1 · index ok
- routes from
- docs/generated/registry.json · majordomus/capability-registry/v1
The registry fingerprint hashes the index fingerprint (every object's path and content) and every capability descriptor in id order. Same tree and same executable, same fingerprint; it is the cache key every executor answer is scoped by.
1189 in the registry
73 builtin (composed in Rust), 1116 declarative (one resource per object of the layer), in 52 modules.
Read more → mcp71 tools · 1142 resources
Every tool is a capability with an mcp.tool exposure; every object of the layer is a resource at majordomus://<kind>/<identity>.
73 routes
The same capabilities as HTTP, and the OpenAPI 3.1 document under /openapi.json; 31 are also command-line subcommands.
70 required · 3 waived
Every executable capability is a benchmark target through every transport; a case is a compile-time obligation of its input type. 25 are cached by the executor.
Read more →Modules
The builtin modules compose the executable's own capabilities; a declarative module is a kind of the layer, one resource per object, listed under Kinds below.
artifactsGenerated artifactsWhat `majordomus generate` writes: every document with the encodings it is committed in — JSON for a program, YAML beside it, Markdown for a reader — each with its schema, its source and its hash, reconciled with the working tree. The declaration is the generator's own manifest; nothing here keeps a list.1 capabilities · behaviorally_verifiedcapabilitiesCapabilitiesThe registry seen through itself: every capability with its kind, stability, provenance, exposures, benchmark and cache policy, and one capability in full.3 capabilities · behaviorally_verifiedcommandsCommand graphEvery command this repository offers, from whichever program offers it: the Rust executable, the shell tool that carries the task lifecycle, and the workflows the repository declares for a person to run. Composed from the three declarations that already exist — the clap tree, the shipped command registry and the workflow runner's own dump — never from a list. Each command carries what running it changes, what it needs, where its argument values come from, and every surface that carries it, with the reason when one does not.3 capabilities · implementedcontinuityContinuityWhat this checkout's lifecycle is holding: the open episode, the record the next worker would resume from with the label that says how far to trust it, the newest progress note, and what is blocking acceptance. Read from the local half of the layer, which this process serves to the worker in front of it and never publishes.1 capabilities · behaviorally_verifieddeployDeploymentThe deployments this repository declares, read from the canonical objects the index holds, and whether they would work — decided against the capability registry this process built and the workspace it sits in. Every operation is a read: a deployment is changed by the trusted command line and by CI, never over HTTP and never by an MCP client.3 capabilities · behaviorally_verifieddirectoriesDirectory contractsThe layer's directories as a hierarchy: the contract each one declares, what it owes and which contract said so, and the chain that applies to it once inheritance is resolved.1 capabilities · behaviorally_verifieddistributionDistributionHow this project is packaged, published and installed: the platforms a release builds, the artifact names the one naming function derives, the installer's canonical command, the releases that were published, and what this build itself is. Every answer comes from share/distribution.yaml and the release records; no surface here states a fact of its own.5 capabilities · behaviorally_verifiedenvironmentRepository environmentWhat this checkout is right now: the project and its version, the repository and its layer, version control, the toolchains it declares, what the layer holds, the workflows a person can run, the provider projections and the local services — one typed snapshot, with a provenance entry for every value in it. The direnv banner, the Cockpit's overview and this route are renderings of the same value.2 capabilities · behaviorally_verifiedexecutionsExecutionsRunning a capability of this registry as work that can be watched: started, followed event by event over the live channel, read back afterwards, and asked to stop. In memory; an execution does not outlive the process that accepted it.7 capabilities · behaviorally_verifiedgraphGraphsThe graphs derived from the registry and the index: the executable's own capability registry, the shape of the layer, the rule dependencies, the decisions and what they put in force, and the use cases and what they exercise. Canonical nodes and edges; a rendering library is a consumer, never the shape.2 capabilities · behaviorally_verifiedhealthHealthWhether what this process serves is healthy, decided by the engines that already decide it: the index's diagnostics, the registry builder, the benchmark projection's coverage and the comparison `generate --check` makes. No check here has an opinion of its own.3 capabilities · behaviorally_verifiedobjectsObjectsThe declarative objects of the repository's AI layer: rules, prompts, profiles, policy, documents, milestones, issues, claims, and whatever kinds the repository adds; listed, read by URI, and searched.4 capabilities · behaviorally_verifiedobligationsObligationsWhat a task owes before it may be called completed, and whether the evidence that discharged each obligation still describes this tree. The vocabulary is data the distribution ships and answers in any clone; the closure is read from the local half of the layer, which this process serves to the worker in front of it and never publishes. Read, never written: `majordomus evidence` records, and a second writer for one ledger would be a second account of the same events.2 capabilities · behaviorally_verifiedpeersPeersThe clients attached to this repository's shared server, named by their own initialize, and what each announced it is working on. In memory; gone with the process.2 capabilities · behaviorally_verifiedperfPerformanceThis process's work counters and phase timings: what happened once at startup and what happens per call, for the structural tests and the benchmark evidence.1 capabilities · behaviorally_verifiedplanThe plan and its derivationsThe milestone and issue model of this repository, and everything derived from it that nobody authored: the status of each record, the dependency graphs above and below the milestone boundary, the topological execution waves, the roadmap order, the milestone being executed and the one issue to take next. Status is never stored — a record says what happened to it and the status follows from that and from the state of its dependencies — so no file can contradict the graph. The four operations that write a lifecycle marker into a record stay on the command line: a capability of this registry never writes to the repository.8 capabilities · behaviorally_verifiedproductProductWhat this repository's product does for a person, as the features under the layer's features section declare it: each feature made of modules, commands, kinds, rules, documents, decisions, claims, use cases, Cockpit areas and web surfaces it names, with the interfaces it is exposed through, every count, the moments it answers and what is guaranteed derived from those references. The matrix of features against interfaces, the providers the tool has an adapter for, and the model's own validation. The homepage is a reader of this module and holds no inventory of its own.5 capabilities · behaviorally_verifiedqualityPublic API qualityWhat this executable's own public surface is held to, measured from its syntax tree: documentation that says more than the signature, an executable example on everything that carries behaviour, a module boundary something exercises, and every command of the command line accounted for against the capability registry. The rules are project.rust-public-api-quality and project.operation-transport-parity; this is the measurement of them.1 capabilities · behaviorally_verifiedreleaseReleaseWhat this project has shipped and what it would ship next, derived rather than maintained: the changelog composes the layer's release records, the decisions dated inside each release's window and the conventional commits in its range; the version report reads the two places the version is stated and says what the commits since the last release imply it should become.2 capabilities · implementedrepositoryRepositoryThe repository this process serves: its layer, its git state, the state of the index built from it, and its scope: what a worker reads of it and what it never reads.3 capabilities · behaviorally_verifiedtraceTraceabilityWhich branches and commits realised an issue, and which issue and milestone a commit served — derived from git and from the canonical project model on every call, stored nowhere. A branch names an issue when one of its path components is an issue id; a commit belongs to the issue whose branches hold it; a commit no such branch holds is reported as unattributed rather than left out, because work with no execution contract is what a traceability report exists to make visible. Pull requests are a GitHub fact and this executable makes no network call: `scripts/traceability` reads them and joins them to this answer over the branch name.3 capabilities · behaviorally_verifiedwebWeb surfacesWhat this repository exposes over HTTP, resolved from the producers that make it rather than from a register anybody maintains: the routes the executable answers itself, the documentation build, and every generated report that declared its own mount. The same resolution serves the router, renders the home page and composes a publication.1 capabilities · behaviorally_verifiedwhyWhyThe operational failure modes this tool is a response to: the moments a reader recognises, the audiences that recognise them, the areas they fall under, and what a reader's own symptoms imply. Every entry is a file under the layer's why section; nothing here holds a list, and a moment added there is answered by all of these without a registration anywhere.6 capabilities · behaviorally_verifiedworktreeWorktree topologyWhere every linked git worktree of this repository belongs and where each one is. The container is the primary checkout's sibling named with `-wt`, the path under it is the branch name with its hierarchy kept, and both are derived from git's own identity — the common directory, the registered worktrees, the branches — never from a registry, a configuration or the current directory. A worktree somewhere else is a typed diagnostic with a remedy; the migration that repairs it is a command-line operation of the same service.4 capabilities · behaviorally_verified
Executable capabilities
Composed in Rust, each exposed as the table says. The id is the operationId of the OpenAPI document and the _meta.majordomus.id of the MCP tool; each links to its own page with schemas, policies, provenance and claims.
| id | kind | MCP tool | HTTP | CLI | stability | benchmark | cache |
|---|---|---|---|---|---|---|---|
| artifacts.list The manifest `majordomus generate` commits as docs/generated/artifacts.json, reconciled with the working tree: every document with the encodings it is written in, and every file with its format, schema, source, size, hash and whether the file on disk still matches. Optionally narrowed to one document or one encoding. Reads only; `majordomus generate` writes and `majordomus generate --check` is the byte-for-byte verdict. |
query | majordomus_artifacts | GET /api/v1/artifacts | — | behaviorally_verified | required | process |
| capabilities.describe One capability by canonical id: its kind, schemas, provenance, stability, exposures, benchmark and cache policy. |
query | majordomus_capability | GET /api/v1/capability | majordomus capabilities describe | behaviorally_verified | required | disabled |
| capabilities.list Every capability of this executable and this repository, summarised: kind, module, stability, provenance, the projections it declares, its benchmark and cache policy; the schemas are answered by capabilities.describe. |
query | majordomus_capabilities | GET /api/v1/capabilities | majordomus capabilities list | behaviorally_verified | required | process |
| capabilities.projections A row per capability with the command line, HTTP route, MCP tool and MCP resource it reaches, whether every exposure it declares is answered by that surface, and the runnable commands no capability claims. Derived from the registry and the clap declaration; nothing is written down. |
query | majordomus_projections | GET /api/v1/capabilities/projections | majordomus capabilities projections | behaviorally_verified | required | process |
| commands.get One command by its canonical identity: its arguments with the source of each one's values, what running it changes, what it needs, where it came from, and every surface that carries it — with the reason a machine surface withholds it when one does. |
query | majordomus_command | GET /api/v1/command | — | implemented | required | disabled |
| commands.graph The graph as one document, with its fingerprint and every diagnostic its build found: a duplicate identity, a recipe name two commands would take, an annotation that names a command which no longer exists. Deterministic — two builds over one tree produce the same document — so a client may cache against the fingerprint. |
query | majordomus_command_graph | GET /api/v1/commands/graph | — | implemented | required | disabled |
| commands.list The commands this repository offers, filtered by the program that runs them, by what running them changes, or by text. A summary rather than the whole graph: enough to choose a command, and never so much that a client has to read every argument of every command to find one. |
query | majordomus_commands | GET /api/v1/commands | — | implemented | required | disabled |
| continuity.state The open episode, the active task, the handover and checkpoint that resolve for this worktree and branch, each with its divergence label, the unresolved questions that refuse completion, and the record tallies. Selection is two-tiered and never repository-wide: a record from an unrelated worktree or branch is not offered, because a briefing that is quietly about somebody else is worse than none. Absence is reported as absence. |
query | majordomus_continuity | GET /api/v1/continuity | — | behaviorally_verified | required | process |
| deploy.check Every refusal the declared deployments earn locally: a health route no capability registers, a package or binary the workspace does not produce, a build input that does not resolve, more machines running than exist, a hosted process that would bind loopback. Each names the file, the key, the value observed and the correction. Nothing here contacts the provider. |
query | majordomus_deploy_check | GET /api/v1/deployments/check | — | behaviorally_verified | required | process |
| deploy.get One deployment by its identity, typed, with the repository-relative file it was read from. |
query | majordomus_deployment | GET /api/v1/deployment | — | behaviorally_verified | required | disabled |
| deploy.list Every deployment the layer declares, typed: the application, the package and binary shipped, the address the process listens on, the routes a platform polls, the resources, the machine count, the region, the build inputs, the measured budgets and the provider's own facts. An object of the kind this executable cannot read is reported with the reason rather than skipped. |
query | majordomus_deployments | GET /api/v1/deployments | — | behaviorally_verified | required | disabled |
| directories.list Every directory of the layer the index knows, with the contract it declares, whether it owes one and which contract decided, and — for a named path, or when asked for everywhere — the effective chain composed from the root down, least specific first. |
query | majordomus_directories | GET /api/v1/directories | — | behaviorally_verified | required | process |
| distribution.artifact The archive name a target and a tag derive, the directory it unpacks into, and where a release publishes it. The one naming function answers; the release pipeline asks it rather than composing a name in a workflow file. |
query | majordomus_artifact | GET /api/v1/distribution/artifact | majordomus distribution artifact | behaviorally_verified | required | disabled |
| distribution.build What this executable is: the version of the crate it was built from, the Rust target triple, the profile, and the commit — all compiled in at build time, so an installed binary answers without a repository, a toolchain or git. |
query | majordomus_build | GET /api/v1/distribution/build | majordomus distribution build | behaviorally_verified | required | disabled |
| distribution.model The one-line install command, where an installation goes, and every declared target with the artifact name it derives. This is what the installation page, the landing page's install block and the cockpit's install card render; none of them holds a platform list of its own. |
query | majordomus_distribution | GET /api/v1/distribution | majordomus distribution show | behaviorally_verified | required | disabled |
| distribution.releases Every release this repository recorded, newest first, and the one an unpinned installation resolves to: the highest version among the stable, unwithdrawn records. The pointer is derived here and never authored anywhere. |
query | majordomus_releases | GET /api/v1/distribution/releases | majordomus distribution releases | behaviorally_verified | required | disabled |
| distribution.status Whether a machine that has never seen this project can install it right now with the advertised one-line command, and when it cannot, which link in the chain is missing and what changes it. Derived from the distribution model and the release records alone: it reaches no network, so it is as fast as any other local query and answers offline. The served bytes are proved by the release pipeline's smoke phase, not guessed at here. |
query | majordomus_install_status | GET /api/v1/distribution/status | majordomus distribution status | behaviorally_verified | required | disabled |
| environment.explain The provenance of the snapshot: for each field, what decided it — a compile-time constant, a file, a command, or the cache — which resolver read it, and how far it can be trusted. Narrow it to one field, or to a prefix, by name. |
query | majordomus_environment_explain | GET /api/v1/environment/explain | — | behaviorally_verified | required | disabled |
| environment.status One snapshot of this checkout: project identity, repository identity, version control, declared toolchains, what the layer holds counted per kind, the workflows the runner describes, the provider projections against the policy that renders them, and the local services with the address a running server published. Every value carries where it came from. |
query | majordomus_environment | GET /api/v1/environment | — | behaviorally_verified | required | process |
| executions.cancel Set the execution's cancellation flag and say so on its stream. Cancellation is cooperative: a task looks at its flag and stops, and a capability whose policy says it is not cancellable runs to completion — which the answer says rather than pretending otherwise. |
command | majordomus_execution_cancel | POST /api/v1/executions/cancel | majordomus executions cancel | behaviorally_verified | waived (transient_state) | disabled |
| executions.demonstrate Walk a given number of steps, reporting each one, logging a line and advancing progress, then finish — or fail at a step you name. It exists so that an operator, a probe and an end-to-end test can prove the whole path works without waiting for real work: it reads nothing, writes nothing, and its only effect is the events it produces. It looks at its cancellation flag between steps and while it waits, so cancelling it stops it. |
query | majordomus_demonstrate_execution | GET /api/v1/executions/demonstrate | — | behaviorally_verified | required | disabled |
| executions.events The retained events of one execution, oldest first, after a sequence number. This is what a browser reads after a reload and what a client reads after a reconnect: the page carries the cursor to open the live channel with, so nothing is missed between the history and the stream. |
query | majordomus_execution_events | GET /api/v1/executions/events | majordomus executions events | behaviorally_verified | waived (transient_state) | disabled |
| executions.get The whole of what is known about one execution: its state, its input as it was stored, its steps, its progress, its diagnostics, and its output or its error. Taken under one lock, so a snapshot that says it succeeded carries what it produced. |
query | majordomus_execution | GET /api/v1/executions/get | majordomus executions show | behaviorally_verified | waived (transient_state) | disabled |
| executions.list Every execution this process remembers, newest first, narrowed by state or by capability. The counts beside them — remembered, active, queued, live channels — are what a control plane shows without asking a second question. |
query | majordomus_executions | GET /api/v1/executions | majordomus executions list | behaviorally_verified | required | disabled |
| executions.protocol Where the WebSocket is, how a subscription and a reconnect are expressed, what the server writes, and the JSON Schema of every message — derived from the Rust types that implement it, so a client validating against this is validating against the implementation. OpenAPI cannot describe a socket; this is where that contract lives. |
query | majordomus_execution_protocol | GET /api/v1/executions/protocol | majordomus executions protocol | behaviorally_verified | required | disabled |
| executions.start Run any executable capability of this registry as an execution: the input is checked against that capability's own input schema, the work is queued, and this answers at once with the execution's id and the links to follow it. Nothing waits for the handler. The capability runs through the same executor every other interface calls, so there is no second implementation of anything. |
command | majordomus_execution_start | POST /api/v1/executions/start | majordomus run | behaviorally_verified | required | disabled |
| graph.get One graph by id: its nodes and edges with the vocabularies that say what each kind means, the file every node was derived from, and whether the result is acyclic. Deterministic for a given tree and executable. |
query | majordomus_graph | GET /api/v1/graph | — | behaviorally_verified | required | process |
| graph.list Every graph this executable derives: its id, what it shows, and what it is derived from. |
query | majordomus_graphs | GET /api/v1/graphs | — | behaviorally_verified | required | disabled |
| health.live Is this process alive: the cheapest true statement this executable can make about itself, with the version that answered. No filesystem traversal, no index build, no network — this is what a hosting platform polls, and it must cost nothing to say. |
query | — | GET /api/v1/live | — | behaviorally_verified | required | disabled |
| health.ready Can this process serve traffic: the registry and the index it built at start-up, already resident, and how the layer read. Only local initialisation — never an external provider, a database or another service, because a readiness check that probes a dependency fails a deployment for something that is not this process. |
query | — | GET /api/v1/ready | — | behaviorally_verified | required | disabled |
| health.report Every dimension of what this process serves — the layer as it was read, the registry, the scope, version control, benchmark coverage, the committed registry manifest and the attached peers — each decided by the engine that owns it, with the command that reproduces the verdict. |
query | majordomus_health | GET /api/v1/health | — | behaviorally_verified | required | process |
| objects.get One object by URI (majordomus://<kind>/<identity>): metadata, provenance and content; a URI a query projects (majordomus://repository) answers that query as a JSON document. The same resolution serves the MCP resource read. |
query | majordomus_get | GET /api/v1/object | — | behaviorally_verified | required | disabled |
| objects.list List the declarative objects of the repository's AI layer, optionally by kind or tag. |
query | majordomus_list | GET /api/v1/objects | — | behaviorally_verified | required | disabled |
| objects.search Case-insensitive substring search over identities, titles, descriptions and content. |
query | majordomus_search | GET /api/v1/search | — | behaviorally_verified | required | process |
| objects.verify Read every file the layer was built from and compare it with what this process is serving. The index is built once at start-up and kept, which is what makes every other request cost nothing and what makes a file edited afterwards be served as it was; this is how a running server says whether that has happened, without being restarted to find out. A file that is one object is compared byte for byte; a collection file, whose objects the index keeps as members rather than as text, is compared by size, and every finding says which comparison was made. It reads every file of the layer, so it reports its progress file by file and stops when it is asked to. |
query | majordomus_verify_objects | GET /api/v1/objects/verify | — | behaviorally_verified | required | disabled |
| obligations.closure Every obligation the active task declared, joined with what the vocabulary says about it and with the evidence that does or does not discharge it: what is owed, what is discharged, and what has gone stale — with the recorded input hash and the tree's current one, or the recorded commit and its label, so a reader can see against what. The judgement is the one `finish` applies, reproduced rather than re-decided, and the staleness words are the repository's only four. A checkout with no task reports that, rather than reporting nothing owed. |
query | majordomus_obligation_closure | GET /api/v1/obligations/closure | — | behaviorally_verified | required | process |
| obligations.vocabulary The tokens a task may declare in `requires`: what each one asks of a worker, the command that discharges it, the pathspecs its evidence is hashed over, and whether its fact is remote and therefore bound to a commit rather than to a tree. Shipped data, identical in every clone, so this answers in a checkout that has never run the lifecycle. |
query | majordomus_obligations | GET /api/v1/obligations | — | behaviorally_verified | required | process |
| peers.announce Tell the other peers of this shared server what the calling session is doing and which paths it expects to touch. Changes this process's memory only; the repository is never written. Needs an MCP session: over plain HTTP there is no caller. |
command | majordomus_announce | POST /api/v1/peers/announce | — | behaviorally_verified | required | disabled |
| peers.list Every client attached to this shared server: id, the client's own name and version from its initialize, transport, when it attached, when it was last seen, and what it announced. In-memory, gone with the process. |
query | majordomus_peers | GET /api/v1/peers | — | behaviorally_verified | required | disabled |
| perf.counters The counters of this process: repository scans, index and registry builds, schema generations, projection builds, executions, handler invocations, cache hits, misses and evictions, and the phase timings, as they stand now. |
query | majordomus_perf | GET /api/v1/perf | — | behaviorally_verified | required | disabled |
| plan.issues One record per issue with its derived status, its wave, the dependencies it declares, the ones that are not DONE (plus `milestone:<id>` when the gate holds the whole outcome back), the issues that depend on it, the paths it touches and its evidence tally. Filtering by `status: READY` is the ready set and by `status: BLOCKED` the blocked set; nothing here is a separate derivation. |
query | majordomus_plan_issues | GET /api/v1/plan/issues | — | behaviorally_verified | required | disabled |
| plan.model Every milestone and issue with its derived status, wave, rank, both directions of its graph and its counts; the execution waves; both dependency graphs as edges; every validation finding; and the plan's header with the active milestone derived. The one value every other capability of this module answers out of. Derived on every call: a transition writes a lifecycle marker into a record between two calls, and a plan answered from a snapshot would send two workers to one issue. |
query | majordomus_plan | GET /api/v1/plan | — | behaviorally_verified | required | disabled |
| plan.next The lowest-wave READY issue of the active milestone, highest priority first, then id. The active milestone can have nothing ready while another one does — one waiting on its own acceptance evidence, for instance — so the search widens to the whole plan rather than answering `none` and sending a worker away from work that is genuinely executable. This is what an agent asks before it starts. |
query | majordomus_plan_next | GET /api/v1/plan/next | — | behaviorally_verified | required | disabled |
| plan.record A milestone with its issues in full, or an issue with the issues it waits on in full. The record's own prose stays where it has always been — `majordomus://issue/<id>` returns the file — and this answers what the file cannot say about itself: what its status is, where it sits in the graph, and what is between it and being executable. |
query | majordomus_plan_record | GET /api/v1/plan/record | — | behaviorally_verified | required | disabled |
| plan.roadmap The milestone graph laid out by rank, with `order` breaking ties inside a rank only, and the first unblocked unfinished milestone as `now` and the one after it as `next`. Nothing in the sequence is authored: a milestone whose prerequisites are not real cannot be nominated, which is what makes `each step is gated by the previous one being real` an invariant rather than a sentence. |
query | majordomus_plan_roadmap | GET /api/v1/plan/roadmap | — | behaviorally_verified | required | disabled |
| plan.status Every milestone with its derived status and its issues counted by status, the milestone a worker is executing now, the next ready issue in full, and the plan's own totals. The counts are keyed by the declared vocabulary, which travels with the answer, so a status added to the engine appears here without anything being edited. |
query | majordomus_plan_status | GET /api/v1/plan/status | — | behaviorally_verified | required | disabled |
| plan.validate Every finding the derivation produced, in the order it produced them: a dependency on something that is not an issue, a cycle, an issue executing ahead of its dependencies or of its milestone's gate, an issue with no acceptance criteria, evidence missing under a completion date, a milestone whose graph contradicts itself, two issues of one wave sharing a path. A failure means the model is invalid; a warning means it is legal and worth reading. |
query | majordomus_plan_validate | GET /api/v1/plan/validate | — | behaviorally_verified | required | disabled |
| plan.waves The topological layering of the issue graph: an issue enters a wave only once every dependency has left it, so its wave is one past the longest path to it. Sharing a wave is a necessary condition for running two issues at once, not a sufficient one — overlapping scope serialises them, and every such overlap is reported beside the waves rather than left for two workers to discover in a merge conflict. |
query | majordomus_plan_waves | GET /api/v1/plan/waves | — | behaviorally_verified | required | disabled |
| product.feature One product feature in full: the record as its file declares it, and everything derived from what it names — the capabilities of its modules with their tools, routes and command-line paths, the commands with their summaries, the objects of its kinds counted, the rules with their class and whether the tool enforces them, the documents, the decisions, the claims with their status, the use cases, the Cockpit areas and web surfaces with their routes, the moments it answers, and the interfaces all of that adds up to. |
query | majordomus_feature | GET /api/v1/product/feature | majordomus product show | behaviorally_verified | required | process |
| product.features Every product feature this repository declares, narrowed by any of the facets the model derives — featured, area, module, command, surface, text — with the interfaces each is exposed through, the counts behind it and what is guaranteed about it, none of which its file states. The default is the stable set; pass status=any for the drafts too. |
query | majordomus_features | GET /api/v1/product/features | majordomus product list | behaviorally_verified | required | process |
| product.matrix Every feature against the command line, the HTTP API, MCP, the Cockpit and the documentation, each mark derived from what the feature names; then every builtin module of the executable, every public command of the shell tool and every kind of the layer with the stable features that name it. A row with no feature is reported as a gap rather than hidden. |
query | majordomus_product_matrix | GET /api/v1/product/matrix | majordomus product matrix | behaviorally_verified | required | process |
| product.providers Every provider the tool has an adapter for — one per template the distribution ships — with the bootstraps this repository's policy renders through it, the client configuration it carries for the shared MCP server, and the hooks the policy wires. The set is the templates; nothing here is a list of vendors. |
query | majordomus_providers | GET /api/v1/product/providers | majordomus product providers | behaviorally_verified | required | process |
| product.validate Every finding over the product model: a reference that resolves to nothing, with the nearest candidate; a duplicate identity; a file name that disagrees with its id; a draft that is featured; a stable feature under its floors; and every module, command or kind that no stable feature names. Errors make the model invalid; warnings do not. |
query | majordomus_product_validate | GET /api/v1/product/validate | majordomus product validate | behaviorally_verified | required | process |
| quality.report The crate's exported surface measured against the repository's rules: how many items are documented and exampled, how many modules are documented, exampled and behaviourally tested, how the canonical operations stand against the command line, HTTP, OpenAPI and MCP, and one finding per violation carrying a stable code, the rule that requires it, its file and line, why it matters and what to do about it. |
query | majordomus_quality | GET /api/v1/quality | majordomus quality report | behaviorally_verified | required | process |
| release.changelog Every release the layer records, newest first, with the work that has not been released leading. A section's decisions are the ADRs dated inside that release's window, its changes the conventional commits in its range, its artifacts the record's own evidence. Nothing in it is authored, and a section that could not be read says so rather than appearing empty. |
query | majordomus_changelog | GET /api/v1/changelog | — | implemented | required | disabled |
| release.version The version the crate manifest declares, the version the shell tool prints, and whether they agree — the same question `scripts/release-version --check` gates on. Then the bump the conventional commits since the last release imply, the version it would produce, and the commits themselves as the evidence for it. |
query | majordomus_release_version | GET /api/v1/release/version | — | implemented | required | disabled |
| repository.info The repository root, layer sections, git state, discovery mode, kinds present, every diagnostic, and the capability registry counted. |
query | majordomus_repository | GET /api/v1/repository | — | behaviorally_verified | required | disabled |
| repository.scope The scope declaration as read, where it came from (the repository's own or the distribution's default), and every tracked file tallied against it: how many are in, how many are out for each reason, and which. |
query | majordomus_scope | GET /api/v1/scope | majordomus scope | behaviorally_verified | required | disabled |
| repository.scope_classify Whether a repository-relative path is in or out of the scope, the reason when it is out, and the pattern or limit that decided; an existing file is judged by name, then size, then content. |
query | majordomus_scope_classify | GET /api/v1/scope/classify | — | behaviorally_verified | required | disabled |
| trace.commit One commit with the issue and milestone it served, or the fact that none can be found. Attributed when exactly one issue's branches hold it, ambiguous when branches naming two issues do, and unattributed when no branch naming an issue holds it at all — which is either work committed without an execution contract or a branch deleted after its merge, and the answer says so rather than guessing between them. |
query | majordomus_trace_commit | GET /api/v1/trace/commit | — | behaviorally_verified | required | disabled |
| trace.issue One issue with the branches that name it — local, and remote-tracking where only the remote still has the branch — and, for each, the commits it holds that the trunk did not: measured against the trunk while the branch is open, and against the first parent of the merge commit that brought it in once it is merged. A branch that reached the trunk without a merge commit of its own says so and claims nothing, because its commits cannot be told from the trunk's. The milestone comes from the canonical issue record, which is the one edge here that git does not hold, and `declared` says whether the project model has this id at all — a repository with no plan still gets the branches, and a typo still cannot read as work nobody did. |
query | majordomus_trace_issue | GET /api/v1/trace/issue | — | behaviorally_verified | required | disabled |
| trace.report Every issue at least one branch names with its branches and commits, every declared issue no branch names, and the newest stretch of the trunk with each commit attributed to the issue whose branches hold it or reported as unattributed. The tallies count both sides, so the proportion of the trunk that no execution contract accounts for is a number rather than an impression. Read from git on every call: the history changes outside this process. |
query | majordomus_traceability | GET /api/v1/trace | — | behaviorally_verified | required | disabled |
| web.surfaces The web topology in route-precedence order, with each surface's mount, category, visibility, kind, producer, artifact, runtime feature and the provenance of every value a reader could be surprised by; and which ids are served, published and offered to a person. Answered from the resolution this process serves from, so it cannot disagree with what the router routes or what the home page lists. |
query | majordomus_web_surfaces | GET /api/v1/web/surfaces | — | behaviorally_verified | required | process |
| why.areas Every operational area the catalogue declares, each with the public moments that fall under it. Membership is derived from the moments and is never listed in an area's own file. |
query | majordomus_why_areas | GET /api/v1/why/areas | majordomus why areas | behaviorally_verified | required | process |
| why.audiences Every audience the catalogue declares, each with the public moments that name it. Membership is derived from the moments and is never listed in an audience's own file. |
query | majordomus_why_audiences | GET /api/v1/why/audiences | majordomus why audiences | behaviorally_verified | required | process |
| why.diagnose What a reader's own symptoms imply: the moments the selection resolves to, the operational areas and audiences they weigh towards, and the capabilities, commands, claims, rules and use cases that answer them — each carrying the moments that produced it. Counting, not inference: there is no weighting and no percentage. |
query | majordomus_why_diagnose | GET /api/v1/why/diagnose | majordomus why diagnose | behaviorally_verified | required | process |
| why.list Every operational moment this repository holds, narrowed by any of the facets the catalogue itself reports, with the audiences, the areas, the derived filters and the counts. The default is the public catalogue; pass status=any for the drafts too. |
query | majordomus_why | GET /api/v1/why | majordomus why list | behaviorally_verified | required | process |
| why.moment One operational moment in full: what it looks like, why it happens, what it costs, what this tool does about it, and every relation derived from its metadata — the responsibilities its claims belong to, the moments that name it, and the moments nearest it by shared area, audience and tag. |
query | majordomus_why_moment | GET /api/v1/why/moment | majordomus why show | behaviorally_verified | required | process |
| why.validate Every finding over the catalogue: a reference that resolves to nothing, with the nearest candidate; a duplicate identity; a file name that disagrees with its id; and a public record that does not meet the floor its status promises. Errors make the catalogue invalid; warnings do not. |
query | majordomus_why_validate | GET /api/v1/why/validate | majordomus why validate | behaviorally_verified | required | process |
| worktree.inspect The canonical path of a branch, derived from its name alone, whether the branch exists, whether something occupies that path, the worktree holding the branch when one does, and what stands in the way of creating or migrating it. The answer for a branch that does not exist yet is the path `worktree create` would use. |
query | majordomus_worktree_inspect | GET /api/v1/worktrees/inspect | majordomus worktree inspect | behaviorally_verified | required | disabled |
| worktree.migration_plan One step per misplaced worktree with a branch: where it is, where it belongs, how it would move, the uncommitted work that moves with it, and what blocks it; plus the exceptions the migration cannot address by design — detached worktrees, stale registrations, the primary checkout off the trunk — each with what a person does about it. Planning changes nothing; `majordomus worktree migrate` applies it with a fingerprint taken before and after every move. |
query | majordomus_worktree_migration_plan | GET /api/v1/worktrees/migration | majordomus worktree migrate | behaviorally_verified | required | disabled |
| worktree.status One worktree — the repository's own, or the one holding the directory the caller names — with its standing, its branch, its canonical path, its uncommitted work counted, whether it is where it belongs, and how many errors the whole topology carries. What an agent reads before it starts, and what the guard decides on. |
query | majordomus_worktree_status | GET /api/v1/worktrees/status | majordomus worktree status | behaviorally_verified | required | disabled |
| worktree.topology The repository, the container, the trunk and how it was decided, every registered worktree with its standing (primary, canonical, misplaced, detached, missing), its uncommitted work, its upstream distance and the issue its branch provably names, every local branch with or without a worktree and whether it is eligible for cleanup, every diagnostic with its code and remedy, and the tallies. Read from git on every call: the topology changes outside this process. |
query | majordomus_worktrees | GET /api/v1/worktrees | majordomus worktree topology | behaviorally_verified | required | disabled |
Kinds
What the executable reads, from share/kinds.yaml and the repository's own additions: how a file of the kind is read, the JSON Schema its metadata must satisfy, and how many objects of it the index holds.
| kind | format | front matter | schema | identity | objects |
|---|---|---|---|---|---|
| adr | markdown | required | majordomus.adr/v1.schema.json | id | 33 |
| application | markdown | required | majordomus.application/v1.schema.json | id | 5 |
| area | markdown | required | majordomus.area/v1.schema.json | id | 9 |
| audience | markdown | required | majordomus.audience/v1.schema.json | id | 8 |
| claim | yaml | none | majordomus.claim/v1.schema.json | id | 148 |
| command | yaml | none | majordomus.command/v1.schema.json | id | 29 |
| context | markdown | required | majordomus.context/v1.schema.json | id | 27 |
| deployment | yaml | none | majordomus.deployment/v1.schema.json | id | 1 |
| distribution-model | yaml | none | majordomus.distribution/v1.schema.json | path | 1 |
| document | markdown | optional | majordomus.document/v1.schema.json | path | 210 |
| feature | markdown | required | majordomus.feature/v1.schema.json | id | 20 |
| implementation | text | none | — | path | 45 |
| issue | yaml | none | majordomus.issue/v1.schema.json | id | 202 |
| knowledge | markdown | required | majordomus.knowledge/v1.schema.json | id | 1 |
| milestone | yaml | none | majordomus.milestone/v1.schema.json | id | 17 |
| moment | markdown | required | majordomus.moment/v1.schema.json | id | 38 |
| policy | yaml | none | majordomus.policy/v1.schema.json | path | 1 |
| profile | yaml | none | majordomus.profile/v1.schema.json | name | 4 |
| project | yaml | none | majordomus.project/v1.schema.json | path | 0 |
| prompt | markdown | required | majordomus.prompt/v1.schema.json | name | 4 |
| release-record | yaml | none | majordomus.release/v1.schema.json | tag | 1 |
| rule | markdown | required | majordomus.rule/v1.schema.json | id@version | 109 |
| scope | yaml | none | majordomus.scope/v1.schema.json | path | 1 |
| session | markdown | required | majordomus.session-record/v1.schema.json | session_id | 11 |
| session-context | markdown | required | majordomus.session-context/v1.schema.json | session_id | 0 |
| skill | markdown | required | majordomus.skill/v1.schema.json | id | 3 |
| taxonomy | yaml | none | majordomus.taxonomy/v1.schema.json | id | 10 |
| test | text | none | — | path | 135 |
| use-case | markdown | required | majordomus.use-case/v1.schema.json | id | 42 |
| workspace | yaml | none | majordomus.workspace/v1.schema.json | id | 1 |
Provider projections
The bootstraps the policy declares, rendered by majordomus generate providers and checked in CI. None of them is a source.
AGENTS.md← agents · file always loadedCLAUDE.md← claude-code · file.bb/AGENTS.md← bb · file
Objects of the layer
1116 objects, each an MCP resource. Grouped by kind; the path is where the object lives in the repository.
adr 33
adr-0001A Rust executable with a data-driven, read-only MCP surface over stdio.ai/repo/adrs/0001-rust-cli-and-stdio-mcp.mdadr-0002A canonical capability registry, with MCP, HTTP, OpenAPI, Swagger UI, the CLI and the reference as projections.ai/repo/adrs/0002-canonical-capability-registry.mdadr-0003One shared MCP server per repository, peers, and clients that start it themselves.ai/repo/adrs/0003-shared-mcp-server-peers-and-client-autostart.mdadr-0004One canonical declaration, composed modules, derived projections, and performance as evidence.ai/repo/adrs/0004-canonical-architecture-and-performance-truth.mdadr-0005One projection plan over the canonical inputs, named owners for every truth, and the site as a view of the registry.ai/repo/adrs/0005-one-projection-plan-canonical-owners-and-the-site-as-registry-view.mdadr-0006CI planned from one model of what affects what, gates as repository-owned scripts, and the site deployed from the run that verified it.ai/repo/adrs/0006-ci-planned-from-one-model-and-the-site-deployed-from-its-verified-run.mdadr-0007Skills are data under the layer's skills section, and every surface that shows one is a projection.ai/repo/adrs/0007-skills-are-data-not-registrations.mdadr-0008Use cases are executable canonical objects of the layer.ai/repo/adrs/0008-executable-use-cases.mdadr-0009Prompt capture happens below the model, or is reported as unavailable.ai/repo/adrs/0009-prompt-capture-happens-below-the-model.mdadr-0010Curated knowledge is one kind with a class, not a second store.ai/repo/adrs/0010-curated-knowledge-is-one-kind-with-a-class-not-a-second-stor.mdadr-0011Every directory in the layer carries a contract.ai/repo/adrs/0011-every-directory-in-the-layer-carries-a-contract.mdadr-0012The Cockpit is a sixth projection of the registry, not an application over it.ai/repo/adrs/0012-the-cockpit-is-a-projection-not-an-application.mdadr-0013Every web surface is discovered from its producer, resolved once, and projected.ai/repo/adrs/0013-every-web-surface-is-discovered-from-its-producer-resolved-o.mdadr-0014A closed session is a shared object of the layer, not a local note.ai/repo/adrs/0014-a-closed-session-is-a-shared-object-of-the-layer-not-a-local.mdadr-0015The episode boundary is drawn by the provider, not by the model.ai/repo/adrs/0015-the-episode-boundary-is-drawn-by-the-provider-not-by-the-mod.mdadr-0016The scenario is a body section, not a header field.ai/repo/adrs/0016-the-scenario-is-a-body-section-not-a-header-field.mdadr-0017An episode that opens is handed what the last one left.ai/repo/adrs/0017-an-episode-that-opens-is-handed-what-the-last-one-left.mdadr-0018Operational moments are objects of the layer, not pages of the site.ai/repo/adrs/0018-operational-moments-are-objects-of-the-layer-not-pages-of-th.mdadr-0019Distribution is one model, and every surface that ships the tool is a projection of it.ai/repo/adrs/0019-distribution-is-one-model-and-every-surface-that-ships-the-t.mdadr-0020The capability graph is composed, not centralised, and projected twice.ai/repo/adrs/0020-the-capability-graph-is-composed-not-centralised-and-projecte.mdadr-0021The branch-to-worktree topology is derived from git identity and enforced everywhere.ai/repo/adrs/0021-the-branch-to-worktree-topology-is-derived-from-git-identity-and-enfor.mdadr-0022The UI standard is an audit over a discovered page set, and its failures are fixed at their shared source.ai/repo/adrs/0022-the-ui-standard-is-an-audit-over-a-discovered-page-set.mdadr-0023Product features are objects of the layer, and the landing page is a projection of them.ai/repo/adrs/0023-product-features-are-objects-of-the-layer-and-the-landing-page-is-a-projection.mdadr-0024An orchestrator is a provider only at the bootstrap level, and its worktrees are scratch checkouts.ai/repo/adrs/0024-an-orchestrator-is-a-provider-only-at-the-bootstrap-level-an.mdadr-0025Presentation order is one total order owned by the crate, not a decision each surface makes.ai/repo/adrs/0025-presentation-order-is-one-total-order-owned-by-the-crate-not-a-decision-each-surface-makes.mdadr-0026A capability module's area is derived from the features that name it, not declared beside it.ai/repo/adrs/0026-a-capability-modules-area-is-derived-from-the-features-that-name-it.mdadr-0027A command is declared once and every surface is a projection of the command graph.ai/repo/adrs/0027-a-command-is-declared-once-and-every-surface-is-a-projection.mdadr-0028The crate's public surface is measured by the crate, and absence from the API is a decision.ai/repo/adrs/0028-the-crates-public-surface-is-measured-by-the-crate-and-absence.mdadr-0029The changelog is a projection of what the repository already records, and the version has one writer rather than one source.ai/repo/adrs/0029-the-changelog-is-a-projection-and-the-version-has-one-writer.mdadr-0030A task owes obligations, and the evidence that discharges them goes stale.ai/repo/adrs/0030-a-task-owes-obligations-and-evidence-goes-stale.mdadr-0031The design is one declaration and every surface is a projection of it.ai/repo/adrs/0031-the-design-is-one-declaration-and-every-surface-is-a-project.mdadr-0032An external workspace is not a provider: the term, the dependency posture, and where synced content lives.ai/repo/adrs/0032-an-external-workspace-is-not-a-provider-the-term-the-depende.mdadr-0033An execution is a watched capability call, not a second registry.ai/repo/adrs/0033-an-execution-is-a-watched-capability-call-not-a-second-registry.md
application 5
ci-gated-projectA project where CI decides what is acceptable.ai/repo/applications/ci-gated-project.mdlong-running-workWork that outlives the session doing it.ai/repo/applications/long-running-work.mdrepository-opened-in-ai-clientsA repository opened in AI clients, not only by people.ai/repo/applications/repository-opened-in-ai-clients.mdrepository-with-authored-governanceA repository whose rules were written by people.ai/repo/applications/repository-with-authored-governance.mdseveral-agents-one-repositorySeveral workers in one repository at once.ai/repo/applications/several-agents-one-repository.md
area 9
contextContext and continuity.ai/repo/why/areas/context.mdcoordinationCoordination and ownership.ai/repo/why/areas/coordination.mdcostModel, effort and cost.ai/repo/why/areas/cost.mddecisionsDecisions.ai/repo/why/areas/decisions.mddocumentationDocumentation and drift.ai/repo/why/areas/documentation.mdgovernanceRules and governance.ai/repo/why/areas/governance.mdobservabilityObservability.ai/repo/why/areas/observability.mdverificationVerification and evidence.ai/repo/why/areas/verification.mdwork-trackingWork and its state.ai/repo/why/areas/work-tracking.md
audience 8
agencyAgency or consultancy.ai/repo/why/audiences/agency.mdai-native-teamAI-native development team.ai/repo/why/audiences/ai-native-team.mdengineering-leadEngineering lead.ai/repo/why/audiences/engineering-lead.mdenterpriseEnterprise engineering.ai/repo/why/audiences/enterprise.mdopen-source-maintainerOpen-source maintainer.ai/repo/why/audiences/open-source-maintainer.mdplatform-teamPlatform and developer productivity team.ai/repo/why/audiences/platform-team.mdresearch-teamResearch and experimental engineering.ai/repo/why/audiences/research-team.mdsolo-builderSolo builder.ai/repo/why/audiences/solo-builder.md
claim 148
adr-catalogueAn architecture decision is one file under the layer's adrs section, validated against the decision contract, with an identity nothing else claims, reciprocal supersession, and every reference it makes resolvingdocs/CLAIMS.yamladr-proposemajordomus adr propose writes a decision with status proposed and refuses to write any other status, allocates its identity under a lock so concurrent workers never collide, and records what the decision was derived fromdocs/CLAIMS.yamladr-traceabilityA decision states what it put in force as typed references, each one validated, and the reverse direction — what a rule, a document, an implementation or a case was decided by — is read from the knowledge graph rather than written down a second timedocs/CLAIMS.yamladvertised-install-command-worksThe install command this project advertises is fetched and run from the published site on every push to the default branch, and the branch is red while it does not install a working tooldocs/CLAIMS.yamlai-layer-manifestThe repository's AI layer is one directory whose manifest names every section, readable without the tooldocs/CLAIMS.yamlbenchmark-coverage-derivedEvery externally callable operation of the Rust executable is a benchmark target with a denominator generated from the registry, and a missing case fails the structural checkdocs/CLAIMS.yamlblocker-storeAn entry in the questions store that does not parse blocks acceptance exactly as an unresolved question doesdocs/CLAIMS.yamlblocker-survives-handoverA blocking question keeps blocking after the work is handed to a new taskdocs/CLAIMS.yamlbootstrap-chainProvider instruction files are thin bootstraps that point at the AI layer and carry no rule of their owndocs/CLAIMS.yamlcapability-classA profile names a capability class rather than a vendor modeldocs/CLAIMS.yamlcapability-modulesA capability of the Rust executable is declared once and composed into its module, the root composes modules, and the registry refuses a capability outside its module's namespacedocs/CLAIMS.yamlcapability-registryEvery capability of the Rust executable is defined once, and the registry refuses a duplicate id or a colliding projection name, naming both partiesdocs/CLAIMS.yamlcatalogue-resolvesA use case or application cannot name a command, doctrine or claim that does not exist, and the two catalogues cannot disagree about which applies to whichdocs/CLAIMS.yamlcheckpoint-intervalA profile sets how often a worker should checkpoint, and a stale task is reporteddocs/CLAIMS.yamlcheckpoint-recordA checkpoint is a capped progress record with computed identity, and a body over the cap is refused rather than truncateddocs/CLAIMS.yamlci-planned-gatesA change runs the gates its paths can affect, decided by one model of what affects what, and a change to the pipeline itself or a path the model does not know runs every gatedocs/CLAIMS.yamlci-verdictThe one status a branch rule requires is green only when planning succeeded and every gate the plan selected ran in a job that succeeded; a failed or cancelled job, a selected gate whose job was skipped, or a plan that selected nothing is reddocs/CLAIMS.yamlcli-documentation-executableEvery command of the Rust executable's command line carries a summary, a long description, help on every argument and at least one example, and every example shown to a reader is executed against the built executabledocs/CLAIMS.yamlcommand-coverageEvery public command has a behavioural test and a negative test, computed rather than remembereddocs/CLAIMS.yamlcommand-surfaceThe public command surface is declared, and reconciled against the dispatcherdocs/CLAIMS.yamlconsistency-checkcheck reports whether state, scope, blockers and checkpoint age are consistent right nowdocs/CLAIMS.yamlcontext-assemblyThe context a worker is given is assembled from durable state in authority order, and what a profile excludes is excludeddocs/CLAIMS.yamlcontext-budgetThe always-loaded instruction file has a line budget with a failing checkdocs/CLAIMS.yamlcontext-coverageEvery directory of the layer carries a context document, the exemption is declared by the contract that governs the subtree, and a descendant may narrow that requirement but never weaken itdocs/CLAIMS.yamlcontext-documentsThe context that applies to a path is composed from the layer's scoped documents, root to target, in one deterministic order with provenance, and a tree that does not validate resolves nothingdocs/CLAIMS.yamlcontext-impactThe impact of a change set on the scoped context is reported from git — the documents, the scopes below them, moves with their ancestry, tracked sources to review, and stale projections — and an unrelated change reports nothingdocs/CLAIMS.yamlcontext-selection-budgetThe assembled context obeys a line budget, and every section it drops is named with its reasondocs/CLAIMS.yamlcontinuity-reachableEvery continuity store is proven reachable through its own command, not merely present on diskdocs/CLAIMS.yamlcost-per-outcomeCost per accepted outcome will be reported from measured data onlydocs/CLAIMS.yamldag-validationA cycle, a self-dependency and a dependency on an issue that does not exist are each refused by namedocs/CLAIMS.yamldecision-attributionA decision record without a task, a head and a reason is reported, and does not blockdocs/CLAIMS.yamldecision-recordA decision is recorded with its reason and its task, and is superseded by a later entry rather than editeddocs/CLAIMS.yamlderivation-one-graphEvery committed derived artifact of the repository is regenerated by one command in dependency order and checked by one read-only command that names every stale artifact, a second regeneration on a clean tree changes nothing, and no derived file records the commit it lands indocs/CLAIMS.yamlderived-data-currentA commit whose derived data is behind its canonical inputs is refused before it exists, and a repository that unwires that gate is a doctor failuredocs/CLAIMS.yamlderived-not-declaredWhat the tool knows about itself is written once and derived everywhere else, and a second copy is a test failuredocs/CLAIMS.yamldispatcher-wiringWiring is found in a hook or in any subhook of the directory that hook dispatches todocs/CLAIMS.yamldistribution-canonical-modelEvery platform, artifact name and installation URL is derived from one model, and a projection that disagrees with it is refuseddocs/CLAIMS.yamldivergence-labelState read back is labelled exact, advanced, diverged or different_context against gitdocs/CLAIMS.yamldoctrine-class-decidesA doctrine's class is what decides whether a violation stops the command, not a label beside itdocs/CLAIMS.yamldoctrine-registryEvery rule the tool enforces is declared once, as a rule object in the repository's effective set, and doctor proves each one is reached by the command that claims to run itdocs/CLAIMS.yamldrift-watchwatch reports policy, projection, state, scope, handover, verification, staleness and retention driftdocs/CLAIMS.yamleffort-escalationEscalating reasoning effort after repeated blocked attempts is recorded rather than assumeddocs/CLAIMS.yamlevent-vocabularyThe ledger's event vocabulary is closed, on the way in and on the way outdocs/CLAIMS.yamlevidence-gates-doneAn issue cannot be completed while a required piece of evidence is missingdocs/CLAIMS.yamlexecutable-reference-derivedThe site's pages about the Rust executable (one per module, one per capability, the command line, the MCP surface, the benchmarks, the executable's own narrative) are derived from the registry manifest and the registry dataset the executable generates, nothing names a capability by hand, and a capability that joins or leaves the registry gains or loses its page, its index entries and its links from the generators alonedocs/CLAIMS.yamlexecution-cache-equivalenceA cached capability of the Rust executable answers the same value uncached, cold and warm, a hit runs no handler, errors and commands are never cached, and the key carries the registry fingerprintdocs/CLAIMS.yamlexecution-wavesExecution waves are computed from the graph, and issues in one wave that touch the same paths are reported as serialiseddocs/CLAIMS.yamlexit-code-contractExit codes are a contract, and no code means "warn and continue"docs/CLAIMS.yamlfinish-contractfinish evaluates the finish contract line by line and refuses when any line is unmetdocs/CLAIMS.yamlgenerated-artifacts-typedEvery generated artifact declares the document it projects, the encoding it is written in, the schema its content satisfies and its source, and a structured document is written in every encoding it is committed in from one valuedocs/CLAIMS.yamlgenerated-projections-checkedThe committed projections, the OpenAPI document, the capability reference and the allow-lists, are regenerated from the registry and the schemas, and generate --check refuses a stale onedocs/CLAIMS.yamlgit-identityIdentity fields on every state record are computed from git and never authoreddocs/CLAIMS.yamlgithub-projectionGitHub milestones and issues are generated from the canonical model, and a hand-edited generated region is reported rather than overwrittendocs/CLAIMS.yamlgithub-projection-gatedA projection that stops being applied turns a build red, and a gate that cannot reach GitHub reports that it cannot rather than passingdocs/CLAIMS.yamlhandover-recordhandover writes an append-only record with computed front matter and required sectionsdocs/CLAIMS.yamlhistory-ledger-readThe ledger is readable back as operational history, filtered by task, event and timedocs/CLAIMS.yamlhot-path-no-rebuildAfter startup, no MCP or HTTP request of the Rust executable scans the repository, builds the index or the registry, derives a schema or builds a projection, and perf.counters proves itdocs/CLAIMS.yamlinit-refusesInstalling into a repository that already has an installation is refuseddocs/CLAIMS.yamlinstall-command-is-derivedThe documented one-line install command is composed from the model's parts, and a document that states a different one fails the suitedocs/CLAIMS.yamlinstaller-verifies-before-installingThe installer verifies an artifact's digest and inspects its archive before anything is unpacked, and any failure leaves the previous installation workingdocs/CLAIMS.yamlinterfaces-are-projectionsMCP, HTTP, OpenAPI, Swagger UI, the capabilities commands and the generated reference are derived from the registry, and a change to one definition reaches every one of themdocs/CLAIMS.yamllanding-page-is-a-projectionThe website's homepage and feature pages name no feature, module, command, provider or count of their own, and a stale product dataset fails the build before it can be deployeddocs/CLAIMS.yamlledger-integrityEvery line of the append-only ledger is a well-formed event, and a malformed line is a failure rather than a skipped recorddocs/CLAIMS.yamllegacy-migrationA repository on the pre-.ai layout is migrated once, explicitly, with a previewed plan and a verified backup of its local state, and the command is idempotent afterwardsdocs/CLAIMS.yamllocal-state-ignoredCheckout-local state lives under .ai/local/, is ignored by git, and is absent on a fresh clone or worktreedocs/CLAIMS.yamlmcp-client-autostartAn MCP client opened in the repository starts the server itself, building the executable when it must, through the client configurations at the root and bin/majordomus-mcpdocs/CLAIMS.yamlmcp-data-drivenWhat the MCP server serves is decided by the manifest, the declared source classes and each file's front matter, so an object added to the layer is served with no change to the executabledocs/CLAIMS.yamlmcp-degraded-not-silentA file of the layer the MCP server cannot read is excluded with a diagnostic naming its path and the index says it is degraded, never silently smallerdocs/CLAIMS.yamlmcp-lease-resilienceNothing a client leaves behind locks another client out of the shared server; a corrupt, empty, stale or abandoned lease is taken over and named, a client that cannot share is served alone with the reason logged, and a signal removes the lease before the server diesdocs/CLAIMS.yamlmcp-peersEvery client attached to the shared server is a peer named by its own initialize, listed by majordomus_peers, and majordomus_announce tells the others what it is working on and which paths it expects to touchdocs/CLAIMS.yamlmcp-shared-serverOne shared server serves a repository: the first majordomus mcp binds loopback HTTP with Swagger UI and MCP over HTTP beside its stdio session and logs the URL, every later one attaches to it, and it ends when the last client leavesdocs/CLAIMS.yamlmcp-stdio-surfaceThe Rust executable serves the repository's AI layer to an MCP client over stdio, read-only, with protocol frames alone on stdoutdocs/CLAIMS.yamlmcp-uri-resolutionA majordomus:// URI resolves the same way through the MCP resource read, the majordomus_get tool and the HTTP object route, and majordomus://repository answers repository.info as a JSON document tagged builtindocs/CLAIMS.yamlminimum-contextA profile declares which context a worker should load and no moredocs/CLAIMS.yamlno-counts-in-contextA hardcoded count in the always-loaded file is a failuredocs/CLAIMS.yamlno-networkNothing performs a network call, evaluates generated text, or deletes recursivelydocs/CLAIMS.yamlno-silent-overwriteA hand-edited instruction file is never silently overwrittendocs/CLAIMS.yamlno-transcriptsHandovers carry durable facts, never conversation transcriptsdocs/CLAIMS.yamlobligation-closureA task that declares obligations reaches the outcome completed only when each one has evidence recorded against it, and evidence taken over files that have since changed, or at a commit the branch has since left, no longer discharges anythingdocs/CLAIMS.yamlobligation-establishmentAn obligation whose fact the tool can hold is established live rather than recorded — a clean tree, a remote-tracking ref that reaches the head, a trunk that reaches it, a published site that serves it — and a hand-recorded line neither discharges it nor rescues itdocs/CLAIMS.yamlopen-question-gateAn unresolved question blocks acceptance, and an entry the gate cannot parse is a failure rather than a silent passdocs/CLAIMS.yamlopenapi-inferredThe OpenAPI document is inferred, the tags are the modules, the examples are the benchmark cases, the responses are the router's statuses by kind, the prose is the one text every projection shares, and the site's API reference is rendered from the committed documentdocs/CLAIMS.yamloverlap-reportOverlap between parallel workers is computed on claimed paths in both containment directionsdocs/CLAIMS.yamlpointer-integrityEvery repository-relative reference in the always-loaded file is proven to resolvedocs/CLAIMS.yamlpolicy-parseThe canonical policy is parsed and rejected if it contains an unknown keydocs/CLAIMS.yamlproduct-features-discoveredA product feature is one file under the layer, discovered rather than registered, and answered by the command line, the HTTP API, the OpenAPI document, MCP, the derived graph, the capability matrix and the website's homepage and feature pages with nothing else changeddocs/CLAIMS.yamlproduct-projection-public-safeThe dataset the website is rendered from carries only fields an allow-list names, so a feature's prose, a machine path or a field nobody allowed cannot reach a published pagedocs/CLAIMS.yamlproduct-references-resolveEvery reference a feature makes resolves against the registry that owns it, and one that does not is an error naming the file, the key and the nearest candidate rather than a page linking to nothingdocs/CLAIMS.yamlproduct-surfaces-derivedWhich interfaces a feature is exposed through, what stands behind it and what it answers are derived from the registries that own those facts, never authored, and a source file that writes one down is refused by its schemadocs/CLAIMS.yamlprofile-axesCapability class, reasoning effort, output verbosity, context and verification are five independent axesdocs/CLAIMS.yamlprofile-validateEvery profile is parsed, its unknown keys rejected, and the default profile proven to existdocs/CLAIMS.yamlproject-schemaMilestones and issues are canonical repository files, and a key nobody reads is an errordocs/CLAIMS.yamlproject-status-derivedIssue and milestone status is derived from recorded facts and is stored nowheredocs/CLAIMS.yamlprojection-fingerprintEvery generated instruction file carries its own stamp, and a hand edit is detecteddocs/CLAIMS.yamlprojection-generationProvider instruction files are generated from the one policy, deterministicallydocs/CLAIMS.yamlprompt-assetA repository-local prompt renders against a closed set of state tokens, and an unknown token is an errordocs/CLAIMS.yamlprompt-assetsEvery repository-local prompt asset renders, and an unknown token is a failuredocs/CLAIMS.yamlprompt-captureA declared provider hook captures the person's raw prompts below the model, and doctor proves it by running itdocs/CLAIMS.yamlprovider-projections-one-rendererThe provider bootstraps the policy declares (AGENTS.md, CLAUDE.md, GEMINI.md, ...) are a target of majordomus generate, rendered from the policy and the provider templates byte for byte as the shell tool renders them, and generate --check refuses a hand-edited or stale one in CIdocs/CLAIMS.yamlrecord-resolutionThe right prior record is resolved by worktree and branch, and an unrelated one is never offereddocs/CLAIMS.yamlrecord-retentionRotating the ledger archives the oldest lines and never deletes themdocs/CLAIMS.yamlrecord-searchDurable records are searchable literally, across kinds, without an indexdocs/CLAIMS.yamlregion-projectionA projection can own only the region between its markers, leaving the rest of the file untoucheddocs/CLAIMS.yamlrelease-archive-shapeA release archive carries every path once and carries nothing but files and directoriesdocs/CLAIMS.yamlrelease-is-complete-or-absentA release publishes an artifact for every supported target or it is not publisheddocs/CLAIMS.yamlreproduce-commandEvery finding carries the command that reproduces itdocs/CLAIMS.yamlretention-capsThe append-only ledger and handover store have retention caps that are checkeddocs/CLAIMS.yamlroadmap-derivedThe roadmap is derived from milestone state, and no document may be a second authority for itdocs/CLAIMS.yamlroutingRouting recommendations will be derived from measured cost and outcome datadocs/CLAIMS.yamlrule-resolutionThe effective rule set is resolved as a dependency graph in a deterministic order, and a set that does not resolve is applied by nothingdocs/CLAIMS.yamlruntime-adaptersOpt-in runtime adapters will clamp read size, output size and fan-out from profile-derived limitsdocs/CLAIMS.yamlrust-binary-artifactThe Rust executable the rust gate built is published as an artifact with its provenance, and every Rust case drives the executable MAJORDOMUS_BIN names instead of building onedocs/CLAIMS.yamlrust-coverage-floorLine coverage of the Rust crate is measured on every change that can affect the crate and on every push to master, and the build fails under the floor in scripts/rust-coverage-threshold, one integer read by CI, by scripts/rust-check and by just coveragedocs/CLAIMS.yamlrust-evidence-gatesEvery gate the Rust executable must pass is one script, scripts/rust-check, and CI runs that script on every change that can reach the cratedocs/CLAIMS.yamlrust-hot-path-benchmarksThe paths of the Rust executable that scale with the repository carry criterion benchmarks that build on every push, and every executable capability declares its benchmark policy, required or waived for a typed reasondocs/CLAIMS.yamlschema-driven-kindsHow each declarative kind is read and which keys it may carry is data read at run time, and a repository adds a kind with its JSON Schema without a code changedocs/CLAIMS.yamlscope-declaredWhat a worker reads of the repository is declared once in .ai/repo/scope.yaml, out wins over in, and the Rust executable discovers, indexes and serves nothing outside itdocs/CLAIMS.yamlscope-enforcementA touched file outside the claimed scope is a failure, not a warningdocs/CLAIMS.yamlscoped-taskA task is started with a declared file scope and a profile, and only one task is active per checkoutdocs/CLAIMS.yamlsemantic-retrievalRanked or semantic retrieval over durable records is deliberately not implementeddocs/CLAIMS.yamlsession-lifecycleA provider hook opens the episode below the model and hands the worker what the last one left, records what a compaction is about to discard, and closes the episode with a continuation record beside its envelopedocs/CLAIMS.yamlsession-recordsA closed execution episode is a shared object of the layer, written by the tool from git and the ledger, valid against a contract that admits no conversation and no absolute path, and discovered rather than registereddocs/CLAIMS.yamlshared-policyOne policy will be shared across repositories and workersdocs/CLAIMS.yamlsite-deploy-one-pathThe site is deployed by one script, scripts/site-deploy, from a terminal or from the publication workflow; it refuses a dirty tree, a commit master does not contain and a build that is not HEAD's, pushes site/public to gh-pages with the source commit named, and pushes nothing when the output is unchangeddocs/CLAIMS.yamlsite-deploys-from-verified-runPublication is gated on everything that can make the published site wrong and waits for nothing else; the checks that decide whether a change may merge run beside it on the same commit, not in front of itdocs/CLAIMS.yamlsite-registry-datasetThe site's Registry page is rendered from site/data/registry/registry.json, a dataset majordomus generate site derives from the registry and the index with their fingerprints, and generate --check refuses a stale one in CIdocs/CLAIMS.yamlskill-catalogueA skill is one directory under the layer's skills section holding SKILL.md, discovered by the source class `skill` the shell tool and the Rust executable both read, so that adding the file is the whole registration and the catalogue, the command, doctor, MCP and the site all derive from itdocs/CLAIMS.yamlskill-checkEvery skill is validated against the allow-list generated from its schema, its directory, its sections and its references, a violation names the file and every reason, and a repository with no skills is reported rather than passeddocs/CLAIMS.yamlskill-site-projectionThe website's skills section is rendered from the skills catalogue, one page per skill carrying the skill's own body and examples, and a removed or renamed skill leaves no page, entry or link behinddocs/CLAIMS.yamlsuite-parallelThe behavioural suite runs a bounded number of cases at a time with the serial runner's semantics, a case that writes into the checkout declares itself exclusive and runs alone, and the parallel phase fails naming the paths when the checkout changed under itdocs/CLAIMS.yamltask-commit-attributionA task will know which commits it produced, rather than inferring them from a rangedocs/CLAIMS.yamltask-dependenciesA task record has no dependencies; sequencing between sessions is not representeddocs/CLAIMS.yamltelemetryExecution telemetry will be recorded once a provider exposes it honestlydocs/CLAIMS.yamltool-location-independentThe tool runs read-only from any location, and two locations of one version agree about one repositorydocs/CLAIMS.yamltyped-outcomeAn outcome is a value from a closed vocabulary, not free textdocs/CLAIMS.yamluse-case-coverageEvery public command is named and run by an active use case, a guaranteed claim or an MCP tool without one is a named gap, and the policy says which gaps fail doctor, check and finishdocs/CLAIMS.yamluse-case-evidenceA use case's scenario executes against the real tool in a disposable repository, every step's exit code and output are asserted, and the normalised evidence is what the site showsdocs/CLAIMS.yamluse-case-impactFrom the files a change touched, the tool names the commands, rules, use cases, scenarios and behavioural cases affected, and scaffolds a draft for a capability no use case coversdocs/CLAIMS.yamlvendored-rule-packageThe rule baseline is vendored into the repository with a manifest naming every file and its hash, and a hand edit is detected and refuseddocs/CLAIMS.yamlweb-namespaces-reserved/docs serves this repository's documentation and /swagger serves the Swagger UI, and neither may take the other's mountdocs/CLAIMS.yamlweb-surface-declared-onceEvery web surface is declared once at its producer and resolved into one topology, from which the router, the landing page and the machine-readable index are each projecteddocs/CLAIMS.yamlwhy-catalogue-discoveredAn operational moment is one file under the layer, discovered rather than registered, and answered by the command line, the HTTP API, the OpenAPI document, MCP, the derived graph and the website with nothing else changeddocs/CLAIMS.yamlwhy-diagnosis-explainableA diagnosis of a reader's own symptoms is deterministic counting over the catalogue's metadata, and every recommendation names the moments that produced itdocs/CLAIMS.yamlwhy-references-resolveEvery reference a moment makes resolves against the thing it names, and one that does not is an error carrying the nearest candidatedocs/CLAIMS.yamlwiring-reconciliationEvery enforcement the policy declares is reconciled against what actually runsdocs/CLAIMS.yamlworktree-migration-losslessA misplaced worktree is brought to its canonical path with its modified, staged, unstaged and untracked work intact, verified by a fingerprint taken before and after the move, and a step is reported as moved only when the two are equaldocs/CLAIMS.yamlworktree-ownershipA task record names the checkout it belongs to, and another checkout is never held to its scopedocs/CLAIMS.yamlworktree-topology-derivedA branch's worktree path is derived from git identity and the branch name alone — the primary checkout's sibling named with -wt, then the branch with its hierarchy kept — and is the same answer from every directory of every worktree, with nothing registered or configureddocs/CLAIMS.yaml
command 29
adradrshare/commands.yamlbenchbenchshare/commands.yamlcapturecaptureshare/commands.yamlcheckcheckshare/commands.yamlcheckpointcheckpointshare/commands.yamlcontextcontextshare/commands.yamldecisiondecisionshare/commands.yamldoctordoctorshare/commands.yamldoctrinedoctrineshare/commands.yamlevidenceevidenceshare/commands.yamlfinishfinishshare/commands.yamlhandoverhandovershare/commands.yamlhelphelpshare/commands.yamlhistoryhistoryshare/commands.yamlinitinitshare/commands.yamlknowledgeknowledgeshare/commands.yamlmigratemigrateshare/commands.yamlplanplanshare/commands.yamlpromptpromptshare/commands.yamlquestionquestionshare/commands.yamlrulesrulesshare/commands.yamlsearchsearchshare/commands.yamlsessionsessionshare/commands.yamlskillsskillsshare/commands.yamlstartstartshare/commands.yamlupdateupdateshare/commands.yamlusecaseusecaseshare/commands.yamlversionversionshare/commands.yamlwatchwatchshare/commands.yaml
context 27
ai.layerRepository AI context.ai/README.mdai.repoTracked repository context.ai/repo/README.mdai.repo.adrsArchitecture decisions.ai/repo/adrs/README.mdai.repo.applicationsApplications.ai/repo/applications/README.mdai.repo.benchmarksBenchmarks.ai/repo/benchmarks/README.mdai.repo.benchmarks.pagesPublication baselines.ai/repo/benchmarks/pages/README.mdai.repo.benchmarks.rustExecutable baselines.ai/repo/benchmarks/rust/README.mdai.repo.ciContinuous integration.ai/repo/ci/README.mdai.repo.deploymentsDeployments.ai/repo/deployments/README.mdai.repo.featuresProduct features.ai/repo/features/README.mdai.repo.knowledgeKnowledge.ai/repo/knowledge/README.mdai.repo.knowledge.curatedCurated notes.ai/repo/knowledge/curated/README.mdai.repo.profilesProfiles.ai/repo/profiles/README.mdai.repo.projectProject model.ai/repo/project/README.mdai.repo.project.issuesIssues.ai/repo/project/issues/README.mdai.repo.project.milestonesMilestones.ai/repo/project/milestones/README.mdai.repo.promptsPrompt assets.ai/repo/prompts/README.mdai.repo.providersProvider templates.ai/repo/providers/README.mdai.repo.releasesPublished releases.ai/repo/releases/README.mdai.repo.rulesRepository rules.ai/repo/rules/README.mdai.repo.rules.projectProject rules.ai/repo/rules/project/README.mdai.repo.sessionsSession records.ai/repo/sessions/README.mdai.repo.skillsSkills.ai/repo/skills/README.mdai.repo.use-casesUse cases.ai/repo/use-cases/README.mdai.repo.whyWhy this tool exists.ai/repo/why/README.mdai.repo.workflowsWorkflows.ai/repo/workflows/README.mdai.repo.workspacesExternal workspaces.ai/repo/workspaces/README.md
deployment 1
majordomusThe Majordomus layer, served from one machine.ai/repo/deployments/majordomus.yaml
distribution-model 1
share/distribution.yamlshare/distribution.yaml
document 210
.ai/repo/skills/implement/examples/add-a-catalogue-item.mdAdd a declarative catalogue item.ai/repo/skills/implement/examples/add-a-catalogue-item.md.ai/repo/skills/implement/examples/fix-a-defect.mdFix a defect.ai/repo/skills/implement/examples/fix-a-defect.md.ai/repo/skills/implement/examples/implement-a-feature.mdImplement a feature from an issue.ai/repo/skills/implement/examples/implement-a-feature.md.ai/repo/skills/implement/examples/make-an-operation-faster.mdMake an operation faster.ai/repo/skills/implement/examples/make-an-operation-faster.md.ai/repo/skills/implement/examples/refactor-without-behaviour-change.mdRefactor a subsystem without changing its behaviour.ai/repo/skills/implement/examples/refactor-without-behaviour-change.md.ai/repo/skills/repo-review/examples/review-a-subsystem.mdReview a subsystem.ai/repo/skills/repo-review/examples/review-a-subsystem.md.ai/repo/skills/repo-review/examples/review-against-an-issue.mdReview an implementation against its issue.ai/repo/skills/repo-review/examples/review-against-an-issue.md.ai/repo/skills/repo-review/examples/review-current-diff.mdReview the current diff.ai/repo/skills/repo-review/examples/review-current-diff.md.ai/repo/skills/repo-review/examples/review-generated-synchronisation.mdReview generated files and documents for drift.ai/repo/skills/repo-review/examples/review-generated-synchronisation.md.ai/repo/skills/repo-review/examples/review-repository-architecture.mdReview the whole repository's architecture.ai/repo/skills/repo-review/examples/review-repository-architecture.md.ai/repo/workflows/continuity.mdContinuity.ai/repo/workflows/continuity.md.ai/repo/workflows/plan.mdTaking work from the plan.ai/repo/workflows/plan.md.ai/repo/workflows/task-lifecycle.mdThe task lifecycle.ai/repo/workflows/task-lifecycle.md.ai/repo/workflows/use-cases.mdUse cases.ai/repo/workflows/use-cases.mdAGENTS.mdAGENTS.mdAGENTS.mdCLAUDE.mdCLAUDE.mdCLAUDE.mdCONTRIBUTING.mdContributingCONTRIBUTING.mdREADME.mdPrismatic MajordomusREADME.mdSECURITY.mdSecuritySECURITY.mddocs/ADOPTION.mdAdoptiondocs/ADOPTION.mddocs/ADOPTION_FIRST_RUN.mdFirst run in a foreign repository — forensic findingdocs/ADOPTION_FIRST_RUN.mddocs/CAPABILITIES.mdCapabilities — one definition, every interface deriveddocs/CAPABILITIES.mddocs/CATALOGUE.mdThe cataloguedocs/CATALOGUE.mddocs/CI.mdContinuous integrationdocs/CI.mddocs/CLI.mdCLI specification — `majordomus`docs/CLI.mddocs/COCKPIT.mdThe Cockpit — the registry, rendered for a persondocs/COCKPIT.mddocs/COMMANDS.mdThe command graphdocs/COMMANDS.mddocs/CONCEPTS.mdConceptsdocs/CONCEPTS.mddocs/CONTEXT.mdScoped contextdocs/CONTEXT.mddocs/CONTINUITY.mdContinuity — how work survives the session that was doing itdocs/CONTINUITY.mddocs/DESIGN.mdPrismatic Majordomusdocs/DESIGN.mddocs/DISTRIBUTION.mdDistributiondocs/DISTRIBUTION.mddocs/DOCTRINE.mdDoctrinedocs/DOCTRINE.mddocs/DOGFOODING.mdDogfoodingdocs/DOGFOODING.mddocs/DYNAMICITY.mdCanonical ownership and derivationdocs/DYNAMICITY.mddocs/ECONOMICS.mdEconomicsdocs/ECONOMICS.mddocs/ENVIRONMENT.mdThe repository environment — one snapshot, every surface a renderingdocs/ENVIRONMENT.mddocs/EXECUTIONS.mdExecutions — watching a capability call happendocs/EXECUTIONS.mddocs/EXTRACTION_REPORT.mdExtraction Report — Prismatic Majordomus v0.1 design phasedocs/EXTRACTION_REPORT.mddocs/GITHUB_PAGES_ARCHITECTURE.mdGitHub Pages architecturedocs/GITHUB_PAGES_ARCHITECTURE.mddocs/GITHUB_PAGES_PERFORMANCE.mdGitHub Pages performancedocs/GITHUB_PAGES_PERFORMANCE.mddocs/INSTALL.mdInstalling Majordomusdocs/INSTALL.mddocs/MCP.mdMCP surface — `majordomus mcp`docs/MCP.mddocs/PAGES_STATUS.mdGitHub Pages performance statusdocs/PAGES_STATUS.mddocs/PERFORMANCE.mdPerformance truthdocs/PERFORMANCE.mddocs/PLANNING.mdPlanning — milestones, issues, and the graph between themdocs/PLANNING.mddocs/PLAN_STATUS.mdPlan statusdocs/PLAN_STATUS.mddocs/PRODUCT.mdProduct — the features, and the landing page as a projection of themdocs/PRODUCT.mddocs/QUALITY.mdPublic API qualitydocs/QUALITY.mddocs/README.mdDocumentation indexdocs/README.mddocs/RELEASE.mdThe release — a changelog nobody writes, and one writer for the versiondocs/RELEASE.mddocs/ROADMAP.mdThe roadmap — milestones as a graphdocs/ROADMAP.mddocs/SCHEMAS.mdFile schemas — every file Majordomus reads or writesdocs/SCHEMAS.mddocs/SCOPE.mdThe repository scopedocs/SCOPE.mddocs/SITE_CLAIMS.mdSite claimsdocs/SITE_CLAIMS.mddocs/SITE_REVIEW.mdSite review — route audit, ownership, validationdocs/SITE_REVIEW.mddocs/TWO_FOLDER_CONSOLIDATION.mdTwo-folder consolidation — forensic findings and migration plandocs/TWO_FOLDER_CONSOLIDATION.mddocs/UI.mdUI conformance — `scripts/ui`docs/UI.mddocs/USE_CASES.mdExecutable use casesdocs/USE_CASES.mddocs/WEB.mdThe web surface — discovered from its producer, projected oncedocs/WEB.mddocs/WHY.mdWhy — the operational moments, as datadocs/WHY.mddocs/WORKTREES.mdWorktreesdocs/WORKTREES.mddocs/claims/adr-catalogue.mdAn architecture decision is one file under the layer's adrs section, validated against the decision contract, with an identity nothing else claims, reciprocal supersession, and every reference it makes resolvingdocs/claims/adr-catalogue.mddocs/claims/adr-propose.md`majordomus adr propose` writes a decision with status proposed and refuses to write any other status, allocates its identity under a lock so concurrent workers never collide, and records what the decision was derived fromdocs/claims/adr-propose.mddocs/claims/adr-traceability.mdA decision states what it put in force as typed references, each one validated, and the reverse direction is read from the knowledge graph rather than written down a second timedocs/claims/adr-traceability.mddocs/claims/advertised-install-command-works.mdThe install command this project advertises is run, from the published site, and proved to workdocs/claims/advertised-install-command-works.mddocs/claims/ai-layer-manifest.mdThe repository's AI layer is one directory whose manifest names every section, readable without the tooldocs/claims/ai-layer-manifest.mddocs/claims/benchmark-coverage-derived.mdEvery externally callable operation of the Rust executable is a benchmark target with a denominator generated from the registry, and a missing case fails the structural checkdocs/claims/benchmark-coverage-derived.mddocs/claims/blocker-store.mdAn unparseable question blocks acceptance exactly as an unresolved one doesdocs/claims/blocker-store.mddocs/claims/blocker-survives-handover.mdA blocking question keeps blocking after the work is handed to a new taskdocs/claims/blocker-survives-handover.mddocs/claims/bootstrap-chain.mdProvider instruction files are thin bootstraps that point at the AI layer and carry no rule of their owndocs/claims/bootstrap-chain.mddocs/claims/capability-class.mdA profile names a capability class rather than a vendor modeldocs/claims/capability-class.mddocs/claims/capability-modules.mdA capability of the Rust executable is declared once and composed into its module, the root composes modules, and the registry refuses a capability outside its module's namespacedocs/claims/capability-modules.mddocs/claims/capability-registry.mdEvery capability of the Rust executable is defined once, and the registry refuses a duplicate id or a colliding projection name, naming both partiesdocs/claims/capability-registry.mddocs/claims/catalogue-resolves.mdA use case cannot name something the tool does not havedocs/claims/catalogue-resolves.mddocs/claims/checkpoint-interval.mdA profile sets how often a worker should checkpoint, and a stale task is reporteddocs/claims/checkpoint-interval.mddocs/claims/checkpoint-record.mdA checkpoint is a capped progress record, and a body over the cap is refuseddocs/claims/checkpoint-record.mddocs/claims/ci-planned-gates.mdA change runs the gates its paths can affect, decided by one model of what affects what, and a change to the pipeline itself or a path the model does not know runs every gatedocs/claims/ci-planned-gates.mddocs/claims/ci-verdict.mdThe one status a branch rule requires is green only when planning succeeded and every gate the plan selected ran in a job that succeeded; a failed or cancelled job, a selected gate whose job was skipped, or a plan that selected nothing is reddocs/claims/ci-verdict.mddocs/claims/cli-documentation-executable.mdEvery command of the Rust executable's command line carries a summary, a long description, help on every argument and at least one example, and every example shown to a reader is executed against the built executabledocs/claims/cli-documentation-executable.mddocs/claims/command-coverage.mdEvery public command has a behavioural test and a negative test, computed rather than remembereddocs/claims/command-coverage.mddocs/claims/command-surface.mdThe public command surface is declared, and reconciled against the dispatcherdocs/claims/command-surface.mddocs/claims/consistency-check.mdcheck reports whether state, scope, blockers and checkpoint age are consistent right nowdocs/claims/consistency-check.mddocs/claims/context-assembly.mdThe context a worker is given is assembled from durable state in authority orderdocs/claims/context-assembly.mddocs/claims/context-budget.mdThe always-loaded instruction file has a line budget with a failing checkdocs/claims/context-budget.mddocs/claims/context-coverage.mdEvery directory of the layer carries a context document, the exemption is declared by the contract that governs the subtree, and a descendant may narrow that requirement but never weaken itdocs/claims/context-coverage.mddocs/claims/context-documents.mdThe context that applies to a path is composed from the layer's scoped documents, root to target, in one deterministic order with provenance, and a tree that does not validate resolves nothingdocs/claims/context-documents.mddocs/claims/context-impact.mdThe impact of a change set on the scoped context is reported from git — the documents, the scopes below them, moves with their ancestry, tracked sources to review, and stale projections — and an unrelated change reports nothingdocs/claims/context-impact.mddocs/claims/context-selection-budget.mdThe assembled context obeys a line budget, and every section it drops is nameddocs/claims/context-selection-budget.mddocs/claims/continuity-reachable.mdEvery continuity store is proven reachable through its own commanddocs/claims/continuity-reachable.mddocs/claims/cost-per-outcome.mdCost per accepted outcome will be reported from measured data onlydocs/claims/cost-per-outcome.mddocs/claims/dag-validation.mdA cycle, a self-dependency and a dependency on an issue that does not exist are each refused by namedocs/claims/dag-validation.mddocs/claims/decision-attribution.mdA decision record without a task, a head and a reason is reporteddocs/claims/decision-attribution.mddocs/claims/decision-record.mdA decision is recorded with its reason, and superseded rather than editeddocs/claims/decision-record.mddocs/claims/derivation-one-graph.mdEvery committed derived artifact is regenerated by one command in dependency order and checked by one read-only commanddocs/claims/derivation-one-graph.mddocs/claims/derived-data-current.mdA commit whose derived data is behind its canonical inputs is refused before it existsdocs/claims/derived-data-current.mddocs/claims/derived-not-declared.mdWhat the tool knows about itself is written once and derived everywhere elsedocs/claims/derived-not-declared.mddocs/claims/dispatcher-wiring.mdWiring is found in a hook or in any subhook of the directory it dispatches todocs/claims/dispatcher-wiring.mddocs/claims/distribution-canonical-model.mdEvery platform, artifact name and installation URL is derived from one model, and a projection that disagrees with it is refuseddocs/claims/distribution-canonical-model.mddocs/claims/divergence-label.mdState read back is labelled exact, advanced, diverged or different_context against gitdocs/claims/divergence-label.mddocs/claims/doctrine-class-decides.mdA doctrine's class decides whether a violation stops the commanddocs/claims/doctrine-class-decides.mddocs/claims/doctrine-registry.mdEvery enforced rule is declared once, and doctor proves it is reacheddocs/claims/doctrine-registry.mddocs/claims/drift-watch.mdwatch reports policy, projection, state, scope, handover, verification, staleness and retention driftdocs/claims/drift-watch.mddocs/claims/effort-escalation.mdEscalating reasoning effort after repeated blocked attempts is recorded rather than assumeddocs/claims/effort-escalation.mddocs/claims/event-vocabulary.mdThe ledger's event vocabulary is closed, on the way in and on the way outdocs/claims/event-vocabulary.mddocs/claims/evidence-gates-done.mdAn issue cannot be completed while a required piece of evidence is missingdocs/claims/evidence-gates-done.mddocs/claims/executable-reference-derived.mdThe site's pages about the Rust executable are derived from the registry, and a capability that joins or leaves it gains or loses its page from the generators alonedocs/claims/executable-reference-derived.mddocs/claims/execution-cache-equivalence.mdA cached capability of the Rust executable answers the same value uncached, cold and warm, a hit runs no handler, errors and commands are never cached, and the key carries the registry fingerprintdocs/claims/execution-cache-equivalence.mddocs/claims/execution-waves.mdExecution waves are computed from the graph, and issues in one wave that touch the same paths are reported as serialiseddocs/claims/execution-waves.mddocs/claims/exit-code-contract.mdExit codes are a contract, and no code means "warn and continue"docs/claims/exit-code-contract.mddocs/claims/finish-contract.mdfinish evaluates the finish contract line by line and refuses when any line is unmetdocs/claims/finish-contract.mddocs/claims/generated-artifacts-typed.mdEvery generated artifact declares the document it projects, the encoding it is written in, the schema its content satisfies and its source, and a structured document is written in every encoding it is committed in from one valuedocs/claims/generated-artifacts-typed.mddocs/claims/generated-projections-checked.mdThe committed projections, the OpenAPI document, the capability reference and the allow-lists, are regenerated from the registry and the schemas, and generate --check refuses a stale onedocs/claims/generated-projections-checked.mddocs/claims/git-identity.mdIdentity fields on every state record are computed from git and never authoreddocs/claims/git-identity.mddocs/claims/github-projection-gated.mdA projection that stops being applied turns a build red, and a gate that cannot reach GitHub reports that it cannot rather than passingdocs/claims/github-projection-gated.mddocs/claims/github-projection.mdGitHub milestones and issues are generated from the canonical model, and a hand-edited generated region is reported rather than overwrittendocs/claims/github-projection.mddocs/claims/handover-record.mdhandover writes an append-only record with computed front matter and required sectionsdocs/claims/handover-record.mddocs/claims/history-ledger-read.mdThe ledger is readable back as operational historydocs/claims/history-ledger-read.mddocs/claims/hot-path-no-rebuild.mdAfter startup, no MCP or HTTP request of the Rust executable scans the repository, builds the index or the registry, derives a schema or builds a projection, and perf.counters proves itdocs/claims/hot-path-no-rebuild.mddocs/claims/init-refuses.mdInstalling into a repository that already has an installation is refuseddocs/claims/init-refuses.mddocs/claims/install-command-is-derived.mdThe documented one-line install command is composed from the model's parts, and a document that states a different one fails the suitedocs/claims/install-command-is-derived.mddocs/claims/installer-verifies-before-installing.mdThe installer verifies an artifact's digest and inspects its archive before anything is unpacked, and any failure leaves the previous installation workingdocs/claims/installer-verifies-before-installing.mddocs/claims/interfaces-are-projections.mdMCP, HTTP, OpenAPI, Swagger UI, the capabilities commands and the generated reference are derived from the registry, and a change to one definition reaches every one of themdocs/claims/interfaces-are-projections.mddocs/claims/landing-page-is-a-projection.mdThe homepage names nothing of its owndocs/claims/landing-page-is-a-projection.mddocs/claims/ledger-integrity.mdEvery line of the ledger is a well-formed eventdocs/claims/ledger-integrity.mddocs/claims/legacy-migration.mdA repository on the pre-.ai layout is migrated once, explicitly, with a previewed plan and a verified backup of its local state, and the command is idempotent afterwardsdocs/claims/legacy-migration.mddocs/claims/local-state-ignored.mdCheckout-local state lives under .ai/local/, is ignored by git, and is absent on a fresh clone or worktreedocs/claims/local-state-ignored.mddocs/claims/mcp-client-autostart.mdAn MCP client opened in the repository starts the server itself, building the executable when it must, through the client configurations at the root and bin/majordomus-mcpdocs/claims/mcp-client-autostart.mddocs/claims/mcp-data-driven.mdWhat the MCP server serves is decided by the manifest, the declared source classes and each file's front matter, so an object added to the layer is served with no change to the executabledocs/claims/mcp-data-driven.mddocs/claims/mcp-degraded-not-silent.mdA file of the layer the MCP server cannot read is excluded with a diagnostic naming its path and the index says it is degraded, never silently smallerdocs/claims/mcp-degraded-not-silent.mddocs/claims/mcp-lease-resilience.mdNothing a client leaves behind locks another client out of the shared server; a corrupt, empty, stale or abandoned lease is taken over and named, a client that cannot share is served alone with the reason logged, and a signal removes the lease before the server diesdocs/claims/mcp-lease-resilience.mddocs/claims/mcp-peers.mdEvery client attached to the shared server is a peer named by its own initialize, listed by majordomus_peers, and majordomus_announce tells the others what it is working on and which paths it expects to touchdocs/claims/mcp-peers.mddocs/claims/mcp-shared-server.mdOne shared server serves a repository: the first majordomus mcp binds loopback HTTP with Swagger UI and MCP over HTTP beside its stdio session and logs the URL, every later one attaches to it, and it ends when the last client leavesdocs/claims/mcp-shared-server.mddocs/claims/mcp-stdio-surface.mdThe Rust executable serves the repository's AI layer to an MCP client over stdio, read-only, with protocol frames alone on stdoutdocs/claims/mcp-stdio-surface.mddocs/claims/mcp-uri-resolution.mdA majordomus:// URI resolves the same way through the MCP resource read, the majordomus_get tool and the HTTP object route, and majordomus://repository answers repository.info as a JSON document tagged builtindocs/claims/mcp-uri-resolution.mddocs/claims/minimum-context.mdA profile declares which context a worker should load and no moredocs/claims/minimum-context.mddocs/claims/no-counts-in-context.mdA hardcoded count in the always-loaded file is a failuredocs/claims/no-counts-in-context.mddocs/claims/no-network.mdNothing performs a network call, evaluates generated text, or deletes recursivelydocs/claims/no-network.mddocs/claims/no-silent-overwrite.mdA hand-edited instruction file is never silently overwrittendocs/claims/no-silent-overwrite.mddocs/claims/no-transcripts.mdHandovers carry durable facts, never conversation transcriptsdocs/claims/no-transcripts.mddocs/claims/obligation-closure.mdA task that declares obligations reaches the outcome completed only when each one has evidence, and evidence taken over files that have since changed no longer discharges anythingdocs/claims/obligation-closure.mddocs/claims/obligation-establishment.mdAn obligation whose fact the tool can hold is established live rather than recorded, and a hand-recorded line neither discharges it nor rescues itdocs/claims/obligation-establishment.mddocs/claims/open-question-gate.mdAn unresolved question blocks acceptance, and an unparseable entry is a failuredocs/claims/open-question-gate.mddocs/claims/openapi-inferred.mdThe OpenAPI document is inferred: the tags are the modules, the examples are the benchmark cases, the responses are the router's statuses by kind, the prose is the one text every projection shares, and the site's API reference is rendered from the committed documentdocs/claims/openapi-inferred.mddocs/claims/overlap-report.mdOverlap between parallel workers is computed on claimed paths in both containment directionsdocs/claims/overlap-report.mddocs/claims/pointer-integrity.mdEvery repository-relative reference in the always-loaded file is proven to resolvedocs/claims/pointer-integrity.mddocs/claims/policy-parse.mdThe canonical policy is parsed and rejected if it contains an unknown keydocs/claims/policy-parse.mddocs/claims/product-features-discovered.mdA product feature is discovered, never registereddocs/claims/product-features-discovered.mddocs/claims/product-projection-public-safe.mdThe public dataset carries only fields somebody alloweddocs/claims/product-projection-public-safe.mddocs/claims/product-references-resolve.mdA reference that resolves to nothing is an error, not a broken linkdocs/claims/product-references-resolve.mddocs/claims/product-surfaces-derived.mdWhat a feature is on is derived; what it is for is writtendocs/claims/product-surfaces-derived.mddocs/claims/profile-axes.mdCapability class, reasoning effort, output verbosity, context and verification are five independent axesdocs/claims/profile-axes.mddocs/claims/profile-validate.mdEvery profile is parsed, its unknown keys rejected, and the default profile proven to existdocs/claims/profile-validate.mddocs/claims/project-schema.mdMilestones and issues are canonical repository files, and a key nobody reads is an errordocs/claims/project-schema.mddocs/claims/project-status-derived.mdIssue and milestone status is derived from recorded facts and is stored nowheredocs/claims/project-status-derived.mddocs/claims/projection-fingerprint.mdEvery generated instruction file carries its own stamp, and a hand edit is detecteddocs/claims/projection-fingerprint.mddocs/claims/projection-generation.mdProvider instruction files are generated from the one policy, deterministicallydocs/claims/projection-generation.mddocs/claims/prompt-asset.mdA prompt renders against a closed set of tokens, and an unknown token is an errordocs/claims/prompt-asset.mddocs/claims/prompt-assets.mdEvery prompt asset renders, and an unknown token is a failuredocs/claims/prompt-assets.mddocs/claims/prompt-capture.mdA provider hook captures the person's raw prompts below the model, as a record and a rendering, and doctor proves it by running itdocs/claims/prompt-capture.mddocs/claims/provider-projections-one-renderer.mdThe provider bootstraps are a target of `majordomus generate`, rendered by one renderer, and `generate --check` refuses a stale one in CIdocs/claims/provider-projections-one-renderer.mddocs/claims/record-resolution.mdThe right prior record is resolved by worktree and branch, and an unrelated one is never offereddocs/claims/record-resolution.mddocs/claims/record-retention.mdRotating the ledger archives the oldest lines and never deletes themdocs/claims/record-retention.mddocs/claims/record-search.mdDurable records are searchable literally, across kinds, without an indexdocs/claims/record-search.mddocs/claims/region-projection.mdA projection can own only the region between its markersdocs/claims/region-projection.mddocs/claims/release-archive-shape.mdA release archive carries every path once and carries nothing but files and directoriesdocs/claims/release-archive-shape.mddocs/claims/release-is-complete-or-absent.mdA release publishes an artifact for every supported target or it is not publisheddocs/claims/release-is-complete-or-absent.mddocs/claims/reproduce-command.mdEvery finding carries the command that reproduces itdocs/claims/reproduce-command.mddocs/claims/retention-caps.mdThe append-only ledger and handover store have retention caps that are checkeddocs/claims/retention-caps.mddocs/claims/roadmap-derived.mdThe roadmap is derived from milestone state, and no document may be a second authority for itdocs/claims/roadmap-derived.mddocs/claims/routing.mdRouting recommendations will be derived from measured cost and outcome datadocs/claims/routing.mddocs/claims/rule-resolution.mdThe effective rule set is resolved as a dependency graph in a deterministic order, and a set that does not resolve is applied by nothingdocs/claims/rule-resolution.mddocs/claims/runtime-adapters.mdOpt-in runtime adapters will clamp read size, output size and fan-out from profile-derived limitsdocs/claims/runtime-adapters.mddocs/claims/rust-binary-artifact.mdThe Rust executable the rust gate built is published as an artifact with its provenance, and every Rust case drives the executable MAJORDOMUS_BIN names instead of building onedocs/claims/rust-binary-artifact.mddocs/claims/rust-coverage-floor.mdLine coverage of the Rust crate is measured on every change that can affect the crate and on every push to master, and the build fails under the floor in scripts/rust-coverage-threshold, one integer read by CI, by scripts/rust-check and by just coveragedocs/claims/rust-coverage-floor.mddocs/claims/rust-evidence-gates.mdEvery gate the Rust executable must pass is one script, scripts/rust-check, and CI runs that script on every change that can reach the cratedocs/claims/rust-evidence-gates.mddocs/claims/rust-hot-path-benchmarks.mdThe paths of the Rust executable that scale with the repository carry criterion benchmarks that build on every push, and every executable capability declares its benchmark policy, required or waived for a typed reasondocs/claims/rust-hot-path-benchmarks.mddocs/claims/schema-driven-kinds.mdHow each declarative kind is read and which keys it may carry is data read at run time, and a repository adds a kind with its JSON Schema without a code changedocs/claims/schema-driven-kinds.mddocs/claims/scope-declared.mdWhat a worker reads of the repository is declared once in .ai/repo/scope.yaml, out wins over in, and the Rust executable discovers, indexes and serves nothing outside itdocs/claims/scope-declared.mddocs/claims/scope-enforcement.mdA touched file outside the claimed scope is a failure, not a warningdocs/claims/scope-enforcement.mddocs/claims/scoped-task.mdA task is started with a declared file scope and a profile, and only one task is active per checkoutdocs/claims/scoped-task.mddocs/claims/semantic-retrieval.mdRanked or semantic retrieval over durable records is deliberately not implementeddocs/claims/semantic-retrieval.mddocs/claims/session-lifecycle.mdA provider hook opens and closes the execution episode, and the context it was given at the open is frozen beside itdocs/claims/session-lifecycle.mddocs/claims/session-records.mdA closed execution episode is a shared object of the layer, written by the tool from git and the ledger, valid against a contract that admits no conversation and no absolute path, and discovered rather than registereddocs/claims/session-records.mddocs/claims/shared-policy.mdOne policy will be shared across repositories and workersdocs/claims/shared-policy.mddocs/claims/site-deploy-one-path.mdThe site is deployed by one script, from a terminal or from the Pages workflow, and the deploy names its sourcedocs/claims/site-deploy-one-path.mddocs/claims/site-deploys-from-verified-run.mdPublication is gated on everything that can make the published site wrong and waits for nothing else; the checks that decide whether a change may merge run beside it on the same commit, not in front of itdocs/claims/site-deploys-from-verified-run.mddocs/claims/site-registry-dataset.mdThe site's Registry page is rendered from a dataset `majordomus generate site` derives from the registry, and `generate --check` refuses a stale onedocs/claims/site-registry-dataset.mddocs/claims/skill-catalogue.mdA skill is one directory under the skills section, discovered by the source class both readers share, so that adding the file is the whole registrationdocs/claims/skill-catalogue.mddocs/claims/skill-check.mdEvery skill is validated against the allow-list generated from its schema, its directory, its sections and its references, and a repository with no skills is reported rather than passeddocs/claims/skill-check.mddocs/claims/skill-site-projection.mdThe website's skills section is rendered from the skills catalogue, one page per skill carrying its own body and examples, and a removed or renamed skill leaves nothing behinddocs/claims/skill-site-projection.mddocs/claims/suite-parallel.mdThe behavioural suite runs a bounded number of cases at a time with the serial runner's semantics, a case that writes into the checkout declares itself exclusive and runs alone, and the parallel phase fails naming the paths when the checkout changed under itdocs/claims/suite-parallel.mddocs/claims/task-commit-attribution.mdA task will know which commits it produced, rather than inferring them from a rangedocs/claims/task-commit-attribution.mddocs/claims/task-dependencies.mdA task record has no dependencies; sequencing between sessions is not representeddocs/claims/task-dependencies.mddocs/claims/telemetry.mdExecution telemetry will be recorded once a provider exposes it honestlydocs/claims/telemetry.mddocs/claims/tool-location-independent.mdThe tool runs read-only from any location, and two locations of one version agree about one repositorydocs/claims/tool-location-independent.mddocs/claims/typed-outcome.mdAn outcome is a value from a closed vocabulary, not free textdocs/claims/typed-outcome.mddocs/claims/use-case-coverage.mdEvery public command is named and run by an active use case, a guaranteed claim or an MCP tool without one is a named gap, and the policy says which gaps fail doctor, check and finishdocs/claims/use-case-coverage.mddocs/claims/use-case-evidence.mdA use case's scenario executes against the real tool in a disposable repository, every step's exit code and output are asserted, and the normalised evidence is what the site showsdocs/claims/use-case-evidence.mddocs/claims/use-case-impact.mdFrom the files a change touched, the tool names the commands, rules, use cases, scenarios and behavioural cases affected, and scaffolds a draft for a capability no use case coversdocs/claims/use-case-impact.mddocs/claims/vendored-rule-package.mdThe rule baseline is vendored into the repository with a manifest naming every file and its hash, and a hand edit is detected and refuseddocs/claims/vendored-rule-package.mddocs/claims/web-namespaces-reserved.md/docs serves this repository's documentation and /swagger serves the Swagger UI, and neither may take the other's mountdocs/claims/web-namespaces-reserved.mddocs/claims/web-surface-declared-once.mdEvery web surface is declared once at its producer and resolved into one topology, from which the router, the landing page and the machine-readable index are each projecteddocs/claims/web-surface-declared-once.mddocs/claims/why-catalogue-discovered.mdAn operational moment is discovered, never registereddocs/claims/why-catalogue-discovered.mddocs/claims/why-diagnosis-explainable.mdA diagnosis is counting, and it says what it counteddocs/claims/why-diagnosis-explainable.mddocs/claims/why-references-resolve.mdEvery reference a moment makes resolvesdocs/claims/why-references-resolve.mddocs/claims/wiring-reconciliation.mdEvery enforcement the policy declares is reconciled against what actually runsdocs/claims/wiring-reconciliation.mddocs/claims/worktree-migration-lossless.mdA misplaced worktree migrates with its work intact, and proves itdocs/claims/worktree-migration-lossless.mddocs/claims/worktree-ownership.mdA task record names its checkout, and another checkout is never held to its scopedocs/claims/worktree-ownership.mddocs/claims/worktree-topology-derived.mdA branch's worktree path is derived, never registereddocs/claims/worktree-topology-derived.md
feature 20
benchmarksEvery claim about speed is a recorded measurement.ai/repo/features/benchmarks.mdciCI planned from one model, the site deployed from its verified run.ai/repo/features/ci.mdcockpitThe Cockpit: the registry rendered for a person.ai/repo/features/cockpit.mdcontextEvery directory of the layer carries its contract, and a worker reads what applies.ai/repo/features/context.mdcontinuitySessions, prompts and handovers that outlive the conversation.ai/repo/features/continuity.mdcoordinationSeveral agents on one repository, without stepping on each other.ai/repo/features/coordination.mddeclare-onceDeclare once, derive every interface.ai/repo/features/declare-once.mddeploymentsA deployment is one canonical object, and every provider artifact is generated from it.ai/repo/features/deployments.mddoctrineRules a machine decides, wired, tested and CI-blocking.ai/repo/features/doctrine.mdfinish-contractDone is a contract, evaluated line by line and refused when unmet.ai/repo/features/finish-contract.mdinstallOne command to install, one to initialise, nothing else to trust.ai/repo/features/install.mdinterfacesOne registry over the command line, HTTP, OpenAPI, Swagger UI and MCP.ai/repo/features/interfaces.mdknowledgeDecisions and knowledge that compound instead of evaporating.ai/repo/features/knowledge.mdplanningMilestones and issues as data; status derived, never stored.ai/repo/features/planning.mdpolicyOne policy, projected into every tool's instruction file.ai/repo/features/policy.mdprovenanceEvery record names the commit, the branch and the episode that made it.ai/repo/features/provenance.mdskillsSkills are procedures as data, discovered and checked, never registered.ai/repo/features/skills.mduse-casesEvery use case is executed against the tool, not described.ai/repo/features/use-cases.mdwhyThe failure modes it answers are objects, not marketing pages.ai/repo/features/why.mdworktreesOne branch, one worktree, at a path derived from git.ai/repo/features/worktrees.md
implementation 45
bin/majordomusbin/majordomusbin/majordomus-clibin/majordomus-clibin/majordomus-envbin/majordomus-envbin/majordomus-mcpbin/majordomus-mcplib/adr.shlib/adr.shlib/bench.shlib/bench.shlib/capture.shlib/capture.shlib/check.shlib/check.shlib/checkpoint.shlib/checkpoint.shlib/commands.shlib/commands.shlib/common.shlib/common.shlib/context.shlib/context.shlib/context_docs.shlib/context_docs.shlib/decision.shlib/decision.shlib/deployment.shlib/deployment.shlib/derive.shlib/derive.shlib/doctor.shlib/doctor.shlib/doctrine.shlib/doctrine.shlib/evidence.shlib/evidence.shlib/finish.shlib/finish.shlib/handover.shlib/handover.shlib/history.shlib/history.shlib/init.shlib/init.shlib/json_scan.awklib/json_scan.awklib/json_unesc.awklib/json_unesc.awklib/knowledge.awklib/knowledge.awklib/knowledge.shlib/knowledge.shlib/mermaid.awklib/mermaid.awklib/migrate.shlib/migrate.shlib/plan.shlib/plan.shlib/plan_json.awklib/plan_json.awklib/project.awklib/project.awklib/project.shlib/project.shlib/prompt.shlib/prompt.shlib/question.shlib/question.shlib/rules.shlib/rules.shlib/rust_bin.shlib/rust_bin.shlib/search.shlib/search.shlib/session.shlib/session.shlib/session_context.shlib/session_context.shlib/skills.shlib/skills.shlib/start.shlib/start.shlib/update.shlib/update.shlib/usecase.shlib/usecase.shlib/watch.shlib/watch.sh
issue 202
I0001Audit what actually plans work in this repository.ai/repo/project/issues/I0001.yamlI0002Define the canonical milestone and issue schema.ai/repo/project/issues/I0002.yamlI0003Implement the model loader and the status derivation engine.ai/repo/project/issues/I0003.yamlI0004Implement DAG validation and execution waves.ai/repo/project/issues/I0004.yamlI0005Implement the plan command surface.ai/repo/project/issues/I0005.yamlI0006Generate the Mermaid DAG from the graph.ai/repo/project/issues/I0006.yamlI0007Enforce the canonical model as doctrine.ai/repo/project/issues/I0007.yamlI0008Project the model to GitHub milestones and issues.ai/repo/project/issues/I0008.yamlI0009Project the model into the website.ai/repo/project/issues/I0009.yamlI0010Behavioural tests for schema, status, graph and command.ai/repo/project/issues/I0010.yamlI0011Cross-surface consistency and mutation tests.ai/repo/project/issues/I0011.yamlI0012Make CI refuse an invalid model or a stale projection.ai/repo/project/issues/I0012.yamlI0013Document the semantics and the dogfooding rule.ai/repo/project/issues/I0013.yamlI0014Make the worker instructions require the model.ai/repo/project/issues/I0014.yamlI0015Open the first real milestone and execute one issue through it.ai/repo/project/issues/I0015.yamlI0101Reproduce the escaped blocker as an executable case.ai/repo/project/issues/I0101.yamlI0102Decide whether a question transfers or the gate widens.ai/repo/project/issues/I0102.yamlI0103Implement the decision and prove it holds.ai/repo/project/issues/I0103.yamlI0104Move the claim from planned to guaranteed.ai/repo/project/issues/I0104.yamlI0201Declare which profile axis may become which runtime limit.ai/repo/project/issues/I0201.yamlI0202Resolve a task's effective limits and print them as data.ai/repo/project/issues/I0202.yamlI0203Make enforcement opt-in, and prove a repository that declines is unaffected.ai/repo/project/issues/I0203.yamlI0204Apply one derived limit for real and prove it changes what happens.ai/repo/project/issues/I0204.yamlI0205Declare the clamp as a doctrine so the mapping and the adapter cannot drift.ai/repo/project/issues/I0205.yamlI0206Publish the runtime-adapters claim with the test that proves it and the limits it does not cover.ai/repo/project/issues/I0206.yamlI0301Define the execution record, including what an absence looks like.ai/repo/project/issues/I0301.yamlI0302Record telemetry a provider reports, and refuse anything it did not.ai/repo/project/issues/I0302.yamlI0303Prove a silent provider produces an explicit absence, never a guess.ai/repo/project/issues/I0303.yamlI0304Read the measurements back through the history surface, under a bound.ai/repo/project/issues/I0304.yamlI0305Publish the telemetry claim and record what remains unmeasured.ai/repo/project/issues/I0305.yamlI0401Define an accepted outcome, and join it to its measurements without storing the join.ai/repo/project/issues/I0401.yamlI0402Report cost only where measurement and acceptance both exist.ai/repo/project/issues/I0402.yamlI0403Make a thin denominator say so rather than average it away.ai/repo/project/issues/I0403.yamlI0404Publish the cost-per-outcome claim with its unit defined beside it.ai/repo/project/issues/I0404.yamlI0501Group comparable work from what the records already carry.ai/repo/project/issues/I0501.yamlI0502Recommend a profile from measured cost, naming the measurements.ai/repo/project/issues/I0502.yamlI0503Return no recommendation where the data is too thin, and say why.ai/repo/project/issues/I0503.yamlI0504Prove the recommendation is advisory and publish it as such.ai/repo/project/issues/I0504.yamlI0601Let a policy name a shared source it does not copy.ai/repo/project/issues/I0601.yamlI0602Make a local override explicit and prove it survives an update of the shared source.ai/repo/project/issues/I0602.yamlI0603Report drift from the shared policy in one command.ai/repo/project/issues/I0603.yamlI0604Prove the offline guarantee survives sharing.ai/repo/project/issues/I0604.yamlI0605Publish the shared-policy claim and what sharing still cannot do.ai/repo/project/issues/I0605.yamlI0701Reproduce the misattribution as an executable case.ai/repo/project/issues/I0701.yamlI0702Decide how a record is attributed, between named alternatives.ai/repo/project/issues/I0702.yamlI0703Implement the decision and prove it holds.ai/repo/project/issues/I0703.yamlI0704Publish what attribution guarantees, and what it still cannot.ai/repo/project/issues/I0704.yamlI0801Narrow the Clean Extraction Boundary and record what was adopted.ai/repo/project/issues/I0801.yamlI0802Specify the session record before writing one.ai/repo/project/issues/I0802.yamlI0803Open a session and report its status.ai/repo/project/issues/I0803.yamlI0804Close a session into an envelope derived from the ledger.ai/repo/project/issues/I0804.yamlI0805Read sessions back with a divergence label.ai/repo/project/issues/I0805.yamlI0806Make the session rules doctrines, with retention and archiving.ai/repo/project/issues/I0806.yamlI0807Discover knowledge sources from git, not from the filesystem.ai/repo/project/issues/I0807.yamlI0808Extract nodes with identities that survive a rebuild.ai/repo/project/issues/I0808.yamlI0809Record only edges that a file states, each with where it was observed.ai/repo/project/issues/I0809.yamlI0810A content-hash manifest that makes a second sync cheap.ai/repo/project/issues/I0810.yamlI0811Read-only knowledge lookup with an ordering that can be explained.ai/repo/project/issues/I0811.yamlI0812Validate the graph, and let doctor and watch ask the same validator.ai/repo/project/issues/I0812.yamlI0813A closed session becomes a node that points at its episode.ai/repo/project/issues/I0813.yamlI0814Give the worker a bounded slice of knowledge, not the knowledge base.ai/repo/project/issues/I0814.yamlI0815Say what is now true in the claims, the documentation and the worker instructions.ai/repo/project/issues/I0815.yamlI0816Prove the loop on a real issue, without a transcript.ai/repo/project/issues/I0816.yamlI0817Phase timing and work counters behind MJ_TIMING.ai/repo/project/issues/I0817.yamlI0818The command registry is read in one pass.ai/repo/project/issues/I0818.yamlI0819The project model is loaded with one flatten per file and no per-file lookups.ai/repo/project/issues/I0819.yamlI0820Catalogue, DAG, context and command-surface validators read their inputs once.ai/repo/project/issues/I0820.yamlI0821Flattened YAML is cached under .ai/local/cache by content hash.ai/repo/project/issues/I0821.yamlI0822Every canonical file is flattened at most once per command.ai/repo/project/issues/I0822.yamlI0823majordomus bench: targets derived from the command registry.ai/repo/project/issues/I0823.yamlI0824Bench persists local runs and keeps a latest projection.ai/repo/project/issues/I0824.yamlI0825An explicit committed baseline.ai/repo/project/issues/I0825.yamlI0826bench --check refuses a regression by policy.ai/repo/project/issues/I0826.yamlI0827The benchmark policy block.ai/repo/project/issues/I0827.yamlI0828doctor under a declared budget, and the hook inherits it.ai/repo/project/issues/I0828.yamlI0829Performance doctrine as project rules.ai/repo/project/issues/I0829.yamlI0830docs/PERFORMANCE.md, README, CONTRIBUTING and CLI reference.ai/repo/project/issues/I0830.yamlI0831Performance claims at their proven status.ai/repo/project/issues/I0831.yamlI0832generate-site-data instrumented and its hot spots removed.ai/repo/project/issues/I0832.yamlI0833knowledge nodes and edges read each source once.ai/repo/project/issues/I0833.yamlI0834The test runner reports per-case time and the suite budget.ai/repo/project/issues/I0834.yamlI0835CI runs the structural performance checks.ai/repo/project/issues/I0835.yamlI0836A synthetic repository generator for scaling cases.ai/repo/project/issues/I0836.yamlI0837Timing report as JSON.ai/repo/project/issues/I0837.yamlI0838bench compare and the top regressions report.ai/repo/project/issues/I0838.yamlI0839watch inherits every doctor fix and its own budget.ai/repo/project/issues/I0839.yamlI0840context and its subcommands under a second.ai/repo/project/issues/I0840.yamlI0841Cache equivalence proved by property-shaped cases.ai/repo/project/issues/I0841.yamlI0842Before and after evidence for every optimisation.ai/repo/project/issues/I0842.yamlI0843The performance workflow is discoverable and complete.ai/repo/project/issues/I0843.yamlI0901The deployment description is a kind of the layer, not a provider file.ai/repo/project/issues/I0901.yamlI0902The deployment object becomes typed Rust that refuses nonsense.ai/repo/project/issues/I0902.yamlI0903Deployment reads are declared once and projected everywhere.ai/repo/project/issues/I0903.yamlI0904The listen address is one fact with two projections.ai/repo/project/issues/I0904.yamlI0905Liveness and readiness are registered capabilities, not router hacks.ai/repo/project/issues/I0905.yamlI0906Termination is graceful and proved against the real container.ai/repo/project/issues/I0906.yamlI0907The running process says what it is, from an allowlist.ai/repo/project/issues/I0907.yamlI0908A hosted process has no repository, and says so instead of failing.ai/repo/project/issues/I0908.yamlI0909The production image is a generated projection of the build specification.ai/repo/project/issues/I0909.yamlI0910The release profile is chosen by measurement, not by folklore.ai/repo/project/issues/I0910.yamlI0911A source change does not rebuild the world, and the context stays small.ai/repo/project/issues/I0911.yamlI0912The image serves the site the canonical pipeline produced.ai/repo/project/issues/I0912.yamlI0913The provider configuration is generated, and the cheap profile is declared.ai/repo/project/issues/I0913.yamlI0914One deployment core, one command, and a dry run that mutates nothing.ai/repo/project/issues/I0914.yamlI0915Deployment joins the diagnostics that already exist.ai/repo/project/issues/I0915.yamlI0916The smoke suite is derived from the route registry, never written twice.ai/repo/project/issues/I0916.yamlI0917A bad deployment can be undone deterministically.ai/repo/project/issues/I0917.yamlI0918The bootstrap credential is used once and belongs to nothing.ai/repo/project/issues/I0918.yamlI0919Nothing secret and nothing local leaves in the image.ai/repo/project/issues/I0919.yamlI0920The image's dependencies are known and its advisories are policy.ai/repo/project/issues/I0920.yamlI0921Size is measured first and budgeted second.ai/repo/project/issues/I0921.yamlI0922The memory hypothesis is tested, not asserted.ai/repo/project/issues/I0922.yamlI0923Cold start and endpoint cost are benchmark targets like everything else.ai/repo/project/issues/I0923.yamlI0924The decision is recorded where architecture decisions are recorded.ai/repo/project/issues/I0924.yamlI0925Every deployment rule is a check that runs.ai/repo/project/issues/I0925.yamlI0926The deployment documentation is generated and reachable.ai/repo/project/issues/I0926.yamlI0927The cockpit shows the deployment from the same data.ai/repo/project/issues/I0927.yamlI0928A pull request cannot merge a deployment that would not work.ai/repo/project/issues/I0928.yamlI0929Production deploys from CI with a token scoped to one application.ai/repo/project/issues/I0929.yamlI0930The real image runs under the real limits before anything is deployed.ai/repo/project/issues/I0930.yamlI0931The application exists, one machine runs it, and the URL answers.ai/repo/project/issues/I0931.yamlI0932The milestone is accepted on its evidence.ai/repo/project/issues/I0932.yamlI1001One typed graph composes the registries that already own their facts.ai/repo/project/issues/I1001.yamlI1002Relations are typed, inferred from stable identities, and never dangle.ai/repo/project/issues/I1002.yamlI1003Skills, rules, decisions, documents, use cases and benchmarks enter the graph as themselves.ai/repo/project/issues/I1003.yamlI1004Availability and visibility are metadata, not conditions in a template.ai/repo/project/issues/I1004.yamlI1005The graph is a generated artifact with a schema and no unsafe field.ai/repo/project/issues/I1005.yamlI1006The runtime reads the graph through the registry, like every other read.ai/repo/project/issues/I1006.yamlI1007The site renders the same graph, generated once.ai/repo/project/issues/I1007.yamlI1008The two projections are proved to be the same model.ai/repo/project/issues/I1008.yamlI1009Every menu in this repository comes from one derivation.ai/repo/project/issues/I1009.yamlI1010The overview is what exists, counted rather than claimed.ai/repo/project/issues/I1010.yamlI1011The coverage matrix reports evidence, and never a green cell without one.ai/repo/project/issues/I1011.yamlI1012One detail view, assembled from what a node actually has.ai/repo/project/issues/I1012.yamlI1013Search over the graph, generated, with nothing to run.ai/repo/project/issues/I1013.yamlI1014The relation view reads the graph and holds no data of its own.ai/repo/project/issues/I1014.yamlI1015A surface with no server behind it is not offered as if it had one.ai/repo/project/issues/I1015.yamlI1016The Cockpit works on a phone and before JavaScript runs.ai/repo/project/issues/I1016.yamlI1017Live state is an overlay that degrades to nothing.ai/repo/project/issues/I1017.yamlI1018The surface rules exist as checks, proved by making them fail.ai/repo/project/issues/I1018.yamlI1019One skill runs the whole loop, and is itself in the graph.ai/repo/project/issues/I1019.yamlI1020The graph's health is answered by the doctor that already answers everything else.ai/repo/project/issues/I1020.yamlI1021A browser proves the interface, at the widths people use.ai/repo/project/issues/I1021.yamlI1022Drift in any derived surface fails the build.ai/repo/project/issues/I1022.yamlI1023Nothing private reaches a published page.ai/repo/project/issues/I1023.yamlI1024The interface has a weight, and it is measured.ai/repo/project/issues/I1024.yamlI1025The federated model and its two projections are an architecture decision.ai/repo/project/issues/I1025.yamlI1026The architecture explains itself, from inside itself.ai/repo/project/issues/I1026.yamlI1027A synthetic capability proves the architecture instead of describing it.ai/repo/project/issues/I1027.yamlI1028The inventories this replaces are removed, not left running beside it.ai/repo/project/issues/I1028.yamlI1029The gate refuses what would silently break the interface.ai/repo/project/issues/I1029.yamlI1030The milestone is accepted on its evidence.ai/repo/project/issues/I1030.yamlI1031A served surface says which checkout it is serving.ai/repo/project/issues/I1031.yamlI1101What this tool leaves behind, established by inspection rather than by memory.ai/repo/project/issues/I1101.yamlI1102The two namespaces are a typed contract, not a habit.ai/repo/project/issues/I1102.yamlI1103Whether a file is authored or derived is a field, not a naming convention.ai/repo/project/issues/I1103.yamlI1104Both namespaces carry their contracts, all the way down.ai/repo/project/issues/I1104.yamlI1105The repository is discovered once, into one model.ai/repo/project/issues/I1105.yamlI1106The registries are views of the model, not separate discoveries.ai/repo/project/issues/I1106.yamlI1107Discovery is deterministic, cached, and its cost is known.ai/repo/project/issues/I1107.yamlI1108The desired integration is a value, and the plan is a diff.ai/repo/project/issues/I1108.yamlI1109Everything placed outside the two namespaces is recorded, with what it was.ai/repo/project/issues/I1109.yamlI1110The second run changes nothing, and a test says so.ai/repo/project/issues/I1110.yamlI1111Uninstall gives back exactly what was taken.ai/repo/project/issues/I1111.yamlI1112What touches the root is two small blocks, and they never change again.ai/repo/project/issues/I1112.yamlI1113Entering a directory is local, bounded and silent about the network.ai/repo/project/issues/I1113.yamlI1114A provider is an adapter over the model, and adding one is an implementation.ai/repo/project/issues/I1114.yamlI1115Completion comes from the command model, not from a second list.ai/repo/project/issues/I1115.yamlI1116This repository's own footprint moves, through the reconciler.ai/repo/project/issues/I1116.yamlI1117The hand-maintained lists are removed, not left running beside the derivation.ai/repo/project/issues/I1117.yamlI1118Every invariant of this milestone is a rule with a check that runs.ai/repo/project/issues/I1118.yamlI1119The budgets are measured, and a regression fails rather than being noticed.ai/repo/project/issues/I1119.yamlI1120A refusal says what to do about it.ai/repo/project/issues/I1120.yamlI1121Every surface shows the integration from the one model.ai/repo/project/issues/I1121.yamlI1122A foreign repository, adopted, upgraded and given back.ai/repo/project/issues/I1122.yamlI1123The milestone is accepted on its evidence.ai/repo/project/issues/I1123.yamlI1201An identity provider is a declarative object, and Google and Facebook are two of them.ai/repo/project/issues/I1201.yamlI1202One typed provider model reads the objects, and no code names a provider.ai/repo/project/issues/I1202.yamlI1203One flow serves every provider, and it refuses everything it did not start.ai/repo/project/issues/I1203.yamlI1204The session is signed, short, and revocable from the server.ai/repo/project/issues/I1204.yamlI1205Identity is resolved once, in the router, and every surface reads it from there.ai/repo/project/issues/I1205.yamlI1206What an anonymous reader may do is derived from the effect classification, not from a list.ai/repo/project/issues/I1206.yamlI1207No credential reaches any output, and hostile provider metadata renders safely.ai/repo/project/issues/I1207.yamlI1208Adding a provider is one file, removing one is one deletion, and both are executed rather than described.ai/repo/project/issues/I1208.yamlI1301A workspace is a declared object of the layer; only its content is local.ai/repo/project/issues/I1301.yamlI1302Identity, provenance and support level are typed fields, not prose.ai/repo/project/issues/I1302.yamlI1303The store is bounded, measured and invisible to every published projection.ai/repo/project/issues/I1303.yamlI1304The browser transport is the one this repository already drives.ai/repo/project/issues/I1304.yamlI1305An observed contract has a fingerprint, a compatibility state and a fixture.ai/repo/project/issues/I1305.yamlI1306A sync resumes, repeats itself without harm, and says how fresh it is.ai/repo/project/issues/I1306.yamlI1307The ChatGPT shape is mapped from evidence and never becomes the canonical model.ai/repo/project/issues/I1307.yamlI1308The executable's share is one capability, shaped like continuity.ai/repo/project/issues/I1308.yamlI1309The boundaries this milestone asserts are gates, not sentences.ai/repo/project/issues/I1309.yamlI1310The subsystem is documented where a person looks, and the plan is closed against the repository.ai/repo/project/issues/I1310.yamlI1401The identity of a projected record is what the record carries, not what its title says.ai/repo/project/issues/I1401.yamlI1402A finding says which of six states it found, and the state that could hide a person's edit is no longer one of them.ai/repo/project/issues/I1402.yamlI1403Backfill the projection once, deliberately, and record what it created.ai/repo/project/issues/I1403.yamlI1404The drift check is a gate, so a projection that stops being applied cannot stay silent.ai/repo/project/issues/I1404.yamlI1405A pull request names the issue it realises, and the edge is derived rather than remembered.ai/repo/project/issues/I1405.yamlI1406The plan's derivations are capabilities, so every surface reads the readiness the terminal reads.ai/repo/project/issues/I1406.yamlI1407One issue travels the whole path and back, as an executable case.ai/repo/project/issues/I1407.yamlI1408The documents stop claiming a projection nobody runs.ai/repo/project/issues/I1408.yaml
knowledge 1
start-hereThe documents that explain this repository are read in a fixed order.ai/repo/knowledge/curated/start-here.md
milestone 17
M000Milestone and DAG driven development.ai/repo/project/milestones/M000.yamlM001A blocking question survives a handover.ai/repo/project/milestones/M001.yamlM002A durable record names the worker that wrote it.ai/repo/project/milestones/M002.yamlM003A session is a durable envelope, and knowledge is compiled from what is already canonical.ai/repo/project/milestones/M003.yamlM004Performance is executable evidence, and the hot path does no canonical work twice.ai/repo/project/milestones/M004.yamlcapability-graphOne capability graph, two projections, and no second inventory of what this repository can do.ai/repo/project/milestones/capability-graph.yamlcost-per-accepted-outcomeCost per accepted outcome, only on measured data.ai/repo/project/milestones/cost-per-accepted-outcome.yamlexecution-telemetryExecution telemetry, only from providers that expose it honestly.ai/repo/project/milestones/execution-telemetry.yamlexternal-workspacesAn external workspace is read the way this repository reads anything else, and its content never becomes public by accident.ai/repo/project/milestones/external-workspaces.yamlfly-deploymentA deployment is a projection of the repository model, and a reachable URL is its evidence.ai/repo/project/milestones/fly-deployment.yamlfoundationA supervisory control layer that is real rather than described.ai/repo/project/milestones/foundation.yamlrouting-recommendationsRouting recommendations derived from measured cost.ai/repo/project/milestones/routing-recommendations.yamlruntime-adaptersProfiles become runtime constraints rather than advice.ai/repo/project/milestones/runtime-adapters.yamlshared-policyShared policy across repositories and workers.ai/repo/project/milestones/shared-policy.yamltwo-folder-integrationA repository that adopts Majordomus gains two directories and two lines, and can give them back.ai/repo/project/milestones/two-folder-integration.yamlweb-sign-inThe deployed surfaces know who is asking, and the identity providers are data.ai/repo/project/milestones/web-sign-in.yamlwork-graph-githubThe projection to GitHub is gated, identified and traversable, and a merged pull request leads back to the outcome it served.ai/repo/project/milestones/work-graph-github.yaml
moment 38
abandoned-worktreeA worktree nobody can decide to delete.ai/repo/why/moments/abandoned-worktree.mdapi-changed-contract-did-notThe interface changed and its contract document did not.ai/repo/why/moments/api-changed-contract-did-not.mdcode-without-an-issueA change that no plan ever asked for.ai/repo/why/moments/code-without-an-issue.mdcontext-budget-blownThe instruction file that grew into a rulebook.ai/repo/why/moments/context-budget-blown.mdcontribution-that-could-not-have-knownA fluent contribution that could not have known the rules.ai/repo/why/moments/contribution-that-could-not-have-known.mddecision-only-in-a-transcriptThe decision exists, in a conversation nobody can find.ai/repo/why/moments/decision-only-in-a-transcript.mddiscovery-never-becomes-knowledgeA hard-won discovery that never became knowledge.ai/repo/why/moments/discovery-never-becomes-knowledge.mddocumented-command-no-longer-worksThe documented command that no longer works.ai/repo/why/moments/documented-command-no-longer-works.mddone-because-the-model-said-soAccepting "done" because the model said so.ai/repo/why/moments/done-because-the-model-said-so.mdenforcement-nothing-invokesA rule enforced by a hook that never runs.ai/repo/why/moments/enforcement-nothing-invokes.mdfailure-disappears-between-sessionsA failure that was seen once and never again.ai/repo/why/moments/failure-disappears-between-sessions.mdfeature-without-a-testA capability the documentation promises and nothing proves.ai/repo/why/moments/feature-without-a-test.mdfirst-hour-in-an-unfamiliar-repositoryThe first hour in a repository nobody can explain quickly.ai/repo/why/moments/first-hour-in-an-unfamiliar-repository.mdgenerated-artifacts-staleGreen tests over stale generated files.ai/repo/why/moments/generated-artifacts-stale.mdimplementation-contradicts-the-decisionCode that quietly contradicts a written decision.ai/repo/why/moments/implementation-contradicts-the-decision.mdissue-says-done-tests-disagreeThe issue says done and the repository disagrees.ai/repo/why/moments/issue-says-done-tests-disagree.mdmilestone-status-unreconstructableNobody can reconstruct where the milestone actually is.ai/repo/why/moments/milestone-status-unreconstructable.mdno-record-why-this-modelNobody can say why that worker was chosen.ai/repo/why/moments/no-record-why-this-model.mdone-agent-undoes-anotherOne worker undoing another worker's change.ai/repo/why/moments/one-agent-undoes-another.mdpolicy-changed-projection-staleThe policy changed and its four copies did not.ai/repo/why/moments/policy-changed-projection-stale.mdre-arguing-a-settled-decisionRe-arguing a decision that was settled last week.ai/repo/why/moments/re-arguing-a-settled-decision.mdre-explaining-contextRe-explaining the same context to a brand-new session.ai/repo/why/moments/re-explaining-context.mdresult-cannot-be-reproducedA result nobody can reproduce, including its author.ai/repo/why/moments/result-cannot-be-reproduced.mdrule-in-a-readme-nobody-loadedThe rule for that directory, in a README no session ever loaded.ai/repo/why/moments/rule-in-a-readme-nobody-loaded.mdsame-dead-end-explored-twiceThe same dead end, explored twice.ai/repo/why/moments/same-dead-end-explored-twice.mdsecond-session-same-checkoutTwo sessions in one checkout, standing on each other.ai/repo/why/moments/second-session-same-checkout.mdsite-claims-nothing-provesA public page promising something nothing tests.ai/repo/why/moments/site-claims-nothing-proves.mdspend-not-tied-to-outcomesSpend that cannot be tied to anything accepted.ai/repo/why/moments/spend-not-tied-to-outcomes.mdstrongest-model-renames-a-variableThe strongest model, at maximum effort, renaming a variable.ai/repo/why/moments/strongest-model-renames-a-variable.mdtask-in-progress-for-three-weeksA task "in progress" that nobody has touched for three weeks.ai/repo/why/moments/task-in-progress-for-three-weeks.mdthree-copies-of-one-explanationThree copies of one explanation, and no way to tell which is current.ai/repo/why/moments/three-copies-of-one-explanation.mdthree-roadmaps-none-of-them-trueThree roadmaps, and none of them true.ai/repo/why/moments/three-roadmaps-none-of-them-true.mdtwo-agents-one-bugTwo agents fixing the same bug in two branches.ai/repo/why/moments/two-agents-one-bug.mdtwo-rulebooks-one-repositoryTwo different rulebooks for one repository.ai/repo/why/moments/two-rulebooks-one-repository.mdweak-model-on-architectureA cheap worker deciding something expensive.ai/repo/why/moments/weak-model-on-architecture.mdwhat-the-workers-did-last-nightAsking what the workers did last night, and getting a transcript.ai/repo/why/moments/what-the-workers-did-last-night.mdwho-did-this-and-under-what-policyA change whose provenance cannot be reconstructed.ai/repo/why/moments/who-did-this-and-under-what-policy.mdworker-output-never-integratedFinished work that never reached the trunk.ai/repo/why/moments/worker-output-never-integrated.md
policy 1
.ai/repo/policy.yaml.ai/repo/policy.yaml
profile 4
debuggingdebugging.ai/repo/profiles/debugging.yamldeep-workdeep-work.ai/repo/profiles/deep-work.yamlimplementationimplementation.ai/repo/profiles/implementation.yamlroutineroutine.ai/repo/profiles/routine.yaml
prompt 4
continuecontinue.ai/repo/prompts/continue.mddebugdebug.ai/repo/prompts/debug.mdhandoverhandover.ai/repo/prompts/handover.mdreviewreview.ai/repo/prompts/review.md
release-record 1
v0.3.1v0.3.1.ai/repo/releases/v0.3.1.yaml
rule 109
majordomus.adr-integrity@1Architecture decision integrity.ai/repo/rules/vendor/majordomus/rules/adr-integrity.v1.mdmajordomus.ai-layout-integrity@1AI layer integrity.ai/repo/rules/vendor/majordomus/rules/ai-layout-integrity.v1.mdmajordomus.blocker-resolution@1Blocker resolution.ai/repo/rules/vendor/majordomus/rules/blocker-resolution.v1.mdmajordomus.bootstrap-integrity@1Bootstrap integrity.ai/repo/rules/vendor/majordomus/rules/bootstrap-integrity.v1.mdmajordomus.catalogue-integrity@1Catalogue integrity.ai/repo/rules/vendor/majordomus/rules/catalogue-integrity.v1.mdmajordomus.checkpoint-freshness@1Checkpoint freshness.ai/repo/rules/vendor/majordomus/rules/checkpoint-freshness.v1.mdmajordomus.command-coverage@1Every public command is exercised and refuted.ai/repo/rules/vendor/majordomus/rules/command-coverage.v1.mdmajordomus.command-surface@1The command surface is declared and reconciled.ai/repo/rules/vendor/majordomus/rules/command-surface.v1.mdmajordomus.context-budget@1Context budget.ai/repo/rules/vendor/majordomus/rules/context-budget.v1.mdmajordomus.context-integrity@1Context integrity.ai/repo/rules/vendor/majordomus/rules/context-integrity.v1.mdmajordomus.dag-integrity@1Dependency graph integrity.ai/repo/rules/vendor/majordomus/rules/dag-integrity.v1.mdmajordomus.decision-records@1Decision records.ai/repo/rules/vendor/majordomus/rules/decision-records.v1.mdmajordomus.decision-threshold@1The decision threshold.ai/repo/rules/vendor/majordomus/rules/decision-threshold.v1.mdmajordomus.define-done-first@1Define done before executing.ai/repo/rules/vendor/majordomus/rules/principle-07-define-done-first.v1.mdmajordomus.deployment-contract@1A deployment is described once, and every provider artifact is generated from it.ai/repo/rules/vendor/majordomus/rules/deployment-contract.v1.mdmajordomus.depth-is-not-verbosity@1Execution depth is not output verbosity.ai/repo/rules/vendor/majordomus/rules/principle-06-depth-is-not-verbosity.v1.mdmajordomus.doctrine-wiring-integrity@1Doctrine wiring integrity.ai/repo/rules/vendor/majordomus/rules/doctrine-wiring-integrity.v1.mdmajordomus.enforcement-wiring@1Enforcement wiring.ai/repo/rules/vendor/majordomus/rules/enforcement-wiring.v1.mdmajordomus.externalise-decisions@1Externalise decisions and durable state.ai/repo/rules/vendor/majordomus/rules/principle-03-externalise-decisions.v1.mdmajordomus.handover-integrity@1Handover integrity.ai/repo/rules/vendor/majordomus/rules/handover-integrity.v1.mdmajordomus.handovers-carry-state@1Handovers transfer state, not transcripts.ai/repo/rules/vendor/majordomus/rules/principle-10-handovers-carry-state.v1.mdmajordomus.isolated-parallelism@1Parallel work requires isolation.ai/repo/rules/vendor/majordomus/rules/principle-09-isolated-parallelism.v1.mdmajordomus.justified-escalation@1Escalate capability and effort only when justified.ai/repo/rules/vendor/majordomus/rules/principle-05-justified-escalation.v1.mdmajordomus.layout-integrity@1Layout integrity.ai/repo/rules/vendor/majordomus/rules/layout-integrity.v1.mdmajordomus.ledger-integrity@1Ledger integrity.ai/repo/rules/vendor/majordomus/rules/ledger-integrity.v1.mdmajordomus.minimum-sufficient-context@1Load minimum sufficient context.ai/repo/rules/vendor/majordomus/rules/principle-02-minimum-sufficient-context.v1.mdmajordomus.note-integrity@1Note integrity.ai/repo/rules/vendor/majordomus/rules/note-integrity.v1.mdmajordomus.obligation-closure@1Obligation closure.ai/repo/rules/vendor/majordomus/rules/obligation-closure.v1.mdmajordomus.one-worker-one-scope@1One worker, one clear scope.ai/repo/rules/vendor/majordomus/rules/principle-04-one-worker-one-scope.v1.mdmajordomus.policy-completeness@1Policy completeness.ai/repo/rules/vendor/majordomus/rules/policy-completeness.v1.mdmajordomus.policy-integrity@1Policy integrity.ai/repo/rules/vendor/majordomus/rules/policy-integrity.v1.mdmajordomus.profile-requirements@1Profile requirements.ai/repo/rules/vendor/majordomus/rules/profile-requirements.v1.mdmajordomus.project-integrity@1Project model integrity.ai/repo/rules/vendor/majordomus/rules/project-integrity.v1.mdmajordomus.projection-integrity@1Projection integrity.ai/repo/rules/vendor/majordomus/rules/projection-integrity.v1.mdmajordomus.prompt-capture@1Prompt capture is proven, or reported unavailable.ai/repo/rules/vendor/majordomus/rules/prompt-capture.v1.mdmajordomus.prompt-integrity@1Prompt integrity.ai/repo/rules/vendor/majordomus/rules/prompt-integrity.v1.mdmajordomus.questions-store-integrity@1Questions store integrity.ai/repo/rules/vendor/majordomus/rules/questions-store-integrity.v1.mdmajordomus.retention-caps@1Retention caps.ai/repo/rules/vendor/majordomus/rules/retention-caps.v1.mdmajordomus.roadmap-integrity@1The roadmap is a projection, never a document.ai/repo/rules/vendor/majordomus/rules/roadmap-integrity.v1.mdmajordomus.rule-package-integrity@1Rule package integrity.ai/repo/rules/vendor/majordomus/rules/rule-package-integrity.v1.mdmajordomus.schema-integrity@1Every object has a schema, and the rules resolve in one stated order.ai/repo/rules/vendor/majordomus/rules/schema-integrity.v1.mdmajordomus.scope-integrity@1Scope integrity.ai/repo/rules/vendor/majordomus/rules/scope-integrity.v1.mdmajordomus.session-lifecycle@1The episode boundary is drawn below the model, and its working context is local.ai/repo/rules/vendor/majordomus/rules/session-lifecycle.v1.mdmajordomus.session-records@1Session records are shared objects with a closed field set.ai/repo/rules/vendor/majordomus/rules/session-records.v1.mdmajordomus.sessions-are-workers@1Sessions are workers, not memory.ai/repo/rules/vendor/majordomus/rules/principle-01-sessions-are-workers.v1.mdmajordomus.skill-integrity@1Skill integrity.ai/repo/rules/vendor/majordomus/rules/skill-integrity.v1.mdmajordomus.state-consistency@1State consistency.ai/repo/rules/vendor/majordomus/rules/state-consistency.v1.mdmajordomus.task-continuity@1Task continuity.ai/repo/rules/vendor/majordomus/rules/task-continuity.v1.mdmajordomus.use-case-coverage@1Use-case coverage.ai/repo/rules/vendor/majordomus/rules/use-case-coverage.v1.mdmajordomus.verification-integrity@1Verification integrity.ai/repo/rules/vendor/majordomus/rules/verification-integrity.v1.mdmajordomus.verify-outcomes@1Verify outcomes, not activity.ai/repo/rules/vendor/majordomus/rules/principle-08-verify-outcomes.v1.mdproject.benchmarkable-commands@1Every public command is benchmarkable from the registry.ai/repo/rules/project/benchmarkable-commands.v1.mdproject.blocking-checks-cheap@1Blocking checks are deterministic and cheap.ai/repo/rules/project/blocking-checks-cheap.v1.mdproject.cache-is-invisible@1A cache never changes what a command observes.ai/repo/rules/project/cache-is-invisible.v1.mdproject.canonical-order@1A collection has one order, owned by one place, and it does not depend on who ran the command.ai/repo/rules/project/canonical-order.v1.mdproject.clean-room@1Clean room.ai/repo/rules/project/clean-room.v1.mdproject.commands-are-projections@1A command is declared once, and every surface that shows it is a projection.ai/repo/rules/project/commands-are-projections.v1.mdproject.context-locality@1Context locality.ai/repo/rules/project/context-locality.v1.mdproject.conventional-commits@1Conventional commits, committed and pushed incrementally.ai/repo/rules/project/conventional-commits.v1.mdproject.derived-files-regenerated@1Derived files are regenerated, never edited.ai/repo/rules/project/derived-files-regenerated.v1.mdproject.derived-once@1Derived state is computed once per state version.ai/repo/rules/project/derived-once.v1.mdproject.design-tokens-declared-once@1A design value is chosen once and every stylesheet is a projection of it.ai/repo/rules/project/design-tokens-declared-once.v1.mdproject.destructive-sweeps-fail-closed@1A sweep that deletes fails closed on what it could not read.ai/repo/rules/project/destructive-sweeps-fail-closed.v1.mdproject.diagnostics-decide-the-exit@1A return code is not the diagnostic channel.ai/repo/rules/project/a-return-code-is-not-the-diagnostic-channel.v1.mdproject.distribution-canonical@1Distribution has one canonical model.ai/repo/rules/project/distribution-canonical.v1.mdproject.empty-is-not-failure@1An empty result and a failed command must not look alike.ai/repo/rules/project/empty-is-not-failure.v1.mdproject.english-only@1English only.ai/repo/rules/project/english-only.v1.mdproject.envrc-is-an-adapter@1The shell entry point is an adapter, and repository facts come from one typed source.ai/repo/rules/project/envrc-is-an-adapter.v1.mdproject.execution-events-are-typed@1A long operation reports typed events, and a transport only renders them.ai/repo/rules/project/execution-events-are-typed.v1.mdproject.executions-carry-no-secret@1A sensitive value never enters an execution.ai/repo/rules/project/executions-carry-no-secret.v1.mdproject.finding-carries-reproduce@1Every finding carries a reproduce command.ai/repo/rules/project/finding-carries-reproduce.v1.mdproject.generated-artifacts-are-typed@1A generated artifact declares its document, its encoding, its contract and its source.ai/repo/rules/project/generated-artifacts-are-typed.v1.mdproject.github-projection-gated@1The GitHub projection is checked by a gate, not by somebody remembering to run it.ai/repo/rules/project/github-projection-gated.v1.mdproject.hot-path-reads-once@1A command reads each canonical file at most once.ai/repo/rules/project/hot-path-reads-once.v1.mdproject.interfaces-are-projections@1External interfaces are projections of one capability definition.ai/repo/rules/project/interfaces-are-projections.v1.mdproject.land-and-publish@1Work lands often and small, and what is published is master and only master.ai/repo/rules/project/land-and-publish.v1.mdproject.native-cli-documented@1A native command line command exists only with its documentation and its executable examples.ai/repo/rules/project/native-cli-documented.v1.mdproject.never-author-identity@1Never author identity fields.ai/repo/rules/project/never-author-identity.v1.mdproject.never-store-transcripts@1Never store or summarise transcripts.ai/repo/rules/project/never-store-transcripts.v1.mdproject.no-claim-without-test@1No claim without a test.ai/repo/rules/project/no-claim-without-test.v1.mdproject.no-counts-in-prose@1No counts in prose.ai/repo/rules/project/no-counts-in-prose.v1.mdproject.no-machine-paths@1Nothing this repository commits names a path of the machine it was written on.ai/repo/rules/project/no-machine-paths.v1.mdproject.no-network-no-eval@1No network, no telemetry, no eval, no silent overwrite, no recursive deletion.ai/repo/rules/project/no-network-no-eval.v1.mdproject.no-new-nouns@1No new nouns.ai/repo/rules/project/no-new-nouns.v1.mdproject.operation-transport-parity@1A command is the projection of a capability, or it says why it is not, and the reason is checked.ai/repo/rules/project/operation-transport-parity.v1.mdproject.optional-complexity@1Complexity is optional, not ambient.ai/repo/rules/project/optional-complexity.v1.mdproject.performance-evidence@1A performance claim carries its measurement.ai/repo/rules/project/performance-evidence.v1.mdproject.portable-shell@1Portable shell.ai/repo/rules/project/portable-shell.v1.mdproject.product-surface-derived@1What the product does is a catalogue object, and every public surface of it is derived.ai/repo/rules/project/product-surface-derived.v1.mdproject.providers-are-data@1What the tool knows about a provider is declared once and projected everywhere.ai/repo/rules/project/providers-are-data.v1.mdproject.release-is-a-projection@1The changelog is composed and the version has one writer.ai/repo/rules/project/release-is-a-projection.v1.mdproject.rule-is-a-doctrine@1A new enforced rule is a doctrine, not an inline check.ai/repo/rules/project/rule-is-a-doctrine.v1.mdproject.rust-benchmark-coverage@1No endpoint of the Rust executable without a benchmark, and no number without evidence.ai/repo/rules/project/rust-benchmark-coverage.v1.mdproject.rust-canonical-declaration@1One canonical declaration; modules compose capabilities; the root composes modules.ai/repo/rules/project/rust-canonical-declaration.v1.mdproject.rust-cli-evidence@1The Rust executable carries its evidence with it.ai/repo/rules/project/rust-cli-evidence.v1.mdproject.rust-command-tested-in-file@1A command asserts in the file that declares it that it is what it claims, and is composed rather than registered.ai/repo/rules/project/rust-command-tested-in-file.v1.mdproject.rust-hot-path@1A request never rebuilds canonical state, and a cache is never trusted without an equivalence test.ai/repo/rules/project/rust-hot-path.v1.mdproject.rust-public-api-quality@1Every exported Rust item explains itself, shows itself running, and is exercised by something.ai/repo/rules/project/rust-public-api-quality.v1.mdproject.scope-is-declared@1What a worker reads is declared once, and nothing outside it is read or served.ai/repo/rules/project/scope-is-declared.v1.mdproject.shared-server-resilience@1Nothing a client leaves behind locks another client out.ai/repo/rules/project/shared-server-resilience.v1.mdproject.tests-run-in-disposable-repos@1Tests run in disposable repositories.ai/repo/rules/project/tests-run-in-disposable-repos.v1.mdproject.ui-conformance@1Every page of every web surface is audited, and the audit names no page.ai/repo/rules/project/ui-conformance.v1.mdproject.unknown-keys-are-errors@1Unknown configuration keys are errors.ai/repo/rules/project/unknown-keys-are-errors.v1.mdproject.use-case-evidence@1A use case is proved by execution, and a capability is covered by a use case.ai/repo/rules/project/use-case-evidence.v1.mdproject.web-surface-declared-once@1A web surface is declared once and every web projection is derived from it.ai/repo/rules/project/web-surface-declared-once.v1.mdproject.web-surface-topology@1A web surface is discovered from its producer, never registered twice.ai/repo/rules/project/web-surface-topology.v1.mdproject.why-catalogue-is-canonical@1An operational failure mode is a catalogue object, never a page.ai/repo/rules/project/why-catalogue-is-canonical.v1.mdproject.work-is-claimed-before-it-is-built@1What already claims a path is checked before that path is built.ai/repo/rules/project/work-is-claimed-before-it-is-built.v1.mdproject.worktree-topology@1A branch's worktree is at <repo>-wt/<branch>, derived from git, never registered.ai/repo/rules/project/worktree-topology.v1.md
scope 1
.ai/repo/scope.yaml.ai/repo/scope.yaml
session 11
s-20260906035523-7b6cSession s-20260906035523-7b6c on feature/session-records.ai/repo/sessions/20260906T035524Z--s-20260906035523-7b6c--feature-session-records--4658856--95eae054a18c3e3e.mds-20260906053339-ec22Session s-20260906053339-ec22 on feature/session-lifecycle.ai/repo/sessions/20260906T054911Z--s-20260906053339-ec22--feature-session-lifecycle--9389dc8--52c8bef0528b4ac0.mds-20260906054911-cbb8Session s-20260906054911-cbb8 on feature/session-lifecycle.ai/repo/sessions/20260906T055116Z--s-20260906054911-cbb8--feature-session-lifecycle--9389dc8--a7177bd3b864df81.mds-20260906055206-8eceSession s-20260906055206-8ece on feature/session-lifecycle.ai/repo/sessions/20260906T055252Z--s-20260906055206-8ece--feature-session-lifecycle--9389dc8--5c0542c2eace7947.mds-20260906055253-ba53Session s-20260906055253-ba53 on feature/session-lifecycle.ai/repo/sessions/20260906T085153Z--s-20260906055253-ba53--feature-session-lifecycle--9770f3b--e0aa4600ed94e52f.mds-20260906085201-3c11Session s-20260906085201-3c11 on feature/session-lifecycle.ai/repo/sessions/20260906T085505Z--s-20260906085201-3c11--feature-session-lifecycle--9770f3b--b23dce1fa13c9c25.mds-20260906100402-1b4eSession s-20260906100402-1b4e on feature/ai-artifacts.ai/repo/sessions/20260906T104136Z--s-20260906100402-1b4e--feature-ai-artifacts--2b42014--217c31a51008928f.mds-20260906104842-c7cfSession s-20260906104842-c7cf on feature/ai-artifacts.ai/repo/sessions/20260906T110558Z--s-20260906104842-c7cf--feature-ai-artifacts--2b42014--159467df2ddcde14.mds-20260906214710-1a63Session s-20260906214710-1a63 on master.ai/repo/sessions/20260908T003655Z--s-20260906214710-1a63--master--d3a36fd--89c252efadb41a31.mds-20260908003954-b327Session s-20260908003954-b327 on master.ai/repo/sessions/20260908T193329Z--s-20260908003954-b327--master--ebec65f--19701e4316a32b7b.mds-20260908193341-cdf1Session s-20260908193341-cdf1 on master.ai/repo/sessions/20260909T150832Z--s-20260908193341-cdf1--master--867f3a9--38e50db8741a3b60.md
skill 3
deploy-siteDeploy the site by hand.ai/repo/skills/deploy-site/SKILL.mdimplementImplement a change.ai/repo/skills/implement/SKILL.mdrepo-reviewRepository review.ai/repo/skills/repo-review/SKILL.md
taxonomy 10
adoptionGetting started and adoption.ai/repo/use-cases/taxonomy.yamlcompletionCompletion and quality gates.ai/repo/use-cases/taxonomy.yamlcontinuitySessions and handover.ai/repo/use-cases/taxonomy.yamldriftDrift and reconciliation.ai/repo/use-cases/taxonomy.yamlextensionExtension.ai/repo/use-cases/taxonomy.yamlknowledgeRepository knowledge.ai/repo/use-cases/taxonomy.yamlmcpServing the layer to AI clients.ai/repo/use-cases/taxonomy.yamlperformancePerformance.ai/repo/use-cases/taxonomy.yamlpolicyPolicy and enforcement.ai/repo/use-cases/taxonomy.yamlworkersParallel workers.ai/repo/use-cases/taxonomy.yaml
test 135
test/cases/00_yaml_flatten.shtest/cases/00_yaml_flatten.shtest/cases/01_init.shtest/cases/01_init.shtest/cases/02_doctor_basic.shtest/cases/02_doctor_basic.shtest/cases/03_update.shtest/cases/03_update.shtest/cases/04_start_check.shtest/cases/04_start_check.shtest/cases/05_handover.shtest/cases/05_handover.shtest/cases/06_finish.shtest/cases/06_finish.shtest/cases/07_watch.shtest/cases/07_watch.shtest/cases/08_no_forbidden_constructs.shtest/cases/08_no_forbidden_constructs.shtest/cases/09_site_mobile_first.shtest/cases/09_site_mobile_first.shtest/cases/100_environment.shtest/cases/100_environment.shtest/cases/100_execution_plane.shtest/cases/100_execution_plane.shtest/cases/101_command_graph.shtest/cases/101_command_graph.shtest/cases/102_completion_shell.shtest/cases/102_completion_shell.shtest/cases/103_obligations.shtest/cases/103_obligations.shtest/cases/103_release_projection.shtest/cases/103_release_projection.shtest/cases/104_published_site.shtest/cases/104_published_site.shtest/cases/104_strict_derivation.shtest/cases/104_strict_derivation.shtest/cases/106_context_peers.shtest/cases/106_context_peers.shtest/cases/107_design_tokens.shtest/cases/107_design_tokens.shtest/cases/107_runtime_staleness_is_loud.shtest/cases/107_runtime_staleness_is_loud.shtest/cases/108_scope_after_trunk_merge.shtest/cases/108_scope_after_trunk_merge.shtest/cases/10_site_data.shtest/cases/10_site_data.shtest/cases/11_site_derivation.shtest/cases/11_site_derivation.shtest/cases/12_site_build.shtest/cases/12_site_build.shtest/cases/12b_site_data_transactional.shtest/cases/12b_site_data_transactional.shtest/cases/12c_graph_data.shtest/cases/12c_graph_data.shtest/cases/13_region_projection.shtest/cases/13_region_projection.shtest/cases/14_wiring_dispatcher.shtest/cases/14_wiring_dispatcher.shtest/cases/15_command_surface.shtest/cases/15_command_surface.shtest/cases/16_profiles.shtest/cases/16_profiles.shtest/cases/17_doctrine_enforcement.shtest/cases/17_doctrine_enforcement.shtest/cases/18_doctrine_wiring.shtest/cases/18_doctrine_wiring.shtest/cases/19_end_to_end.shtest/cases/19_end_to_end.shtest/cases/20_checkpoint.shtest/cases/20_checkpoint.shtest/cases/21_decision_question.shtest/cases/21_decision_question.shtest/cases/22_history.shtest/cases/22_history.shtest/cases/23_context.shtest/cases/23_context.shtest/cases/24_prompt_search.shtest/cases/24_prompt_search.shtest/cases/25_continuity_lifecycle.shtest/cases/25_continuity_lifecycle.shtest/cases/26_ci_wiring.shtest/cases/26_ci_wiring.shtest/cases/27_foreign_task.shtest/cases/27_foreign_task.shtest/cases/28_catalogue.shtest/cases/28_catalogue.shtest/cases/28_no_hardcoded_values.shtest/cases/28_no_hardcoded_values.shtest/cases/29_prompt_capture.shtest/cases/29_prompt_capture.shtest/cases/30_command_registry.shtest/cases/30_command_registry.shtest/cases/31_command_coverage.shtest/cases/31_command_coverage.shtest/cases/32_refusal_lifecycle.shtest/cases/32_refusal_lifecycle.shtest/cases/32_schema_integrity.shtest/cases/32_schema_integrity.shtest/cases/33_event_registry.shtest/cases/33_event_registry.shtest/cases/33_stale_executable.shtest/cases/33_stale_executable.shtest/cases/34_command_fixtures.shtest/cases/34_command_fixtures.shtest/cases/35_future_command.shtest/cases/35_future_command.shtest/cases/36_command_doctrines.shtest/cases/36_command_doctrines.shtest/cases/37_responsibility_surface.shtest/cases/37_responsibility_surface.shtest/cases/40_project_model.shtest/cases/40_project_model.shtest/cases/41_project_status.shtest/cases/41_project_status.shtest/cases/42_dag_waves.shtest/cases/42_dag_waves.shtest/cases/43_plan_command.shtest/cases/43_plan_command.shtest/cases/44_model_doctrine.shtest/cases/44_model_doctrine.shtest/cases/45_github_projection.shtest/cases/45_github_projection.shtest/cases/46_cross_surface.shtest/cases/46_cross_surface.shtest/cases/47_mutation.shtest/cases/47_mutation.shtest/cases/48_roadmap_graph.shtest/cases/48_roadmap_graph.shtest/cases/49_roadmap_doctrine.shtest/cases/49_roadmap_doctrine.shtest/cases/50_blocker_across_handover.shtest/cases/50_blocker_across_handover.shtest/cases/51_derived_artifacts_committed.shtest/cases/51_derived_artifacts_committed.shtest/cases/52_generated_artifact_typing.shtest/cases/52_generated_artifact_typing.shtest/cases/53_status_vocabulary.shtest/cases/53_status_vocabulary.shtest/cases/54_session_lifecycle_hooks.shtest/cases/54_session_lifecycle_hooks.shtest/cases/55_session_context.shtest/cases/55_session_context.shtest/cases/56_derived_current_gate.shtest/cases/56_derived_current_gate.shtest/cases/57_derived_merge_driver.shtest/cases/57_derived_merge_driver.shtest/cases/58_home_path_gate.shtest/cases/58_home_path_gate.shtest/cases/59_reference_integrity.shtest/cases/59_reference_integrity.shtest/cases/60_session_lifecycle.shtest/cases/60_session_lifecycle.shtest/cases/61_session_envelope.shtest/cases/61_session_envelope.shtest/cases/62_session_divergence.shtest/cases/62_session_divergence.shtest/cases/63_session_records.shtest/cases/63_session_records.shtest/cases/64_knowledge_discovery.shtest/cases/64_knowledge_discovery.shtest/cases/65_tool_root_independence.shtest/cases/65_tool_root_independence.shtest/cases/66_migrate_legacy.shtest/cases/66_migrate_legacy.shtest/cases/67_rule_dag.shtest/cases/67_rule_dag.shtest/cases/68_ai_discovery.shtest/cases/68_ai_discovery.shtest/cases/69_context_documents.shtest/cases/69_context_documents.shtest/cases/70_context_impact.shtest/cases/70_context_impact.shtest/cases/71_context_sync.shtest/cases/71_context_sync.shtest/cases/72_rust_mcp.shtest/cases/72_rust_mcp.shtest/cases/73_knowledge_nodes.shtest/cases/73_knowledge_nodes.shtest/cases/74_knowledge_edges.shtest/cases/74_knowledge_edges.shtest/cases/75_knowledge_mutation.shtest/cases/75_knowledge_mutation.shtest/cases/76_capabilities_projections.shtest/cases/76_capabilities_projections.shtest/cases/77_rust_evidence.shtest/cases/77_rust_evidence.shtest/cases/79_bench_command.shtest/cases/79_bench_command.shtest/cases/80_bench_persistence.shtest/cases/80_bench_persistence.shtest/cases/81_bench_baseline.shtest/cases/81_bench_baseline.shtest/cases/82_bench_check.shtest/cases/82_bench_check.shtest/cases/83_doctor_budget.shtest/cases/83_doctor_budget.shtest/cases/84_deployment_contract.shtest/cases/84_deployment_contract.shtest/cases/84_distribution_model.shtest/cases/84_distribution_model.shtest/cases/84_web_surfaces.shtest/cases/84_web_surfaces.shtest/cases/85_deployment_bind.shtest/cases/85_deployment_bind.shtest/cases/85_installer.shtest/cases/85_installer.shtest/cases/85_ui_conformance.shtest/cases/85_ui_conformance.shtest/cases/86_deployment_projections.shtest/cases/86_deployment_projections.shtest/cases/86_installer_platform.shtest/cases/86_installer_platform.shtest/cases/87_release_pipeline.shtest/cases/87_release_pipeline.shtest/cases/87b_release_archive_shape.shtest/cases/87b_release_archive_shape.shtest/cases/88_rust_command_tested.shtest/cases/88_rust_command_tested.shtest/cases/89_web_surface.shtest/cases/89_web_surface.shtest/cases/90_mcp_shared_server.shtest/cases/90_mcp_shared_server.shtest/cases/91_canonical_architecture.shtest/cases/91_canonical_architecture.shtest/cases/92_openapi_reference.shtest/cases/92_openapi_reference.shtest/cases/93_rust_provider_projections.shtest/cases/93_rust_provider_projections.shtest/cases/93_schema_integrity.shtest/cases/93_schema_integrity.shtest/cases/93_scope_policy.shtest/cases/93_scope_policy.shtest/cases/93_workspace_kind.shtest/cases/93_workspace_kind.shtest/cases/94_ci_plan.shtest/cases/94_ci_plan.shtest/cases/94_use_cases.shtest/cases/94_use_cases.shtest/cases/95_executable_reference.shtest/cases/95_executable_reference.shtest/cases/95_skills.shtest/cases/95_skills.shtest/cases/96_rust_public_api_quality.shtest/cases/96_rust_public_api_quality.shtest/cases/96_site_deploy.shtest/cases/96_site_deploy.shtest/cases/96_worktree_topology.shtest/cases/96_worktree_topology.shtest/cases/97_github_gate.shtest/cases/97_github_gate.shtest/cases/97_install_gate.shtest/cases/97_install_gate.shtest/cases/97_pages_fast_path.shtest/cases/97_pages_fast_path.shtest/cases/97_product_features.shtest/cases/97_product_features.shtest/cases/98_cli_reference.shtest/cases/98_cli_reference.shtest/cases/98_traceability.shtest/cases/98_traceability.shtest/cases/98_why_catalogue.shtest/cases/98_why_catalogue.shtest/cases/99_adr.shtest/cases/99_adr.shtest/cases/99_canonical_order.shtest/cases/99_canonical_order.shtest/cases/99_plan_capabilities.shtest/cases/99_plan_capabilities.shtest/cases/99_work_graph_chain.shtest/cases/99_work_graph_chain.sh
use-case 42
accept-or-refuse-finished-workDecide whether finished work is actually finished.ai/repo/use-cases/accept-or-refuse-finished-work.mdadd-a-use-case-and-prove-itAdd a use case and let the tool prove it.ai/repo/use-cases/add-a-use-case-and-prove-it.mdadopt-an-existing-repositoryAdopt a repository that already has its own rules.ai/repo/use-cases/adopt-an-existing-repository.mdblock-acceptance-on-an-open-questionBlock acceptance on a question nobody has answered.ai/repo/use-cases/block-acceptance-on-an-open-question.mdcapture-the-prompts-that-started-the-workKeep the prompts that started the work, below the model rather than around it.ai/repo/use-cases/capture-the-prompts-that-started-the-work.mdcarry-a-blocker-across-a-handoverHand work over with a question still open, and keep it blocking.ai/repo/use-cases/carry-a-blocker-across-a-handover.mdcheckpoint-long-workCheckpoint long work so a stop costs minutes, not the day.ai/repo/use-cases/checkpoint-long-work.mdclassify-what-belongs-in-the-contextDecide what belongs in the AI context, as data.ai/repo/use-cases/classify-what-belongs-in-the-context.mdcomplete-an-issue-only-with-its-evidenceComplete an issue only when its evidence exists.ai/repo/use-cases/complete-an-issue-only-with-its-evidence.mddeliver-issues-in-wavesDeliver issues in waves the graph computes, and take the next one.ai/repo/use-cases/deliver-issues-in-waves.mddocument-every-directory-of-the-layerRefuse a directory of the layer that documents nothing.ai/repo/use-cases/document-every-directory-of-the-layer.mdextend-what-the-executable-servesExtend what the executable serves by adding a file, never by rebuilding it.ai/repo/use-cases/extend-what-the-executable-serves.mdfind-an-object-without-reading-everythingFind an object of the layer without reading everything.ai/repo/use-cases/find-an-object-without-reading-everything.mdfind-out-what-driftedFind out what has drifted since anyone last looked.ai/repo/use-cases/find-out-what-drifted.mdfollow-a-skill-the-repository-definesFollow a procedure the repository defines, and add another one.ai/repo/use-cases/follow-a-skill-the-repository-defines.mdgate-ci-on-the-tool-itselfGate CI on the tool itself, with an exit code that is a contract.ai/repo/use-cases/gate-ci-on-the-tool-itself.mdhand-work-between-sessionsHand unfinished work to the next session.ai/repo/use-cases/hand-work-between-sessions.mdinstall-the-tool-in-one-commandInstall the tool in one command, on a machine with no toolchain.ai/repo/use-cases/install-the-tool-in-one-command.mdkeep-decisions-out-of-the-transcriptRecord a decision so the next worker can find it.ai/repo/use-cases/keep-decisions-out-of-the-transcript.mdkeep-the-bootstrap-thin-and-within-budgetKeep every provider bootstrap thin, generated and within budget.ai/repo/use-cases/keep-the-bootstrap-thin-and-within-budget.mdknow-which-tool-is-runningCheck the version before trusting a diagnosis.ai/repo/use-cases/know-which-tool-is-running.mdlet-the-provider-draw-the-episode-boundaryHave the session opened and closed without anybody remembering to.ai/repo/use-cases/let-the-provider-draw-the-episode-boundary.mdmigrate-from-the-old-layoutMove a repository from the pre-.ai layout to the layer.ai/repo/use-cases/migrate-from-the-old-layout.mdopen-and-close-a-sessionRecord what one worker did in one sitting.ai/repo/use-cases/open-and-close-a-session.mdplan-the-work-as-dataKeep the plan as milestones and issues the tool can validate.ai/repo/use-cases/plan-the-work-as-data.mdprove-a-rule-is-enforcedProve a rule is actually enforced, not merely written down.ai/repo/use-cases/prove-a-rule-is-enforced.mdprove-performance-with-benchmarksProve the tool is fast, not assume it, and refuse a regression.ai/repo/use-cases/prove-performance-with-benchmarks.mdprove-what-a-task-owed-before-calling-it-doneProve what a task owed before calling it done.ai/repo/use-cases/prove-what-a-task-owed-before-calling-it-done.mdread-back-what-happenedRead back what happened, and keep the ledger within its cap.ai/repo/use-cases/read-back-what-happened.mdread-only-the-context-that-fitsRead only the context that fits the budget, and know what was dropped.ai/repo/use-cases/read-only-the-context-that-fits.mdread-the-rules-the-tool-appliesSee which rules apply here and what enforces them.ai/repo/use-cases/read-the-rules-the-tool-applies.mdrecord-a-decision-before-it-is-forgottenRecord a decision as data, and prove the tool cannot accept it for you.ai/repo/use-cases/record-a-decision-before-it-is-forgotten.mdresume-from-a-prompt-assetStart a session from a rendered framing, not a pasted transcript.ai/repo/use-cases/resume-from-a-prompt-asset.mdresume-in-the-right-worktreeResume in the right worktree, never against somebody else’s task.ai/repo/use-cases/resume-in-the-right-worktree.mdrun-several-workers-at-onceRun several workers in one repository without them colliding.ai/repo/use-cases/run-several-workers-at-once.mdsay-what-reached-the-remote-and-what-did-notSay what reached the remote and what did not.ai/repo/use-cases/say-what-reached-the-remote-and-what-did-not.mdsay-what-the-tool-is-forSay what your work is for, once, and have every surface say it.ai/repo/use-cases/say-what-the-tool-is-for.mdsee-what-the-repository-holds-without-reading-itSee what the repository holds, and run one of its capabilities, without reading a file.ai/repo/use-cases/see-what-the-repository-holds-without-reading-it.mdserve-the-layer-to-ai-clientsServe the repository's AI layer to every AI client through one shared server.ai/repo/use-cases/serve-the-layer-to-ai-clients.mdtrace-a-change-to-the-context-it-affectsTrace a change to the context documents it affects.ai/repo/use-cases/trace-a-change-to-the-context-it-affects.mdtrust-the-policy-before-reading-itTrust the policy and the profiles only after they are validated.ai/repo/use-cases/trust-the-policy-before-reading-it.mdwork-on-a-branch-in-its-canonical-worktreeWork on a branch in the one worktree it belongs to.ai/repo/use-cases/work-on-a-branch-in-its-canonical-worktree.md
workspace 1
chatgpt-majordomusThe Majordomus project in ChatGPT.ai/repo/workspaces/chatgpt-majordomus.yaml