Skip to content

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.

Searches the titles and descriptions of every page this site publishes.