I3377 — A task's prompt records, restarts and manual changes are counted by type from the records that already hold them, each with the ids behind it
Fill three intervention types: prompt records under .ai/local/prompts whose episode is one of the task's and whose started_at falls in its span, with orphan and unlinked-legacy records reported as unattributed; restarts as each episode after the first, typed by a preceding task.handed_over, a session.recovered naming it, or unknown, plus each later task on the same issue after a non-completed finish; manual changes as commits on the task's branch in its span, reported as two signals (committer time in no open episode, and no Co-Authored-By trailer). Each count lists its ids or shas and classifying signal. approval stays not_observed.
BLOCKED wave 1 · p1 · implementation profile · parallel safe
Blocked. This issue cannot start until I3376 is done. The status is derived from that, not declared.
Objective
Fill three intervention types: prompt records under .ai/local/prompts whose episode is one of the task's and whose started_at falls in its span, with orphan and unlinked-legacy records reported as unattributed; restarts as each episode after the first, typed by a preceding task.handed_over, a session.recovered naming it, or unknown, plus each later task on the same issue after a non-completed finish; manual changes as commits on the task's branch in its span, reported as two signals (committer time in no open episode, and no Co-Authored-By trailer). Each count lists its ids or shas and classifying signal. approval stays not_observed.
Why
T3 of the owner's report of 2026-10-19 asks for human interventions by type. Three of four leave records already. The archive cannot tell a person's prompt from an unmarked relayed message, so the field is named prompt records and states that limit.
Current state
lib/capture.sh:36 writes one prompt per file; :85-95 names the link strength; :239-249 filters injected messages by declared markers; share/events.yaml:40-46 declares task.handed_over and :152-158 session.recovered; commit/message.rs:206 reads trailers; grep -rn 'local/prompts' apps/majordomus-cli/src finds no Rust reader.
Desired state
Every record carries prompt, restart and manual_change counts with ids and signals.
Scope
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/tests/economics.rs
- docs/ECONOMICS.md
Out of scope
- Approval receipts (I3378)
- Reading a prompt's text
- Changing what capture writes
Dependencies
What waits on this
Acceptance criteria
- Only prompts inside the task's span and episodes are counted; orphans are reported as unattributed
- A resume after a handover and one after a recovery each report one typed restart
- A second task on the same issue after a partial finish counts as a restart
- Commits with no open episode and commits without the trailer are reported under their own signals with shas
- No prompt text enters the reading
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- majordomus plan validate
Evidence required
- test_task_interventions_are_typed
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/I3377.yaml. Read it back with majordomus plan show I3377.