Found by an auditor seat during plan 3 phase 1 (disposition: follow-up — pre-existing gap, neither created nor weakened by that diff).
The CASE GROUP K banner in hooks/validate-auditor-git.test.sh rests its widening-safety argument on "the C/E/H5 injection cases above stay unmodified and green". That harness covers >, >>, <, ;, &&, |, &, $(), [, ], and " — but there is no case for:
- glob
* / ?
- braces
{} (the @{} reflog form both prompt mirrors and the standing auditor card explicitly teach as denied)
- backslash continuation
- backtick substitution
Spec §9's non-goal asserts all of these stay denied and both prompt surfaces teach it, yet a future tr -d set edit admitting any of them would pass the whole suite green. This is exactly the floor each char-set widening's proof leans on.
Suggested: four expect_deny cases beside group C — git log HEAD@{1} (braces/reflog), git ls-files *.mjs (glob), a backtick-substitution payload, and a backslash-continuation payload — each asserting the WAR: marker via the existing helper.
Found by an auditor seat during plan 3 phase 1 (disposition: follow-up — pre-existing gap, neither created nor weakened by that diff).
The CASE GROUP K banner in
hooks/validate-auditor-git.test.shrests its widening-safety argument on "the C/E/H5 injection cases above stay unmodified and green". That harness covers>,>>,<,;,&&,|,&,$(),[,], and"— but there is no case for:*/?{}(the@{}reflog form both prompt mirrors and the standing auditor card explicitly teach as denied)Spec §9's non-goal asserts all of these stay denied and both prompt surfaces teach it, yet a future
tr -dset edit admitting any of them would pass the whole suite green. This is exactly the floor each char-set widening's proof leans on.Suggested: four
expect_denycases beside group C —git log HEAD@{1}(braces/reflog),git ls-files *.mjs(glob), a backtick-substitution payload, and a backslash-continuation payload — each asserting theWAR:marker via the existing helper.