I2462 — The UI has every screen, and its mesh is a graph whose nodes open an inspector
Complete the navigation of majordomus ui against the owner's references with the Command, Capabilities, Deployments and Documentation screens. Make the Mesh screen interactive: a graph of machines, runtimes and sessions, each node selectable into an inspector whose selection is a URL.
DONE wave 1 · p1 · implementation profile · runs alone
Part of development-runtime — The runtime has a development surface.
Objective
Complete the navigation of majordomus ui against the owner's references with the Command, Capabilities, Deployments and Documentation screens. Make the Mesh screen interactive: a graph of machines, runtimes and sessions, each node selectable into an inspector whose selection is a URL.
Why
I2461 (PR #940) delivered the surface and seven screens. The owner asked to 'implement every component and view of the screenshots, maximally interactive and clickable' (2026-10-11). The references (campaigns/majordomus-ui-complete-opus-fable-v3-20261011/references) show Command, Capabilities, Deployments and Documentation screens, and the mesh pack (campaigns/majordomus-mesh-interactive-v5-20261011) asks for every real node to be selectable and deep-linkable. The data exists: commands.list (with its origin filter) and executions.list, capabilities.list by kind and capabilities.describe, deploy.list and delivery.report (13 s, so a panel of its own), objects.list for features and documents, web.surfaces, and mesh.peers with runtimes and sessions.
Current state
The UI shows seven screens; the mesh is a table.
Desired state
Eleven screens in the references' order. Command lists the command catalogue with what each changes; its tabs pass commands.list's own origin filter, and it shows the executions this process runs. Capabilities shows the registry's tallies, catalogues by kind, and the detail of one capability (?id=) with its input fields and every surface it is exposed on. Deployments shows declared deployments and, on its own route, the delivery report: the public site's verification and each feature's stage and what blocks it. Documentation shows the product features, the documents under docs/ and every public surface. Mesh draws machines, runtimes and sessions as a force-directed graph (sessions as small leaves labelled when selected), and ?node= opens the inspector of a machine: its runtimes with liveness and last beat, its sessions with their claims, and its own journal events. An unknown machine is said to be unknown. Issues & PRs opens one pull request (?pr=N) from the queue's own answer: its gates with their verdicts, the evidence behind them, its reasons, next action, authored paths and rank factors; a number the queue did not observe is said to be unobserved. Graphs take a layout and their nodes a kind. Not done here: actions on a node (V5 M04, behind the executor) and the execution control plane (V4).
Scope
- apps/majordomus-cli/src/ui
- share/ui
- .ai/repo/project/issues/I2462.yaml
- docs/MAJORDOMUS_UI.md
- .ai/repo/features/ui.md
Dependencies
- I2461DONE majordomus ui is served at /ui as its own product, with screens composed from capabilities
What waits on this
- I2470DONE The pull requests drain in the UI: a queue a reader narrows, inspects and follows to what each depends on
- I2477DONE A claim opens its proof: what settles it, its last run, what changed since, how to see it again
- I2478DONE A rule opens its proof: what it states, the tests that prove it, what is missing, and the rules around it
- I2483DONE The UI is published as a snapshot: read once at the published commit and carried by the site at /ui
Acceptance criteria
- /ui/command, /ui/capabilities, /ui/deployments and /ui/docs answer 200 with a hero and panels whose sources are named; a test renders every screen against a real registry
- /ui/capabilities?id=plan.status shows that capability's declared input fields and its API, CLI and MCP exposure
- /ui/mesh draws every machine, runtime and session the mesh runtime knows as a graph over a table fallback, and /ui/mesh?node=<name> opens that machine's inspector; an unknown name says it is unknown
- The delivery report is a panel route of its own and never holds the Deployments screen back
- /ui/work?pr=<n> opens that pull request's detail from the integration queue's answer, with every gate and its verdict; a queue row links to it; a number the queue did not observe says so
Validation
- cargo test --lib ui::
- cargo test --test ui_surface
- scripts/ci/cockpit-projection-check --ui-integrity
Evidence required
- ui_every_screen_renders_test
- ui_mesh_inspector_screenshot
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| ui_every_screen_renders_test | ci | cargo test --lib ui::tests (validate run 38223440282 on 722228ef3c, the v0.21.0 top) | every_screen_renders_its_hero_and_panels and every_screen_is_answered_and_every_answered_route_is_a_screen_or_a_panel ok; 106 ui:: tests ok | 722228e |
| ui_mesh_inspector_screenshot | artifact | node scratchpad/shots.mjs (Playwright Chromium, dark) against majordomus serve 0.21.0 built from perf/the-ui-answers-at-once d24107bd88 | /ui/mesh?node=641bdb94 at 1440x900: the node, its 7 runtimes with liveness, sessions and events; no overflow, no page errors | 722228e |
Timeline
- started
- 2026-10-12T11:00:05Z
- verified
- 2026-10-12T11:00:10Z
- completed
- 2026-10-12T11:00:20Z
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I2462.yaml. Read it back with majordomus plan show I2462.