I3181 — A change made on another node reaches every open page by push, and a gap is refetched
Carry mesh journal events that arrive from a linked runtime (sessions, claims, handovers and reviews) into the events channel the local executions use, so /ui/mesh and /ui/peers update without a reload, a page that detects a cursor gap asks for a snapshot, and a client that ends and returns resumes from a snapshot and cursor with nothing lost.
BLOCKED wave 2 · p2 · implementation profile · parallel safe
Blocked. This issue cannot start until I3138, I3222 are done. The status is derived from that, not declared.
Objective
Carry mesh journal events that arrive from a linked runtime (sessions, claims, handovers and reviews) into the events channel the local executions use, so /ui/mesh and /ui/peers update without a reload, a page that detects a cursor gap asks for a snapshot, and a client that ends and returns resumes from a snapshot and cursor with nothing lost.
Why
The 10-18 analysis found #1342 refreshes /ui/idd only after local executions; a change on another peer or from CI reaches the page only by polling. 5a's I2981 (in flight, no record yet) pushes board and journal changes over one WebSocket for the blackboard; this issue makes every page that reads mesh-derived state follow it. Critique 10-18: /ui/idd reads only the checkout's own plan, and the journal carries only session, claim, handover and review events, so this issue targets the pages that render journal state. I2981 has no record on master or on this branch and cannot be a dependency. I3222 and I3138 are its recorded stand-ins. I3194 (latency) duplicated I3140 (prismatic-lumen) and is dropped in favour of it. It extends milestone everything-is-followed-in-one-stream. Proposed in ADR 0201 (The persistent runtime is the authority; every operator surface, Lumen included, is a client of it); ADR 0216 (Every live surface follows one channel with named follow streams, and nothing polls where a stream exists) (proposed; it carries no authority until the owner accepts it). Sources: chatgpt-majordomus:c297#9.
Current state
Verified on master: http/events.rs and http/ws.rs carry executions and the monitor; remote journal events are folded into mesh.state but not pushed to pages. In flight: I2981/I2982 (5a, no records yet), branch feature/the-workspace-follows-the-plan-live (p4).
Desired state
A remote event changes an open page within the stream's budget; a gap triggers a resnapshot and says 'resynchronising'.
Scope
- apps/majordomus-cli/src/http/events.rs
- apps/majordomus-cli/src/mesh/journal.rs
- share/ui/ui.js
- apps/majordomus-cli/src/http/ws.rs
- apps/majordomus-cli/src/ui/mesh.rs
- apps/majordomus-cli/src/ui/mod.rs
- apps/majordomus-cli/src/ui/source.rs
- docs/MAJORDOMUS_UI.md
Out of scope
- Minute polling presented as realtime
- /ui/idd and plan transitions: the journal carries no plan transition, and local push to /ui/idd is I3220
- Board push already planned under I2981 (5a, unrecorded)
Dependencies
- I3138BLOCKED One page shows the whole mesh from the blackboard, peers and monitor with each figure's freshness, and recovers after a reconnect
- I3222READY A follower whose frames are lost, delayed or reordered, or whose peer is partitioned, ends equal to a fresh snapshot
Acceptance criteria
- A dropped connection resumes without a missed change
- An event appended to runtime B's mesh journal (session, claim, handover or review) appears on runtime A's open /ui/mesh and /ui/peers without a reload
- Ending the session and closing the page, then reopening, resumes from a snapshot and cursor with no change lost, proven by case_a_remote_change_reaches_the_page
- The proof is the case named in evidence_required, run by bash test/run.sh, not cargo test --test ui_idd
Validation
- majordomus plan validate
- cargo test --lib http::events
Evidence required
- case_a_remote_change_reaches_the_page
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/I3181.yaml. Read it back with majordomus plan show I3181.