Skip to content

majordomus ui: the delivery, for a person

The shared server's primary surface answers how the delivery stands — health, releases, the roadmap, the work and its pull requests, the mesh, the evidence and the rules — and every value on it names the capability it was read from and every other surface that serves it.

status
feature status: stable
domain
Surfaces
on the homepage
featured

What it does

majordomus ui is the surface a person is sent to first. The Cockpit renders the registry (every capability, object, graph and route). The UI renders the delivery: whether the process is healthy, which version was released and which the commits imply next, how many issues are ready or blocked, which milestones are still open, which machines are on the mesh and how alive each runtime is, and what the integration lane would merge, repair or wait for.

Every tile and panel cites its capability, the pointer it read, the route that serves the same answer and how long it took, and links to that capability's page in the Cockpit. A source that cannot answer reads "not answered", and a value it does not carry reads "none" or "unknown", never zero or healthy. The sources of a screen are asked at once. A source too slow for the first paint, such as the pull-request queue, is a panel with a route of its own, pulled in by the one script once the screen has painted and linked for a reader without it.

What it does not do

It is not a second application. It has no datastore, no status vocabulary and no route list of its own beyond the screens its dispatcher answers. It runs no server of its own either: the shared server that serves the API, MCP and the Cockpit serves it too, under the same content-security policy. It does not replace the Cockpit, which stays the technical layer (ADR 0135), and it writes nothing: an action on it is a capability with its own route.

Why it exists

Operational moments from the Why catalogue that name one of this feature's mechanisms. Nothing here was assigned: a moment appears because it names a rule, a command, a capability or a claim this feature also names.

Every moment it answers (35)

How it works

The capability modules of the executable this feature names, each with the capabilities it composes. The interfaces each one reaches are listed under Interfaces below: they are projections of one declaration, not separate registrations.

Repository repository behaviorally verified

The 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.

Health health behaviorally verified

Whether 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, the comparison `generate --check` makes and the lease reading `server.status` answers from. No check here has an opinion of its own.

Release release implemented

What 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 one place the version is authored and the projection the shell tool prints, and says what the public contract requires it to become — or that it cannot be measured, and so decides nothing — with what the commits since the last release imply beside it as evidence.

Distribution distribution behaviorally verified

How 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.

The plan and its derivations plan behaviorally verified

The 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. This capability reads; writing a lifecycle marker into a record is `plan.transition`, which declares that it writes the repository.

Intent intents behaviorally verified

What must become true above the milestones that realise it: each intent's statement, invariants and satisfaction criteria, its stage derived from the plan's milestone status, each criterion's state derived from the evidence ledger, and its verdict derived from those criteria alone. Nothing is stored and nothing transitions; an intent added under the project model is answered by all of these without a registration anywhere.

Mesh mesh experimental

The mesh of this process: discovery — authenticated observations of other running Majordomus instances in one registry — and cooperation — authenticated links to trusted runtimes of the same repository, replicating sessions, claims, handovers and reviews through one journal every runtime folds into the same state. Discovery grants nothing; a link is admitted per peer, and nothing a peer sends executes anything here.

Pull-request integration integration experimental

Every open pull request classified against the current master — ready, needs refresh, waiting for checks, review or a dependency, draft, needs repair, conflicting, blocked, unsafe (auto-merge armed), redundant (its work is on master already), superseded (by a declared successor that landed, named in superseded_by), possibly redundant, other base or unknown — each with the master and head it was decided against, its reasons, its evidence, its risk and its overlaps, ranked deterministically; and the audit trail of the executor that merges the next provably safe one, one at a time. The relation to master is decided by git with this repository's own merge drivers, because the forge cannot run the derived-file driver. Read from the last recorded forge observation; the one exception is the dry-run proof, which observes the forge itself because the observation is part of what it proves moves nothing.

Deployment deploy behaviorally verified

The 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.

Delivery delivery experimental

