Skip to content

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

Part of every-surface-follows-what-changed — Every surface follows what changed in the repository by push, and a surface that does not says so.

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.

Searches the titles and descriptions of every page this site publishes.