every-surface-follows-what-changed — Every surface follows what changed in the repository by push, and a surface that does not says so
Executions are a monitor source; the Observatory is told over /events; a write by any client reaches the workspace; every live surface states its transport in ADR 0158's words; a follower converges after loss; a kiosk keeps following for days.
PLÁNOVÁNO 0 z 8 úkolů hotovo
- připraveno
- 5
- blokováno
- 3
- aktivní
- 0
- verify
- 0
- hotovo
- 0
- zrušeno
- 0
Problém
docs/MONITOR.md says executions are not a monitor source yet; on master /events carries executions only, /ui refreshes on a 60 s timer (share/ui/ui.js), and the Observatory asks /api/v1/observatory/events with a cursor on an interval (share/ui/observatory.js). Each surface words its liveness differently, and an intent proposed from a terminal reaches an open /ui/idd only on that timer. Proposed in 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:c294#3, chatgpt-majordomus:c294#7, chatgpt-majordomus:c260#8, chatgpt-majordomus:c208#73, chatgpt-majordomus:c260#0, chatgpt-majordomus:c232#6.
Výsledek
Executions are a monitor source; the Observatory is told over /events; a write by any client reaches the workspace; every live surface states its transport in ADR 0158's words; a follower converges after loss; a kiosk keeps following for days.
Aktuální stav
Verified on master 707a04c7ce8: apps/majordomus-cli/src/monitor has the executor, github and mesh sources; apps/majordomus-cli/src/http/events.rs serves executions; share/ui/observatory.js polls by cursor and words REPLAY, SNAPSHOT, RESYNCED, LIVE and STALE for itself. In flight, not on master: PR #1178 (observatory-stream.js) and 5a's follow channel I2980-I2983.
Cílový stav
Each criterion of every-surface-follows-what-changed is carried by one issue here and proven by the case its issue's evidence_required names, on the one /events channel.
Rozsah
- apps/majordomus-cli/src/monitor
- apps/majordomus-cli/src/execution/store.rs
- apps/majordomus-cli/src/http/events.rs
- apps/majordomus-cli/src/mesh/journal.rs
- share/ui
- share/cockpit
- apps/majordomus-cli/src/ui/view.rs
- apps/majordomus-cli/src/cockpit/view.rs
- docs/MONITOR.md
- docs/MAJORDOMUS_UI.md
Mimo rozsah
- Web Push notifications outside the browser
- Live state on the published site
Kritéria přijetí
- An execution started from the CLI appears in majordomus monitor and on an open /cockpit/monitor
- The Observatory says LIVE only while a socket is delivering
- An intent proposed from a terminal reaches an open /ui/idd without a reload
- A fault-injection case ends every follower equal to a fresh snapshot
Validace
- majordomus plan validate
- majordomus intent explain every-surface-follows-what-changed
Rizika
- I3220 needs I2981's crate::change, and I3218's pushed half joins when I2981 lands; neither id can be a depends_on until its record reaches master, so the coordinator holds I3220 until then
Úkoly
Každý z nich je prováděcí kontrakt s vlastními kritérii přijetí, validačním příkazem a požadovanými důkazy. Sloupec wave je vrstva grafu závislostí, v níž úkol leží.
| issue | status | vlna | závisí na | název |
|---|---|---|---|---|
| I3218 | PŘIPRAVENO | 0 | — | The execution ledger is a source of the monitor, so a run started anywhere is followed everywhere |
| I3219 | PŘIPRAVENO | 0 | — | The Observatory is told what happened over the live channel, and asks only when it cannot be told |
| I3220 | PŘIPRAVENO | 3 | I2783 | An intent proposed or an issue moved by any client reaches an open intent workspace without a reload |
| I3221 | BLOKOVÁNO | 1 | I3219 | Every live surface says in ADR 0158's words whether it is live, reconnecting, stale, polling, a snapshot or a replay |
| I3222 | PŘIPRAVENO | 0 | — | A follower whose frames are lost, delayed or reordered, or whose peer is partitioned, ends equal to a fresh snapshot |
| I3231 | BLOKOVÁNO | 1 | I3219 | The Observatory shows its own stream health: lag, dropped frames, resyncs and frame rate |
| I3232 | PŘIPRAVENO | 0 | — | A kiosk left running for days shifts its marks against burn-in and recovers from a lost drawing context |
| I3431 | BLOKOVÁNO | 4 | I3220 | A record a process outside the server writes (a knowledge record reaching the index, a ledger line or a captured prompt) reaches an open view within one heartbeat, without a reload |
Graf
flowchart LR
I3218["I3218<br/>The execution ledger is a source of the monitor, so a run started anywhere is followed everywhere"]:::ready
I3219["I3219<br/>The Observatory is told what happened over the live channel, and asks only when it cannot be told"]:::ready
I3220["I3220<br/>An intent proposed or an issue moved by any client reaches an open intent workspace without a reload"]:::ready
I3221["I3221<br/>Every live surface says in ADR 0158's words whether it is live, reconnecting, stale, polling, a snapshot or a replay"]:::blocked
I3222["I3222<br/>A follower whose frames are lost, delayed or reordered, or whose peer is partitioned, ends equal to a fresh snapshot"]:::ready
I3231["I3231<br/>The Observatory shows its own stream health: lag, dropped frames, resyncs and frame rate"]:::blocked
I3232["I3232<br/>A kiosk left running for days shifts its marks against burn-in and recovers from a lost drawing context"]:::ready
I3431["I3431<br/>A record a process outside the server writes (a knowledge record reaching the index, a ledger line or a captured prompt) reaches an open view within one heartbeat, without a reload"]:::blocked
I3219 --> I3221
I3219 --> I3231
I3220 --> I3431
classDef done stroke:#16a34a,fill:#dcfce7,color:#14532d,stroke-width:2px
classDef active stroke:#2563eb,fill:#eff6ff,color:#1e3a8a,stroke-width:2px
classDef verify stroke:#7c3aed,fill:#f5f3ff,color:#4c1d95,stroke-width:2px
classDef ready stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef planned stroke:#0891b2,fill:#ecfeff,color:#164e63,stroke-width:2px
classDef blocked stroke:#b45309,fill:#fffbeb,color:#78350f,stroke-width:2px
classDef cancelled stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2px
classDef superseded stroke:#6b7280,fill:#f9fafb,color:#374151,stroke-width:2pxOdkazováno z tohoto diagramu (8)
- I3218 The execution ledger is a source of the monitor, so a run started anywhere is followed everywhere
- I3219 The Observatory is told what happened over the live channel, and asks only when it cannot be told
- I3220 An intent proposed or an issue moved by any client reaches an open intent workspace without a reload
- I3221 Every live surface says in ADR 0158's words whether it is live, reconnecting, stale, polling, a snapshot or a replay
- I3222 A follower whose frames are lost, delayed or reordered, or whose peer is partitioned, ends equal to a fresh snapshot
- I3231 The Observatory shows its own stream health: lag, dropped frames, resyncs and frame rate
- I3232 A kiosk left running for days shifts its marks against burn-in and recovers from a lost drawing context
- I3431 A record a process outside the server writes (a knowledge record reaching the index, a ledger line or a captured prompt) reaches an open view within one heartbeat, without a reload
Canonical record: .ai/repo/project/milestones/every-surface-follows-what-changed.yaml. Read it back with majordomus plan show every-surface-follows-what-changed.