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

I1948

Evidence is judged at the presented revision, by one freshness function

Where it stands

devtask.issue
Readiness
complete completion is recorded and every required evidence token is present
Status
DONE
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
0
Waiting on
none
Holds back
Behind it in all
15
Evidence
3 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 I1948

majordomus plan verify I1948

majordomus plan done I1948

What it is

Objective
Write the freshness table, the presented revision, containment and aggregation of ADR 0087 once each (decisions 4, 5, 7 and 8), so that evidence show can judge the checked-out commit by the ledger committed in it and every verdict comes from one derivation.
Why
The rules module holds a second copy of the freshness derivation, a skip reads failing, a plain maximum hides a failure behind an absence, and the corpus verdict proposed in PR #597 says proven over rules whose inputs are merely unchanged. No command judges a commit rather than the working tree.
Now
evidence/mod.rs and rules/mod.rs each derive freshness; containment lives privately in the delivery module of PR #600; PR #597 adds RulesVerdict, which accepts inputs_unchanged as proven. This slice is stacked on PR #597 (fix/a-verdict-says-what-was-proven), with its pull request into that branch.
Wanted
evidence::freshness implements ADR 0087's freshness table and one aggregate() with failure precedence; `evidence show --presented <rev> --presented-tree <state>` judges the checked-out commit by its committed ledger and reads the working ledger's uncommitted executions through the monotone rule; containment lives in git/mod.rs; the rules module's copy is gone while evidence::changed_since stays byte-for-byte; RulesVerdict is proven only when every blocking rule is proven; ProofState::token() maps each wire word to its design token.
Done when
unknown: the record declares no `completion`
Risk
Stacked on PR #597, it lands with #597: merged into it, or retargeted to master after #597 lands. If scripts/ci/version-matches-surface asks for a bump, the slice stops and reports; it never bumps.

Acceptance

  • Each row of ADR 0087's freshness table is reached by a case assertion, and only row 10 yields proven
  • evidence show --presented refuses a revision that is not the checked-out commit, reads the ledger committed in it, and caps proven at stale over a clean failing run the working ledger holds uncommitted
  • A skip reads not_run with its reason, never failing and never proven
  • aggregate() returns failing whenever any part fails, before any absence
  • RulesVerdict is proven only when every blocking rule is proven
  • The rules module's own freshness derivation is removed, and evidence::changed_since is unchanged byte-for-byte
  • Merging with PR #578 in either order produces no conflict
Validation
bash test/run.sh 502_evidence_is_judged_at_the_presented_revisionbash test/run.sh 133_rule_graphbash test/run.sh 124_evidencecargo test --workspace --all-features
Evidence required
one_freshness_functionpresented_revision_judgedfailure_precedes_absence
Evidence present
presented_revision_judgedfailure_precedes_absenceone_freshness_function

Scope

Touches
apps/majordomus-cli/src/git/mod.rsapps/majordomus-cli/src/evidence/mod.rsapps/majordomus-cli/src/evidence/freshness.rsapps/majordomus-cli/src/evidence/ledger.rsapps/majordomus-cli/src/rules/mod.rsapps/majordomus-cli/src/rules/tests.rsapps/majordomus-cli/src/capability/builtin/evidence.rsapps/majordomus-cli/src/cli.rsapps/majordomus-cli/src/commands/evidence.rsdocs/EVIDENCE.mddocs/DOCTRINE.mddocs/HOW_IT_WORKS.mddocs/CONCEPTS.mddocs/CLAIMS.yamldocs/claims.ai/repo/features/evidence.mdtest/cases/502_evidence_is_judged_at_the_presented_revision.shtest/cases/133_rule_graph.sh
Not
apps/majordomus-cli/src/environment: the entry preflight is I1965'sChanging evidence::changed_since, which PR #578 calls from the preflightAdding a field to Execution or RunRefA version bump
Depends on
none
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-10-08T10:52:43Z
Started
2026-10-08T10:50:08Z
Verified
2026-10-08T10:52:39Z
Completed
2026-10-08T10:52:43Z

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

Nothing is wrong with these records.