I3218 — The execution ledger is a source of the monitor, so a run started anywhere is followed everywhere
Add executions to the monitor's sources with a cursor part of their own: a store-wide publish counter in the execution store paired with the server's epoch, so majordomus monitor and monitor.read carry execution starts, ends and refusals and an expired cursor is answered as the other sources answer one; the event vocabulary is the execution model's, not a new one.
READY wave 0 · p1 · implementation profile · parallel safe
Ready. Every dependency is done, so majordomus plan start I3218 will be accepted.
Objective
Add executions to the monitor's sources with a cursor part of their own: a store-wide publish counter in the execution store paired with the server's epoch, so majordomus monitor and monitor.read carry execution starts, ends and refusals and an expired cursor is answered as the other sources answer one; the event vocabulary is the execution model's, not a new one.
Why
docs/MONITOR.md: 'Executions (executions.events) are not a source yet.' On 2026-10-18 ChatGPT read master as '/ui polls, monitor --follow polls, executions are not in monitor'; the last part is verified. 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:c227#2, chatgpt-majordomus:c294#7.
Current state
Verified on master 707a04c7ce8: apps/majordomus-cli/src/monitor has executor.rs (the landing executor's trail), github.rs and mesh.rs; the execution store keeps per-execution dense sequences in server memory and feeds only /events; docs/MONITOR.md says executions are not a source yet.
Desired state
monitor::executions is a source whose health is MonitorSourceHealth's (ok, absent, error, skipped), and the fold suppresses heartbeat noise as for the other sources.
Scope
- apps/majordomus-cli/src/monitor
- docs/MONITOR.md
Out of scope
- Persisting executions beyond the store's retention
- A new event type vocabulary
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- An execution started through the CLI appears as a monitor signal after the cursor the caller held
- A page after that cursor repeats nothing
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib monitor::
- majordomus monitor --sources mesh,executor --since 30m
Evidence required
- case_an_execution_reaches_the_monitor
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
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/I3218.yaml. Read it back with majordomus plan show I3218.