I2982 — The monitor page is pushed over the live channel, and says when it polls
Let the one socket client follow the blackboard channel and move /cockpit/monitor onto it. /events?follow=blackboard takes for (the reader whose signals are marked), sources (the monitor sources, mesh and executor by default) and frames (snapshot, signals or both); a shared read is keyed by what it reads. socket.js keeps the opaque cursor of the last blackboard.signals frame and the epoch of stream.ready, resumes with both, and hands a stream.resync to the page. The monitor page renders the channel with its own cursor and epoch, adds pushed signals on top, and polls /api/v1/monitor only when the channel could not be opened, saying so.
BLOKOVÁNO vlna 2 · p1 · profil implementation · běží samostatně
Part of peer-blackboard — The peer blackboard is one projection, pushed live to every surface.
Blocked. This issue cannot start until I2981 is done. The status is derived from that, not declared.
Cíl
Let the one socket client follow the blackboard channel and move /cockpit/monitor onto it. /events?follow=blackboard takes for (the reader whose signals are marked), sources (the monitor sources, mesh and executor by default) and frames (snapshot, signals or both); a shared read is keyed by what it reads. socket.js keeps the opaque cursor of the last blackboard.signals frame and the epoch of stream.ready, resumes with both, and hands a stream.resync to the page. The monitor page renders the channel with its own cursor and epoch, adds pushed signals on top, and polls /api/v1/monitor only when the channel could not be opened, saying so.
Proč
/cockpit/monitor asks the whole monitor every five seconds per tab, and says it is live while it polls.
Aktuální stav
socket.js follows executions only, with a numeric sequence cursor; monitor.js polls /api/v1/monitor every five seconds while visible.
Cílový stav
A review request reaches an open monitor page as a row without a poll; a page whose channel is refused polls and labels itself as polling.
Rozsah
- apps/majordomus-cli/src/http/follow.rs
- apps/majordomus-cli/src/cockpit/monitor.rs
- share/cockpit/socket.js
- share/cockpit/monitor.js
- .ai/repo/adrs/0176-the-blackboard-is-one-projection-pushed-over-one-socket.md
- .ai/repo/project/intents/the-peer-blackboard-is-one-reality.yaml
- docs/BLACKBOARD.md
- test/cases/3382_the_monitor_is_pushed.sh
Závislosti
Co na tom čeká
Kritéria přijetí
- A follower given for= receives signals marked for_you for that reader, and one given frames=signals receives no snapshot
- socket.js resumes a blackboard channel with the last cursor and epoch, and reports stream.resync to the page
- The monitor page adds a pushed signal without polling, and polls with a label only when the channel is refused
Validace
- majordomus plan validate
- bash test/run.sh 3382_the_monitor_is_pushed
Požadované důkazy
- case_monitor_pushed
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/I2982.yaml. Read it back with majordomus plan show I2982.