I2998 — /cockpit/peers renders the blackboard and follows it live
Render /cockpit/peers from blackboard.snapshot instead of peers.list: every worker on every board and linked machine, its claims, the conflicts, the waiting reviews and handovers, and every source. Follow /events?follow=blackboard&frames=snapshot through the one socket client (share/cockpit/socket.js), as /ui/peers does. The page's state line says live, reconnecting or offline truthfully. /ui/peers and /cockpit/peers then render the same projection, and neither joins a fact of its own.
BLOCKED wave 4 · p1 · implementation profile · runs alone
Part of peer-blackboard — The peer blackboard is one projection, pushed live to every surface.
Blocked. This issue cannot start until I2983 is done. The status is derived from that, not declared.
Objective
Render /cockpit/peers from blackboard.snapshot instead of peers.list: every worker on every board and linked machine, its claims, the conflicts, the waiting reviews and handovers, and every source. Follow /events?follow=blackboard&frames=snapshot through the one socket client (share/cockpit/socket.js), as /ui/peers does. The page's state line says live, reconnecting or offline truthfully. /ui/peers and /cockpit/peers then render the same projection, and neither joins a fact of its own.
Why
The milestone's invariant is that every surface that shows peers reads the one projection. /cockpit/peers still reads peers.list once: one checkout's boards, nothing of the mesh, never updated.
Current state
cockpit/pages.rs peers() asks peers.list and renders it once.
Desired state
/cockpit/peers shows what /ui/peers shows, from the same frames, and is pushed a change within a second on this machine.
Scope
- apps/majordomus-cli/src/cockpit/pages.rs
- share/cockpit/peers.js
- docs/BLACKBOARD.md
- docs/COCKPIT.md
- .ai/repo/project/intents/the-peer-blackboard-is-one-reality.yaml
- test/cases/3386_the_cockpit_peers_page_follows_the_blackboard.sh
Dependencies
Acceptance criteria
- /cockpit/peers lists a worker announced over MCP with its intent and claim, and a mesh session of a linked runtime, from blackboard.snapshot
- A second announcement reaches an open /cockpit/peers without a reload, and the page says live
- No cockpit or ui page that shows peers asks peers.list or mesh.state for them directly
Validation
- majordomus plan validate
- bash test/run.sh 3386_the_cockpit_peers_page_follows_the_blackboard
Evidence required
- case_cockpit_peers_follows_the_blackboard
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
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/I2998.yaml. Read it back with majordomus plan show I2998.