Whether each product feature exists, computed and never recorded: on the trunk, deployed, publicly verified, its required tests current, that evidence published and linked from the interface — each a verdict of pass, fail or unknown with the reason and the remediation, and unknown never a pass. A feature short of any of them is not delivered, and its development stage (implemented on a branch, on master, tested, deployed) is a different type from delivery.

Completion gates gates behaviorally verified

Completion as a state the repository decides rather than a claim a worker makes: the validation gates this repository declares in its CI model, which of them a task's own change set selects, what each one last reported, whether that verdict still describes the tree it was taken over, and therefore whether the task may be called finished. A gate that has never reported is `queued` and not `pass`, a run whose files have changed since is `stale` and refuses exactly as a failure does, and a gate the change cannot affect is `exempt` rather than unknown.

Evidence evidence behaviorally verified

What actually ran, against which commit, and whether it still proves anything. The claims matrix binds a claim to a test by path; the ledger under .ai/repo/evidence records the latest execution of every test with the commit, the tree state, the digest of the test's own source, the time, the origin and the command that runs it again. Joining the two answers, per claim, whether the repository can honestly call it proven — and distinguishes a run recorded against this very commit from one whose inputs merely have not changed since, because collapsing those two is how a green badge stops meaning anything.

Rules rules behaviorally verified

What this repository refuses, and what it can actually show for each refusal. A rule declares a class — blocking, where a gate refuses the work, or advisory, where a reader is expected to have read it — and an enforcement block naming either the validator the dispatcher calls or the behavioural cases that prove it. This module joins that declaration to the tree and to the ledger of recorded runs, and reports, per rule, whether what it names is there, whether a runner owns it, whether it was ever run, whether the run passed, and whether the run is older than what it is about. A blocking rule whose proof is missing, dangling or failing is a finding, because a rule nobody can prove is a rule nobody enforces.

Capabilities capabilities behaviorally verified

The registry seen through itself: every capability with its kind, stability, provenance, exposures, benchmark and cache policy, and one capability in full.

Command graph commands implemented

Every 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.

Executions executions behaviorally verified

Running 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. One plane per checkout: `majordomus run` executes in its own process and reports the execution to the server already serving the checkout, so that server lists it beside its own; with no server it says that nothing else can see the run. In memory; an execution does not outlive the server that holds it.

Objects objects behaviorally verified

The 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.

Web surfaces web behaviorally verified

What 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.

Where it sits

domain
Surfaces — One declaration in the repository becomes the command line, the HTTP API, MCP, the UI, the Cockpit, the documentation and this site, and a projection that disagrees with it fails the build.
areas of work
observability
named by
Observatory

Interfaces

Each capability behind it, on every interface it is projected onto. A link goes to this site's reference for that interface; an HTTP route and an MCP tool are answered by a running majordomus serve, not by this site.

