Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I2981 — A board or journal change is pushed over one WebSocket

Give the board and the mesh journal one change generation (crate::change), advanced by every board mutation and every journal append or ingest, and carry the blackboard on the one live channel: GET /events?follow=blackboard sends stream.ready with the server epoch, the snapshot, then a new snapshot whenever what it says changed and the monitor signals after the connection cursor; a resumed connection sends after and epoch, and a cursor of another process or one the monitor cannot page through is answered with stream.resync and a fresh snapshot. One read per generation is shared by every connection; a frame says whether a change pushed it or a refresh found it.

BLOKOVÁNO vlna 1 · 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 I2980 is done. The status is derived from that, not declared.

Cíl

Give the board and the mesh journal one change generation (crate::change), advanced by every board mutation and every journal append or ingest, and carry the blackboard on the one live channel: GET /events?follow=blackboard sends stream.ready with the server epoch, the snapshot, then a new snapshot whenever what it says changed and the monitor signals after the connection cursor; a resumed connection sends after and epoch, and a cursor of another process or one the monitor cannot page through is answered with stream.resync and a fresh snapshot. One read per generation is shared by every connection; a frame says whether a change pushed it or a refresh found it.

Proč

/cockpit/monitor polls the whole monitor every five seconds per tab, and the board changes nobody hears about until the next poll or the cooperation tick.

Aktuální stav

No change notification exists in the board, the journal or the monitor; /events is wired to the execution store.

Cílový stav

A peer's announce reaches a connected socket in under a second at P95 on this machine, measured.

Rozsah

  • apps/majordomus-cli/src/change.rs
  • apps/majordomus-cli/src/lib.rs
  • apps/majordomus-cli/src/peers.rs
  • apps/majordomus-cli/src/mesh/journal.rs
  • apps/majordomus-cli/src/http/events.rs
  • apps/majordomus-cli/src/http/follow.rs
  • apps/majordomus-cli/src/http/mod.rs
  • apps/majordomus-cli/src/http/router.rs
  • apps/majordomus-cli/src/monitor/mod.rs
  • apps/majordomus-cli/src/capability/builtin/blackboard.rs
  • .ai/repo/adrs/0176-the-blackboard-is-one-projection-pushed-over-one-socket.md
  • docs/BLACKBOARD.md
  • test/cases/3381_the_blackboard_is_pushed.sh

Závislosti

Co na tom čeká

Kritéria přijetí

  • An announce, a claim and a review each reach a connected client as a frame without a poll
  • A reconnect with the last cursor repeats nothing; a refused cursor resynchronises
  • A slow client is told it lagged and never holds an unbounded queue

Validace

  • majordomus plan validate
  • bash test/run.sh 3381_the_blackboard_is_pushed

Požadované důkazy

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

Prohledává názvy a popisy všech stránek, které tento web publikuje.