I2983 — /ui/peers shows the blackboard and is read again when it changes
Add the Peers screen to the UI: every worker of the repository with where it works, its client, whether it is here, its intent and its claims; the claims that meet; the reviews and handovers that wait; the typed relations; and every source with its state. It renders blackboard.snapshot through the same shared read the live channel's followers take (http::follow::blackboard), so a screen read after a change frame is the blackboard at that change. share/ui/live.js follows /events?follow=blackboard&frames=snapshot through the one socket client (share/ui/socket.js, a byte copy of share/cockpit/socket.js kept by scripts/cockpit-assets), asks ui.js to read the screen again on a change or a reconnection, and keeps a state line that says live, reconnecting or read on a timer. The minute refresh runs only while the channel is not live. The published UI snapshot withholds the screen until its public-safe form exists (I2984).
BLOCKED wave 3 · 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 I2982 is done. The status is derived from that, not declared.
Objective
Add the Peers screen to the UI: every worker of the repository with where it works, its client, whether it is here, its intent and its claims; the claims that meet; the reviews and handovers that wait; the typed relations; and every source with its state. It renders blackboard.snapshot through the same shared read the live channel's followers take (http::follow::blackboard), so a screen read after a change frame is the blackboard at that change. share/ui/live.js follows /events?follow=blackboard&frames=snapshot through the one socket client (share/ui/socket.js, a byte copy of share/cockpit/socket.js kept by scripts/cockpit-assets), asks ui.js to read the screen again on a change or a reconnection, and keeps a state line that says live, reconnecting or read on a timer. The minute refresh runs only while the channel is not live. The published UI snapshot withholds the screen until its public-safe form exists (I2984).
Why
Who works on what is on the blackboard and on no UI screen; /cockpit/peers reads peers.list, which knows one board's machines and nothing of the mesh.
Current state
No /ui screen renders blackboard.snapshot; /ui screens are refreshed every minute and never pushed.
Desired state
An announcement reaches an open /ui/peers within a second of the change on this machine, with the screen saying it is live.
Scope
- apps/majordomus-cli/src/ui/peers.rs
- apps/majordomus-cli/src/ui/mod.rs
- apps/majordomus-cli/src/ui/source.rs
- apps/majordomus-cli/src/http/follow.rs
- apps/majordomus-cli/src/web/report/snapshot.rs
- share/ui/live.js
- share/ui/socket.js
- share/ui/ui.js
- scripts/cockpit-assets
- docs/MAJORDOMUS_UI.md
- docs/BLACKBOARD.md
- .ai/repo/project/intents/the-peer-blackboard-is-one-reality.yaml
- test/cases/3383_the_peers_screen_follows_the_blackboard.sh
- test/cases/1092_the_ui_snapshot_holds_every_screen.sh
- .ai/repo/project/critiques/the-peer-blackboard-is-one-reality.yaml
Dependencies
What waits on this
- I2984BLOCKED The published site shows a public-safe blackboard, labelled as the snapshot it is
- I2985BLOCKED The Observatory's cooperation scene draws the blackboard, not a second join of the journal
- I2998BLOCKED /cockpit/peers renders the blackboard and follows it live
- I2999BLOCKED From /ui/peers an operator answers a review, takes a handover or releases a claim, through its capability
- I3073BLOCKED The home page and the docs explain the peer blackboard: live on a runtime, a labelled snapshot on the published site
Acceptance criteria
- /ui/peers lists a worker announced over MCP with its intent and claim, and its fragment read after a second announcement shows the new intent at once
- live.js reads the screen again on every snapshot frame, a connection's first one included, one reading at a time, and says live, reconnecting or offline
- The UI snapshot holds no /ui/peers page and a link to it leads to the live page
Validation
- majordomus plan validate
- bash test/run.sh 3383_the_peers_screen_follows_the_blackboard
Evidence required
- case_peers_screen_follows
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/I2983.yaml. Read it back with majordomus plan show I2983.