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.
BLOKOVÁNO 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.
Cíl
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.
Proč
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.
Aktuální stav
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).
Cílový stav
A remote event changes an open page within the stream's budget; a gap triggers a resnapshot and says 'resynchronising'.
Rozsah
- 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
Mimo rozsah
- 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)
Závislosti
- 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
Kritéria přijetí
- 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
Validace
- majordomus plan validate
- cargo test --lib http::events
Požadované důkazy
- case_a_remote_change_reaches_the_page
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3181.yaml. Read it back with majordomus plan show I3181.