I3159 — A shell unit is deleted only after a parity case shows its replacement gives the same verdict on the same fixture
Generalise I1804's per-gate parity into a harness: the inventory record of a unit being migrated names its parity case, the case runs the legacy and the new path on one fixture and compares exit code and structured output, and the shell check refuses deleting a class A or B unit whose record names no passing parity case.
BLOKOVÁNO vlna 3 · p2 · profil implementation · bezpečné paralelně
Blocked. This issue cannot start until I1804 is done. The status is derived from that, not declared.
Cíl
Generalise I1804's per-gate parity into a harness: the inventory record of a unit being migrated names its parity case, the case runs the legacy and the new path on one fixture and compares exit code and structured output, and the shell check refuses deleting a class A or B unit whose record names no passing parity case.
Proč
Owner direction 2026-09-15 and 2026-10-17: characterise and differential-test legacy scripts before deletion; classify each difference as fix, architectural change or compatibility requirement. It extends milestone automation. Sources: chatgpt-majordomus:c140#2, chatgpt-majordomus:c244#8, chatgpt-majordomus:c290#2.
Aktuální stav
I1804 asks parity for the ratchet gates only; inventory.jsonl has no parity field.
Cílový stav
A parity field and a harness every migration uses.
Rozsah
- .ai/repo/automation
- apps/majordomus-cli/src/capability/builtin/shell.rs
- test/lib.sh
- docs/SHELL.md
- apps/majordomus-cli/src/automation/mod.rs
- test/cases/366_automation_inventory_agrees_with_the_tree.sh
- test/cases/365_new_shell_is_refused.sh
Závislosti
Kritéria přijetí
- A deletion without a parity case is refused
- A recorded difference carries its classification
- Each new case named here takes its number from `scripts/case-numbers next` and is announced on the board before the file is written (ADR 0053); a case number written in this record before that is provisional
Validace
- bin/majordomus-cli shell check
- bash test/run.sh 365_new_shell_is_refused
Požadované důkazy
- case_parity_before_deletion
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/I3159.yaml. Read it back with majordomus plan show I3159.