I1948 — Důkazy se posuzují na předložené revizi jedinou funkcí čerstvosti
Zapsat tabulku čerstvosti, předloženou revizi, zahrnutí a agregaci podle ADR 0087 vždy jednou (rozhodnutí 4, 5, 7 a 8), aby evidence show mohl posoudit vyčtený commit podle knihy v něm commitované a každý verdikt pocházel z jednoho odvození.
HOTOVO vlna 0 · p1 · profil implementation · běží samostatně
Cíl
Zapsat tabulku čerstvosti, předloženou revizi, zahrnutí a agregaci podle ADR 0087 vždy jednou (rozhodnutí 4, 5, 7 a 8), aby evidence show mohl posoudit vyčtený commit podle knihy v něm commitované a každý verdikt pocházel z jednoho odvození.
Proč
Modul pravidel drží druhou kopii odvození čerstvosti, přeskočení se čte jako selhání, prosté maximum skryje selhání za absencí a verdikt korpusu navržený v PR #597 říká proven nad pravidly, jejichž vstupy se jen nezměnily. Žádný příkaz neposuzuje commit, jen pracovní strom.
Aktuální stav
evidence/mod.rs a rules/mod.rs každý odvozují čerstvost; obsažení žije soukromě v modulu delivery z PR #600; PR #597 přidává RulesVerdict, který přijímá inputs_unchanged jako prokázané. Tento řez je stackován na PR #597 (fix/a-verdict-says-what-was-proven) a jeho pull request míří do této větve.
Cílový stav
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.
Rozsah
- apps/majordomus-cli/src/git/mod.rs
- apps/majordomus-cli/src/evidence/mod.rs
- apps/majordomus-cli/src/evidence/freshness.rs
- apps/majordomus-cli/src/evidence/ledger.rs
- apps/majordomus-cli/src/rules/mod.rs
- apps/majordomus-cli/src/rules/tests.rs
- apps/majordomus-cli/src/capability/builtin/evidence.rs
- apps/majordomus-cli/src/cli.rs
- apps/majordomus-cli/src/commands/evidence.rs
- docs/EVIDENCE.md
- docs/DOCTRINE.md
- docs/HOW_IT_WORKS.md
- docs/CONCEPTS.md
- docs/CLAIMS.yaml
- docs/claims
- .ai/repo/features/evidence.md
- test/cases/502_evidence_is_judged_at_the_presented_revision.sh
- test/cases/133_rule_graph.sh
Mimo rozsah
- apps/majordomus-cli/src/environment: vstupní preflight je věcí I1965
- Změna evidence::changed_since, které PR #578 volá z preflightu
- Přidání pole do Execution nebo RunRef
- Zvýšení verze
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I1951PŘIPRAVENO Běhy důkazů jsou typované a záznam nese to, co jeho běh změřil
- I1952HOTOVO Subjekty důkazů se odvozují jednou, v Rustu
- I1965PŘIPRAVENO Vstupní preflight čte jediný verdikt
Kritéria přijetí
- Každý řádek tabulky čerstvosti ADR 0087 je dosažen tvrzením případu a jen řádek 10 dává proven
- evidence show --presented odmítne revizi, která není checkoutnutým commitem, přečte knihu záznamů v ní commitnutou a omezí proven na stale nad čistým selhávajícím během, který pracovní kniha záznamů drží necommitnutý
- Přeskočení se čte jako not_run s důvodem, nikdy nesele a nikdy není prokázáno
- aggregate() vrací failing, kdykoli selže kterákoli část, před jakoukoli nepřítomností
- RulesVerdict je proven jen tehdy, když je prokázáno každé blokující pravidlo
- Vlastní odvození čerstvosti v modulu pravidel je odstraněno a evidence::changed_since zůstává byte po bytu nezměněno
- Merge s PR #578 v libovolném pořadí nevyvolá žádný konflikt
Validace
- bash test/run.sh 502_evidence_is_judged_at_the_presented_revision
- bash test/run.sh 133_rule_graph
- bash test/run.sh 124_evidence
- cargo test --workspace --all-features
Požadované důkazy
- one_freshness_function
- presented_revision_judged
- failure_precedes_absence
Důkazy
| pokrývá | typ | command | výsledek | u commitu |
|---|---|---|---|---|
| presented_revision_judged | test | bash test/run.sh 502_evidence_is_judged_at_the_presented_revision | ok na 4090b2b8ae: evidence show --presented HEAD soudí z commitnuté knihy, je omezeno na stale necommitnutým čistým selháním a jinou revizi odmítne s exit 13 | 4090b2b |
| failure_precedes_absence | test | bash test/run.sh 502_evidence_is_judged_at_the_presented_revision | ok na 4090b2b8ae: blokující pravidlo s jedním selhávajícím a jedním přeskočeným testem se čte jako selhávající v rules show, rules report i ve verdiktu korpusu | 4090b2b |
| one_freshness_function | test | bash test/run.sh 133_rule_graph && bash test/run.sh 124_evidence | both ok at 4090b2b8ae: rules and claims are judged by evidence::freshness, and the corpus verdict reads unproven over an inputs_unchanged rule and proven only over proven ones; the workspace tests were not run locally: CI validate run 37744906831 on a tree identical to 4090b2b8ae passed lib (2448) and doc tests (1872) | 4090b2b |
Riziko
Navršeno na PR #597 přistává s #597: sloučeno do něj, nebo přesměrováno na master poté, co #597 přistane. Pokud scripts/ci/version-matches-surface žádá o zvýšení, řez se zastaví a hlásí; nikdy verzi nezvyšuje.
Časová osa
- zahájeno
- 2026-10-08T10:50:08Z
- ověřeno
- 2026-10-08T10:52:39Z
- dokončeno
- 2026-10-08T10:52:43Z
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I1948.yaml. Přečtěte ho zpět pomocí majordomus plan show I1948.