Skip to content

I3354 — A pure scorecard function computes each proof test's status, counted sample, effect and losses from committed records, and withholds a verdict until the registered sample is complete

Add economics::proof::scorecard(root): per test, status not_run (protocol not registered, instrument not built, or no counted record, each named), running (counted sample below the registered minimum, no verdict word and no effect shown), else passed, failed or inconclusive by the registered decision. paired: the suite's primary verdict as I3366's functions compute it. trials: min_successes and all_must_pass over counted trials. window: passed when the window closed and every field's not-observed share is within its bound, failed when one exceeds it, running while open. Losses list every invalid pair with its failing side, every pair or trial against the favourable direction, and every uncounted record with its reason. Totals per status are included. Fixture tests only; no capability.

BLOCKED wave 2 · p1 · implementation profile · parallel safe

Part of the-proof-scorecard-is-published — One derived scorecard publishes every proof test's computed status, losses included, on every surface, and no value claim stands without a passed test.

Blocked. This issue cannot start until I3351, I3353, I3366 are done. The status is derived from that, not declared.

Objective

Add economics::proof::scorecard(root): per test, status not_run (protocol not registered, instrument not built, or no counted record, each named), running (counted sample below the registered minimum, no verdict word and no effect shown), else passed, failed or inconclusive by the registered decision. paired: the suite's primary verdict as I3366's functions compute it. trials: min_successes and all_must_pass over counted trials. window: passed when the window closed and every field's not-observed share is within its bound, failed when one exceeds it, running while open. Losses list every invalid pair with its failing side, every pair or trial against the favourable direction, and every uncounted record with its reason. Totals per status are included. Fixture tests only; no capability.

Why

The owner's report of 2026-10-19 asks that T1 to T6 be settled by measurement, losses included; a typed verdict is the forecast the report rejects. The critique split the original scorecard issue because a calculator, three decision kinds and a capability with its projections were more than one reviewable pull request. Withholding the verdict while running answers the critique's point that a republished report would otherwise show interim verdicts during the runs.

Current state

No function computes a proof status. stats.rs:260 provides bootstrap_median_clustered for the token metric, which suits a median of ratios, not a binary acceptance outcome.

Desired state

scorecard(root) over the tracked plan reads six not_run rows with their reasons; fixtures drive each status and each loss reason.

Scope

  • apps/majordomus-cli/src/economics
  • apps/majordomus-cli/tests/economics.rs

Out of scope

  • Declaring a capability or regenerating projections (I3355)
  • Any statistic not in stats.rs
  • Rendering

Dependencies

What waits on this

Acceptance criteria

  • Fixtures drive each of the five statuses, and not_run for each of its three reasons
  • A paired fixture whose test does not reject reads inconclusive, never passed
  • A running fixture shows no verdict word and no effect
  • Per-status totals equal the number of tests
  • A stale record, a record under another digest and one recorded before registered_at appear under losses and change no status

Validation

  • cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
  • cargo fmt --manifest-path apps/majordomus-cli/Cargo.toml --check

Evidence required

  • test_proof_status_is_computed
  • test_uncounted_records_are_listed

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/I3354.yaml. Read it back with majordomus plan show I3354.

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