I2400 — A signal model and a fold join every source the server already records
Add src/monitor: a Signal (cursor, at, source, kind, severity, actor, subject, summary, for_you), one reader per source (mesh journal, board, executor trail, executions) and the fold that drops unchanged session re-projections.
DONE wave 0 · p1 · implementation profile · runs alone
Objective
Add src/monitor: a Signal (cursor, at, source, kind, severity, actor, subject, summary, for_you), one reader per source (mesh journal, board, executor trail, executions) and the fold that drops unchanged session re-projections.
Why
Each source answers its own page with its own cursor; 95% of mesh events are identical session_opened re-projections (954 of 1000 sampled 2026-10-10 21:05Z), so a reader of the journal reads noise.
Current state
No monitor module.
Desired state
src/monitor folds the four sources into ordered signals behind one opaque cursor, unit-tested per reader and for the fold.
Scope
- apps/majordomus-cli/src/monitor
- apps/majordomus-cli/src/lib.rs
Dependencies
None. This issue is a root of the graph.
What waits on this
- I2401DONE monitor is one read capability with three projections
- I2403DONE Pull requests, checks and deploys reach the stream when GitHub is reachable
Acceptance criteria
- A page after a cursor repeats no signal of the previous page
- An unchanged session re-projection is suppressed and counted; a new session or a changed intent is a signal
- A signal is for_you when its reviewer, handover target, claim conflict or text names the reader
Validation
- cargo test --lib monitor
Evidence required
- monitor_fold_unit_tests
Evidence
| covers | type | command | result | at commit |
|---|---|---|---|---|
| monitor_fold_unit_tests | test | cargo test --locked --manifest-path apps/majordomus-cli/Cargo.toml --lib monitor | test result: ok. 64 passed; 0 failed (run 2026-10-14 between 07:40Z and 07:58Z on master ce5959db59) | ce5959d |
Timeline
- started
- 2026-10-14T08:02:46Z
- verified
- —
- completed
- 2026-10-14T08:02:52Z
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/I2400.yaml. Read it back with majordomus plan show I2400.