I3390 — One conservation reading counts completions per issue, unreachable task commits, stranded claims and multiply-consumed handovers, each violation with its records
Add apps/majordomus-cli/src/economics/conservation.rs and a conservation section in economics tasks: over a window, per issue the count of task.finished with outcome completed (a second is a duplicate completion); every commit on a task's branch inside its span reachable from a branch or refs/rescue/ ref (else lost); every exclusive claim in mesh state released, expired or held by a live session (else stranded); every handover whose consumed_by holds more than one session. Each violation names its ledger lines, shas, claim or handover ids.
BLOKOVÁNO vlna 1 · p1 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I3376 is done. The status is derived from that, not declared.
Cíl
Add apps/majordomus-cli/src/economics/conservation.rs and a conservation section in economics tasks: over a window, per issue the count of task.finished with outcome completed (a second is a duplicate completion); every commit on a task's branch inside its span reachable from a branch or refs/rescue/ ref (else lost); every exclusive claim in mesh state released, expired or held by a live session (else stranded); every handover whose consumed_by holds more than one session. Each violation names its ledger lines, shas, claim or handover ids.
Proč
T5 of the owner's report of 2026-10-19 asks to prove recovery without loss or duplicate completion. Nothing counts either today; the mesh already keeps consumed_by and handover digests, so the reading only folds existing records.
Aktuální stav
apps/majordomus-cli/src/mesh/state.rs:274 and :313 carry consumed_by; mesh/handover.rs:15 says materializing twice writes one file; share/events.yaml:152-158 declares session.recovered. No reading counts completions per issue.
Cílový stav
economics tasks --format json carries conservation with zero violations on a clean fixture and each violation named on a broken one.
Rozsah
- apps/majordomus-cli/src/economics
- apps/majordomus-cli/src/economics/mod.rs
- apps/majordomus-cli/tests/economics.rs
- docs/ECONOMICS.md
- docs/generated/openapi.json
- docs/generated/openapi.yaml
- site/data/generated/openapi.json
Mimo rozsah
- Repairing a violation
- Lease-based assignment (I3198)
Závislosti
Co na tom čeká
- I3391BLOCKED The T5 protocol registers three fault kinds, the trials each needs and what a trial must show, before any fault is injected
- I3392BLOCKED The mesh lab injects the three faults into work in progress, and its evidence holds the conservation reading of each scenario
- I3393BLOCKED Each fault is injected into real coding-agent sessions on one host, and each trial's recovery and conservation reading are committed
Kritéria přijetí
- Fixtures produce each violation kind, each naming its records
- A clean fixture reads zero violations
- Two ledgers each finishing the same issue completed read one duplicate completion
- A commit reachable only from refs/rescue/ is not lost
Validace
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test economics
- majordomus generate --check
Požadované důkazy
- test_conservation_violations
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/I3390.yaml. Read it back with majordomus plan show I3390.