Skip to content

I2679 — The Observatory follows a stream with a cursor instead of asking for its page again

Make a change on the mesh reach the display when it happens, and make a gap in what was received something the display knows and says.

DONE wave 0 · p2 · implementation profile · parallel safe

Part of development-runtime — The runtime has a development surface.

Objective

Make a change on the mesh reach the display when it happens, and make a gap in what was received something the display knows and says.

Why

The Observatory learns of a change by asking for its own page every 15 seconds. That is honest and coarse: an event is seen up to 15 seconds late, events between two readings are seen only as a difference, and a missed reading is indistinguishable from a quiet mesh. The owner's specification asks for reconnect, deduplication, cursor recovery and bounded queues.

Current state

share/ui/observatory.js polls its page with ?fragment every 15 seconds and backs off to 120. The server already keeps a live-event stream for executions with a cursor per execution, and the mesh journal is ordered by stream and sequence.

Desired state

The display follows the server's existing event stream from a cursor, resumes from it after a disconnect, takes a fresh projection when the cursor has expired and says that it did, drops a duplicate by its identity, and holds a bounded number of events. No new transport is introduced.

Scope

  • apps/majordomus-cli/src/ui/observatory.rs
  • share/ui/observatory.js
  • docs/MAJORDOMUS_UI.md
  • .ai/repo/project/issues/I2679.yaml

Out of scope

  • A new stream protocol, event store or message broker
  • The public snapshot, which reads nothing again

Dependencies

None. This issue is a root of the graph.

Acceptance criteria

  • An event appended to the mesh journal reaches the display without a reading of the whole page, and a case proves it through a real server
  • After a disconnect the display resumes from its cursor; with an expired cursor it takes a fresh projection and its status word says so
  • The same event delivered twice draws one mark, and the number of events the script holds has a declared bound

Validation

  • bin/majordomus plan validate
  • bash test/run.sh 3011_the_observatory_draws_nothing_it_did_not_read

Evidence required

  • observatory_stream_resume_case

Evidence

coverstypecommandresultat commit
observatory_stream_resume_casetestcargo test --manifest-path apps/majordomus-cli/Cargo.toml --test mesh_cooperation -- three_runtimestest result: ok. 1 passed (run 2026-10-14 on bb844110bd, #1123): the newest page, nothing above the cursor, an appended claim arrives above it with one identity however often it is read, an expired cursor is reported; browser drills on a live server: RESYNCED after an expired cursor, STALE then LIVE after a lost server2ca25bb

Timeline

started
2026-10-14T12:31:19Z
verified
—
completed
2026-10-14T12:31:39Z

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/I2679.yaml. Read it back with majordomus plan show I2679.

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