I2980 — The blackboard is one projection answered on every interface
Add blackboard.snapshot: one read capability that composes the repository-wide board (peers.list), the live mesh state (sessions, claims, reviews, handovers) and the newest monitor signals into one typed snapshot with the sources it read and their health, whether it is complete, every worker with its claims (advisory or exclusive), the conflicts (potential overlaps and confirmed conflicted claims), open reviews, untaken handovers, typed relations (verified or candidate) and the monitor cursor a stream resumes from.
READY wave 0 · p1 · implementation profile · parallel safe
Part of peer-blackboard — The peer blackboard is one projection, pushed live to every surface.
Ready. Every dependency is done, so majordomus plan start I2980 will be accepted.
Objective
Add blackboard.snapshot: one read capability that composes the repository-wide board (peers.list), the live mesh state (sessions, claims, reviews, handovers) and the newest monitor signals into one typed snapshot with the sources it read and their health, whether it is complete, every worker with its claims (advisory or exclusive), the conflicts (potential overlaps and confirmed conflicted claims), open reviews, untaken handovers, typed relations (verified or candidate) and the monitor cursor a stream resumes from.
Why
The facts exist in three capabilities that each surface would have to join again, and a join done per renderer is a second truth; the board's p1 is a position on one board, so a join by it would merge people.
Current state
peers.list, mesh.state and monitor.stream answer separately; /cockpit/peers renders peers.list alone.
Desired state
majordomus blackboard, GET /api/v1/blackboard and majordomus_blackboard answer the same projection; a board peer and the mesh session its server projected for it are one worker by an explicit identifier, never by a name.
Scope
- apps/majordomus-cli/src/capability/builtin/blackboard.rs
- apps/majordomus-cli/src/capability/builtin/mod.rs
- apps/majordomus-cli/src/capability/builtin/peers.rs
- apps/majordomus-cli/src/capability/builtin/monitor.rs
- apps/majordomus-cli/src/commands/blackboard.rs
- apps/majordomus-cli/src/commands/mod.rs
- apps/majordomus-cli/src/cli.rs
- docs/BLACKBOARD.md
- test/cases/3380_the_blackboard_is_one_projection.sh
Dependencies
None. This issue is a root of the graph.
What waits on this
Acceptance criteria
- The three interfaces answer the same projection
- An unread board or absent source makes complete false and names the reason
- A board peer joins the mesh session its own server projected only through the stream that server names, with the same board session id, checkout and client; two matches make candidates and no join
Validation
- majordomus plan validate
- bash test/run.sh 3380_the_blackboard_is_one_projection
Evidence required
- case_blackboard_projection
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/I2980.yaml. Read it back with majordomus plan show I2980.