I3123 — finish refuses a verify command the profile does not admit for the change, and keeps its output
Let a profile or policy declare the verify commands (or command prefixes) a completed outcome may cite per scope class. finish refuses a command outside that set, beyond the no-op and print refusal already in mj_verify_is_vacuous, and records the tail of its output with the exit code.
PŘIPRAVENO vlna 0 · p2 · profil implementation · bezpečné souběžně
Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I3123 bude přijato.
Cíl
Let a profile or policy declare the verify commands (or command prefixes) a completed outcome may cite per scope class. finish refuses a command outside that set, beyond the no-op and print refusal already in mj_verify_is_vacuous, and records the tail of its output with the exit code.
Proč
The 2026-10-08 audit (c193#1) found vacuous verify commands (ls, true, test 1) accepted. Measured on master 707a04c: lib/finish.sh:161 refuses true, :, exit 0, echo and printf, but not ls or test 1. No policy pins what verifies a change. It extends milestone architecture-is-enforced. Sources: chatgpt-majordomus:c193#1.
Aktuální stav
mj_verify_is_vacuous in lib/finish.sh; profile key verification.verify_command_required.
Cílový stav
A profile key verification.verify_commands; a refusal names the admitted set.
Rozsah
- lib/finish.sh
- .ai/repo/profiles
- share/allow/profile.txt
- share/schemas/majordomus/profile/profile.v1.schema.json
- share/events.yaml
- test/cases/06_finish.sh
- docs/SCHEMAS.md
Mimo rozsah
- Judging whether a real command is the right one for the change
Závislosti
Žádné. Tento úkol je kořenem grafu.
Co na tom čeká
- I3128BLOCKED init ends with what it found in the repository it adopted, each finding naming its file
Kritéria přijetí
- A completed finish citing ls or test 1 under a profile with an admitted set is refused
- An admitted command passes and its output tail is in the ledger
- doctor admits the new profile key verification.verify_commands through share/allow/profile.txt
Validace
- MJ_TEST_JOBS=4 bash test/run.sh 06_finish
Požadované důkazy
- case_verify_command_admitted
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/I3123.yaml. Read it back with majordomus plan show I3123.