The capabilities behind this feature, by interface
capabilitycommand lineHTTPMCP tool
repository.info —none GET /api/v1/repository majordomus_repository
repository.scope majordomus scope GET /api/v1/scope majordomus_scope
repository.scope_classify —none GET /api/v1/scope/classify majordomus_scope_classify
health.live —none GET /api/v1/live —none
health.ready —none GET /api/v1/ready —none
health.report —none GET /api/v1/health majordomus_health
release.analysis —none GET /api/v1/release/analysis majordomus_release_analysis
release.changelog —none GET /api/v1/changelog majordomus_changelog
release.next —none GET /api/v1/release/next majordomus_release_next
release.version —none GET /api/v1/release/version majordomus_release_version
distribution.artifact majordomus distribution artifact GET /api/v1/distribution/artifact majordomus_artifact
distribution.build majordomus distribution build GET /api/v1/distribution/build majordomus_build
distribution.model majordomus distribution show GET /api/v1/distribution majordomus_distribution
distribution.releases majordomus distribution releases GET /api/v1/distribution/releases majordomus_releases
distribution.status majordomus distribution status GET /api/v1/distribution/status majordomus_install_status
plan.issues —none GET /api/v1/plan/issues majordomus_plan_issues
plan.model —none GET /api/v1/plan majordomus_plan
plan.next —none GET /api/v1/plan/next majordomus_plan_next
plan.record —none GET /api/v1/plan/record majordomus_plan_record
plan.roadmap —none GET /api/v1/plan/roadmap majordomus_plan_roadmap
plan.status —none GET /api/v1/plan/status majordomus_plan_status
plan.transition —none POST /api/v1/plan/transition majordomus_plan_transition
plan.validate —none GET /api/v1/plan/validate majordomus_plan_validate
plan.waves —none GET /api/v1/plan/waves majordomus_plan_waves
intents.binding majordomus intent binding GET /api/v1/intents/binding majordomus_intent_binding
intents.coverage majordomus intent coverage GET /api/v1/intents/coverage majordomus_intent_coverage
intents.list majordomus intent list GET /api/v1/intents majordomus_intents
intents.preflight majordomus intent preflight GET /api/v1/intents/preflight majordomus_intent_preflight
intents.propose majordomus intent propose POST /api/v1/intents/propose majordomus_intent_propose
intents.record majordomus intent show GET /api/v1/intents/record majordomus_intent_record
intents.validate majordomus intent validate GET /api/v1/intents/validate majordomus_intent_validate
mesh.claim —none POST /api/v1/mesh/claims majordomus_mesh_claim
mesh.cooperation —none GET /api/v1/mesh/cooperation majordomus_mesh_cooperation
mesh.doctor majordomus mesh doctor GET /api/v1/mesh/doctor majordomus_mesh_doctor
mesh.events —none GET /api/v1/mesh/events majordomus_mesh_events
mesh.firewall majordomus mesh firewall GET /api/v1/mesh/firewall majordomus_mesh_firewall
mesh.firewall.apply majordomus mesh firewall apply —none —none
mesh.handover.consume —none POST /api/v1/mesh/handovers/consume majordomus_mesh_handover_consume
mesh.handover.publish —none POST /api/v1/mesh/handovers majordomus_mesh_handover_publish
mesh.identity majordomus mesh identity GET /api/v1/mesh/identity majordomus_mesh_identity
mesh.link.hello —none POST /api/v1/mesh/link/hello —none
mesh.link.sync —none POST /api/v1/mesh/link/sync —none
mesh.nodes —none GET /api/v1/mesh/nodes majordomus_mesh_nodes
mesh.peer —none GET /api/v1/mesh/peer majordomus_mesh_peer
mesh.peers —none GET /api/v1/mesh/peers majordomus_mesh_peers
mesh.register —none POST /api/v1/mesh/register majordomus_mesh_register
mesh.release —none POST /api/v1/mesh/claims/release majordomus_mesh_release
mesh.review.answer —none POST /api/v1/mesh/reviews/answer majordomus_mesh_review_answer
mesh.review.request —none POST /api/v1/mesh/reviews majordomus_mesh_review_request
mesh.review.withdraw —none POST /api/v1/mesh/reviews/withdraw majordomus_mesh_review_withdraw
mesh.session.close —none POST /api/v1/mesh/sessions/close majordomus_mesh_session_close
mesh.session.open —none POST /api/v1/mesh/sessions majordomus_mesh_session_open
mesh.state —none GET /api/v1/mesh/state majordomus_mesh_state
mesh.status —none GET /api/v1/mesh majordomus_mesh
mesh.verify —none POST /api/v1/mesh/verify majordomus_mesh_verify
integration.cleanup —none GET /api/v1/pull-requests/cleanup majordomus_pull_requests_cleanup
integration.events majordomus prs events GET /api/v1/pull-requests/events majordomus_integration_events
integration.explain majordomus prs explain GET /api/v1/pull-requests/explain majordomus_pull_request_explain
integration.prove_dry_run majordomus prs prove-dry-run GET /api/v1/pull-requests/prove-dry-run majordomus_pull_requests_prove_dry_run
integration.queue majordomus prs status GET /api/v1/pull-requests majordomus_pull_requests
integration.timings —none GET /api/v1/pull-requests/timings majordomus_ci_timings
integration.trains majordomus prs trains GET /api/v1/pull-requests/trains majordomus_pull_request_trains
deploy.check —none GET /api/v1/deployments/check majordomus_deploy_check
deploy.get —none GET /api/v1/deployment majordomus_deployment
deploy.list —none GET /api/v1/deployments majordomus_deployments
deploy.observed —none GET /api/v1/deployments/observed majordomus_deployments_observed
delivery.feature majordomus delivery show GET /api/v1/delivery/feature majordomus_delivery_feature
delivery.report majordomus delivery report GET /api/v1/delivery majordomus_delivery
gates.completion —none GET /api/v1/gates/completion majordomus_completion
gates.model —none GET /api/v1/gates majordomus_gates
evidence.claim majordomus evidence claim GET /api/v1/evidence/claim majordomus_evidence_claim
evidence.record majordomus evidence record —none —none
evidence.report majordomus evidence show GET /api/v1/evidence majordomus_evidence
evidence.stamp majordomus evidence stamp —none —none
evidence.test majordomus evidence proves GET /api/v1/evidence/test majordomus_evidence_test
rules.proves majordomus rules proves GET /api/v1/rules/proves majordomus_rule_proves
rules.report majordomus rules report GET /api/v1/rules majordomus_rules
rules.show majordomus rules show GET /api/v1/rules/rule majordomus_rule
capabilities.describe majordomus capabilities describe GET /api/v1/capability majordomus_capability
capabilities.list majordomus capabilities list GET /api/v1/capabilities majordomus_capabilities
capabilities.projections majordomus capabilities projections GET /api/v1/capabilities/projections majordomus_projections
commands.get —none GET /api/v1/command majordomus_command
commands.graph —none GET /api/v1/commands/graph majordomus_command_graph
commands.list —none GET /api/v1/commands majordomus_commands
executions.cancel majordomus executions cancel POST /api/v1/executions/cancel majordomus_execution_cancel
executions.demonstrate —none GET /api/v1/executions/demonstrate majordomus_demonstrate_execution
executions.events majordomus executions events GET /api/v1/executions/events majordomus_execution_events
executions.get majordomus executions show GET /api/v1/executions/get majordomus_execution
executions.list majordomus executions list GET /api/v1/executions majordomus_executions
executions.protocol majordomus executions protocol GET /api/v1/executions/protocol majordomus_execution_protocol
executions.report —none POST /api/v1/executions/report —none
executions.start majordomus run POST /api/v1/executions/start majordomus_execution_start
objects.get —none GET /api/v1/object majordomus_get
objects.list —none GET /api/v1/objects majordomus_list
objects.search —none GET /api/v1/search majordomus_search
objects.verify —none GET /api/v1/objects/verify majordomus_verify_objects
web.surfaces —none GET /api/v1/web/surfaces majordomus_web_surfaces
served by the executable
/ui The delivery, for a person: majordomus ui

Evidence

What is guaranteed

Each claim this feature names, with the status its row declares, the verdict the recorded runs support, and the test that settles it.

The rules that hold it

  • blocking An interface shows only what is derived, and unknown is never drawn as healthyproject.ui-derived-state
  • blocking External interfaces are projections of one capability definitionproject.interfaces-are-projections
  • blocking A web surface is declared once and every web projection is derived from itproject.web-surface-declared-once

The decisions behind it

Using it

From the executable's command line

The synopsis of each, as the executable's own help prints it.

Where this page comes from

the file
.ai/repo/features/ui.md
the same answer
majordomus product show ui

Searches the titles and descriptions of every page this site publishes.