Skip to content

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

Part of every-task-states-its-delivery-economics — Every task states its delivery economics: wall time, typed human interventions, CI reruns, spend and acceptance, each from a named record or said not observed.

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.

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