I3379 — Each issue's CI reruns and rounds are counted from the Actions run record, attributed through plan.delivery
Fill ci_reruns per issue from the run record I3202 writes into the forge observation: for each pull request plan.delivery attributes to the issue, runs of the same head with run_attempt above 1 are reruns, runs of a later head are rounds, cancelled and superseded runs are apart, each with run id and attempt, with runner minutes where I3202 measures them. The reading never asks the forge itself.
BLOCKED wave 1 · p1 · implementation profile · parallel safe
Blocked. This issue cannot start until I3376, I3202 are done. The status is derived from that, not declared.
Objective
Fill ci_reruns per issue from the run record I3202 writes into the forge observation: for each pull request plan.delivery attributes to the issue, runs of the same head with run_attempt above 1 are reruns, runs of a later head are rounds, cancelled and superseded runs are apart, each with run id and attempt, with runner minutes where I3202 measures them. The reading never asks the forge itself.
Why
T3 of the owner's report of 2026-10-19 asks for CI reruns. I3202 already plans to read run_attempt, head_sha and conclusion, and I2740's plan.delivery attributes pull requests to issues, so this adds only the per-issue count.
Current state
apps/majordomus-cli/src/integration/metrics.rs:14-16 counts rounds from the drain's trail only; grep -rn run_attempt apps/majordomus-cli/src/integration finds nothing; apps/majordomus-cli/src/plan/delivery.rs:1-15 attributes branches and pull requests to issues.
Desired state
Every record carries its issue's reruns, rounds and cancelled or superseded runs, or not_observed with the reason.
Scope
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/tests/economics.rs
- docs/ECONOMICS.md
Out of scope
- Reading the forge directly
- Changing CI or the drain
Dependencies
- I3376READY One capability states each task's wall time and episodes from every checkout's ledger, and names every field it cannot yet fill as not observed
- I3202BLOCKED CI timings measure the wait before a run starts beside the run, and count what cancelled runs spent
Acceptance criteria
- One head run twice and a later head run once yield one rerun and one round, each with run id and attempt
- Cancelled and superseded runs are counted apart and keep their conclusion
- The same observation read twice counts each run once
- A missing observation or an unattributed issue reads not_observed with the reason
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- majordomus plan validate
Evidence required
- test_task_ci_reruns_are_attributed
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/I3379.yaml. Read it back with majordomus plan show I3379.