Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I1951

Evidence runs are typed, and a recording carries what its run measured

Where it stands

devtask.issue
Readiness
ready no dependency and no gate holds it; nobody has started it
Status
READY
Can start
startable
Milestone
Milestone status
ACTIVE
Wave
1
Waiting on
none
Holds back
Behind it in all
12
Evidence
0 of 3
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I1951

majordomus plan verify I1951

majordomus plan done I1951

What it is

Objective
Add the run record, the measured provenance, the coverage record and the crate count rule of ADR 0087 decisions 2, 6 and 12, and feed run records to the one monotone rule, so that a recording states the commit and tree its run measured and only what ran.
Why
The recorder stamps the commit and tree at record time rather than what the run measured, a crate binary summary that says ok is read as a pass even when nothing ran, and an evidence record call leaves no record of the run beside the ledger.
Now
record.rs stamps HEAD and the recorder's own tree; the crate parser reads ok as a pass without counting and without stripping colour codes; there is no run record, no coverage record, no evidence stamp and no --ledger local.
Wanted
evidence stamp measures a run's commit and tree; evidence record --provenance stamps them, refuses a measured commit that is not HEAD, and records T as unknown without a measurement; each call writes an EvidenceRunRecord; coverage is an EvidenceCoverage, current only for its own commit with a clean tree; a crate binary that ran no test or a filtered subset is a skip; --ledger local writes an advisory local ledger, and the default still writes the tracked one.
Done when
unknown: the record declares no `completion`
Risk
It needs the run reference of PR #577 (with I1949) and the tree state of I1948, and it is the second capability change of the chain, so it starts only after both have landed.

Acceptance

  • A report whose measured commit is not HEAD is refused, and one without a measurement is recorded with T unknown
  • A crate binary that ran no test or a filtered subset is recorded as a skip, and one with a failed test as a failure, whatever colour codes its output carries
  • Each evidence record call writes a run record carrying its commit, its tree, its totals, what was absent and what was dropped
  • A clean failing run record caps a proven verdict at stale through the one monotone rule, naming the record
  • evidence record with no ledger flag still writes the tracked ledger
Validation
bash test/run.sh 505_a_recording_carries_what_its_run_measuredbash test/run.sh 506_a_crate_binary_that_ran_nothing_is_not_a_passbash test/run.sh 124_evidencecargo test --workspace --all-features
Evidence required
provenance_measured_by_the_runcrate_count_rulerun_records_typed
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
apps/majordomus-cli/src/git/mod.rsapps/majordomus-cli/src/evidence/provenance.rsapps/majordomus-cli/src/evidence/run.rsapps/majordomus-cli/src/evidence/coverage.rsapps/majordomus-cli/src/evidence/record.rsapps/majordomus-cli/src/evidence/ledger.rsapps/majordomus-cli/src/evidence/mod.rsapps/majordomus-cli/src/evidence/freshness.rsapps/majordomus-cli/src/capability/builtin/evidence.rsapps/majordomus-cli/src/cli.rsapps/majordomus-cli/src/commands/evidence.rsscripts/ci/evidence-collecttest/cases/505_a_recording_carries_what_its_run_measured.shtest/cases/506_a_crate_binary_that_ran_nothing_is_not_a_pass.shdocs/EVIDENCE.mddocs/CLAIMS.yamldocs/claims.ai/repo/features/evidence.md
Not
A second copy of the monotone rule: run records feed the one I1948 writesWiring the runners in CI, which is I1954'sA version bump
Depends on
Priority
p1
Profile
implementation
Parallel safe
false
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-09-26
Updated
2026-09-26
Started
unknown: the record declares no `started_at`
Verified
unknown: the record declares no `verified_at`
Completed
unknown: the record declares no `completed_at`

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

LevelCodeMessageReproduce
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I1965; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I1985; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I1988; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/capability/builtin/evidence.rs with I2401; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/cli.rs with I2484; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I2700; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/cli.rs with I2701; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/cli.rs with I2702; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I2706; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares test/cases/505_a_recording_carries_what_its_run_measured.sh with I2708; they may not run concurrentlymajordomus plan validate
WARNscope_conflictshares apps/majordomus-cli/src/capability/builtin/evidence.rs with I2709; they may not run concurrentlymajordomus plan validate