I1507 — Issues, milestones, sessions and peers reach the Cockpit as projections
Give the Cockpit the development areas it has none of — issues, milestones, sessions, peers and the current task — each one rendering what a capability answered and computing nothing of its own.
BLOCKED wave 3 · p2 · implementation profile · runs alone
Part of development-runtime — The runtime has a development surface.
Blocked. This issue cannot start until I1505, I1506 are done. The status is derived from that, not declared.
Objective
Give the Cockpit the development areas it has none of — issues, milestones, sessions, peers and the current task — each one rendering what a capability answered and computing nothing of its own.
Why
Phase E of the audit's plan, and it is deliberately last. The gap matrix records issues and milestones as having no Cockpit page at all, and peers as reachable only through the generic runner despite peers.list and peers.announce both existing and both being covered by tests. Two capabilities landed after the audit's base that change the shape of this work: devtask.issue and devtask.milestone answer an issue and a milestone as work — readiness, waves, blockers, the parallel subsets, every value carrying whether a person authored it or a machine derived it — as a pure function of the canonical records, explicitly so that a work surface reading it derives nothing itself. That is the page's data source, already built. What must not happen is a page that computes a status: that is the defect the whole audit exists to prevent.
Current state
No Cockpit page for issues, milestones, sessions or the current task. Peers have no area. devtask.issue and devtask.milestone are exposed on CLI, MCP and HTTP and on no page.
Desired state
Each area is a page that renders a capability's answer. A status shown on a page came from devtask or plan, and the page contains no rule for deriving one.
Scope
- apps/majordomus-cli/src/cockpit
- share/cockpit
- docs/COCKPIT.md
- test/cases
Out of scope
- Any write path invented for a page. A page may only offer a transition that exists as a capability, through the mechanism the Cockpit already has.
- A second readiness vocabulary. devtask's refines the canonical statuses; a page must not add a third.
Dependencies
- I1505BLOCKED A mutating capability leaves a durable event, and the ledger can be read back
- I1506BLOCKED The lifecycle commands become non-interactive capabilities
Acceptance criteria
- Each new area renders from a capability's answer with no status derived in the page or in the browser
- Every new page appears in the navigation and is reached by the probe
- A page shows everything it knows before any JavaScript loads
Validation
- bash test/run.sh
- bin/majordomus-cli web
Evidence required
- pages_are_projections
- pages_are_navigable
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
Medium. The tempting shortcut — a small status calculation in a template or in a browser module — is exactly the drift class the drift audit catalogued, including a browser module that already decides execution finality on its own.
Timeline
- started
- —
- verified
- —
- completed
- —
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/I1507.yaml. Read it back with majordomus plan show I1507.