I3121 — The release compatibility analyzer's invariants hold under property tests
Add proptest properties to apps/majordomus-cli/src/release/compat.rs: diff(a,a) is empty; reordering a surface gives no change; adding a distinct atom is at least minor; removing one is at least major from 1.0; normalisation is idempotent.
PŘIPRAVENO vlna 0 · p2 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3121 bude přijato.
Cíl
Add proptest properties to apps/majordomus-cli/src/release/compat.rs: diff(a,a) is empty; reordering a surface gives no change; adding a distinct atom is at least minor; removing one is at least major from 1.0; normalisation is idempotent.
Proč
Proposed on 2026-09-11 (c111#6) when the owner ordered that Elm-like versioning be enforced. The version a landing allocates (ADR 0134) rests on this analyzer, and on master 707a04c (grep -c '#\\[test\\]' apps/majordomus-cli/src/release/compat.rs, 2026-10-18) it has 33 example tests and no property. Sources: chatgpt-majordomus:c111#6, chatgpt-majordomus:c079#6.
Aktuální stav
compat.rs: 33 #[test]s on master 707a04c (same grep). proptest is a dev-dependency used in other modules (mesh, deploy, served, integration, economics). surface.rs:699 tests normalisation idempotence on one example.
Cílový stav
Five named properties in the lib suite.
Rozsah
- apps/majordomus-cli/src/release/compat.rs
Mimo rozsah
- Changing the bump policy
Závislosti
Žádné. Tento úkol je kořenem grafu.
Kritéria přijetí
- Each of the five properties runs at the default case count and passes
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --lib release::compat
Požadované důkazy
- compat_properties
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
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.
Canonical record: .ai/repo/project/issues/I3121.yaml. Read it back with majordomus plan show I3121.