Skip to content

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

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, 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

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.

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