Filed by the domain:devx execution seat, session session_017ef78bLdybu3AffehKkhfk, round 6, as the residual of card #17458 — raised by that card's dev while executing it, and filed here rather than re-hung on #17458 so the question is reachable from the decision inbox instead of sitting inside a pm:queue card's prose.
Maintainer-action: run node scripts/check-bash32-floor.mjs --self-test once on the macOS / bash 3.2 host and post the failing case names — done when this card carries that list (or the run's green output, which closes it the other way).
The measured gap
#17458, filed by the maintainer, records check-bash32-floor --self-test as failing 8 of 153 cases on a real macOS / bash 3.2 host.
PR #18455 fixes 1 of those 8 — the one the card quotes verbatim and prescribes a fix for ("the simulated-3.2 harness really removes the builtin (else the next leg proves nothing)"). The PM re-derived that independently: under a PATH-wrapper simulation (real bash with mapfile/readarray disabled via BASH_ENV), at PR base b6fe311a9, check-bash32-floor --self-test exits 1 with 1 of 153, reading taken 2026-09-16T11:5xZ.
⇒ The other 7 are unidentified. ⛔ Not "probably fine", ⛔ not "likely the same cause" — unobserved, and unobservable from any container in this fleet, all of which run bash 5.x with mapfile present.
Why nobody here can close it
⛔ The simulation is faithful only to the failure mode #17458 names. A real bash 3.2 additionally lacks EPOCHSECONDS, associative arrays, ${var^^} and more, and this simulation reproduces none of that — so it cannot surface a failure that depends on them. Reproducing the remaining 7 needs the platform, not a better wrapper.
⚠️ A hypothesis that was raised and then REFUSED — deliberately, and the refusal is the point
#17458's dev proposed that the remaining failures live in the "and the probes are real shell, not plausible-looking text" battery, which runs bash -n over each of the 19 construct probes and whose case text already reads "the probe is shell THIS HOST can parse".
⛔ The dev then declined to act on it, and was right to: bash 3.2's parser rejects ;;&, ;& and |&, which accounts for 3–4 of the 19 probes, ⛔ not 7. Acting on it would mean building machinery for failures nobody has seen — inside the file whose entire subject is not mistaking an absent measurement for a passing one. ⭐ Recorded so the next reader does not "rediscover" the hypothesis and act on it without redoing that arithmetic.
What closes this card
One command, on hardware the maintainer already has, against the branch that carries the fix:
git checkout claude/issue-17458-bash32-selftest-harnesses # or origin/main once PR #18455 lands
node scripts/check-bash32-floor.mjs --self-test
The remaining failing case names are the deliverable. With them this becomes an ordinary domain:devx card with named evidence; without them it can only be guessed at.
⛔ This card asks for a measurement, not a decision about product or architecture — it is in the inbox because the person who can take the reading is the only one who can, ⛔ not because anything needs ruling.
⚠️ If the run comes back green, that is equally a result and closes this card: it would mean PR #18455 fixed all 8, and the 7 were downstream of the one repaired leg. ⛔ Nobody here can tell those two worlds apart.
Context, ⛔ not asserted as duplicates
Dedupe
All 526 open non-PR issues read via REST (⛔ no search_issues), title and body grepped, board read 2026-09-16T12:2xZ: 8 of 153|8/153 → 1 (#17458 itself); bash32.*remain|remaining.*bash.?3\.2 → 0; bash -n|probe.?parse → 0. Firing controls on the same corpus: bash 3\.2|bash32 → 4 and check-bash32-floor → 4 — the same four (#17797, #17458, #17141, #16644), of which #17797 (prose classification in scripts/**) and #16644 (throwaway-git-repo builders' environment) merely mention the gate in passing and were read to confirm it. Dark control → 0. ⇒ the corpus was really read, and there is no prior card.
Generated by Claude Code
Filed by the
domain:devxexecution seat, sessionsession_017ef78bLdybu3AffehKkhfk, round 6, as the residual of card #17458 — raised by that card's dev while executing it, and filed here rather than re-hung on #17458 so the question is reachable from the decision inbox instead of sitting inside apm:queuecard's prose.Maintainer-action: run
node scripts/check-bash32-floor.mjs --self-testonce on the macOS / bash 3.2 host and post the failing case names — done when this card carries that list (or the run's green output, which closes it the other way).The measured gap
#17458, filed by the maintainer, records
check-bash32-floor --self-testas failing 8 of 153 cases on a real macOS / bash 3.2 host.PR #18455 fixes 1 of those 8 — the one the card quotes verbatim and prescribes a fix for ("the simulated-3.2 harness really removes the builtin (else the next leg proves nothing)"). The PM re-derived that independently: under a
PATH-wrapper simulation (real bash withmapfile/readarraydisabled viaBASH_ENV), at PR baseb6fe311a9,check-bash32-floor --self-testexits 1 with 1 of 153, reading taken 2026-09-16T11:5xZ.⇒ The other 7 are unidentified. ⛔ Not "probably fine", ⛔ not "likely the same cause" — unobserved, and unobservable from any container in this fleet, all of which run bash 5.x with
mapfilepresent.Why nobody here can close it
⛔ The simulation is faithful only to the failure mode #17458 names. A real bash 3.2 additionally lacks
EPOCHSECONDS, associative arrays,${var^^}and more, and this simulation reproduces none of that — so it cannot surface a failure that depends on them. Reproducing the remaining 7 needs the platform, not a better wrapper.#17458's dev proposed that the remaining failures live in the "and the probes are real shell, not plausible-looking text" battery, which runs
bash -nover each of the 19 construct probes and whose case text already reads "the probe is shell THIS HOST can parse".⛔ The dev then declined to act on it, and was right to: bash 3.2's parser rejects
;;&,;&and|&, which accounts for 3–4 of the 19 probes, ⛔ not 7. Acting on it would mean building machinery for failures nobody has seen — inside the file whose entire subject is not mistaking an absent measurement for a passing one. ⭐ Recorded so the next reader does not "rediscover" the hypothesis and act on it without redoing that arithmetic.What closes this card
One command, on hardware the maintainer already has, against the branch that carries the fix:
The remaining failing case names are the deliverable. With them this becomes an ordinary
domain:devxcard with named evidence; without them it can only be guessed at.⛔ This card asks for a measurement, not a decision about product or architecture — it is in the inbox because the person who can take the reading is the only one who can, ⛔ not because anything needs ruling.
Context, ⛔ not asserted as duplicates
--self-testharnesses assume/bin/bashis bash 4+, so they fail on macOS — includingcheck-bash32-floor, the gate that defends the 3.2 floor #17458 — the origin card (maintainer-filed). It returns topm:queueafter PR fix(devx): both--self-testharnesses measure the host bash instead of assuming bash 4+ #18455 lands underPart of, carrying aRelease:line that names this residual.--self-testharnesses measure the host bash instead of assuming bash 4+ #18455 — the fix for the reproduced failure, reviewed and armed by thedomain:devxseat.Dedupe
All 526 open non-PR issues read via REST (⛔ no
search_issues), title and body grepped, board read 2026-09-16T12:2xZ:8 of 153|8/153→ 1 (#17458 itself);bash32.*remain|remaining.*bash.?3\.2→ 0;bash -n|probe.?parse→ 0. Firing controls on the same corpus:bash 3\.2|bash32→ 4 andcheck-bash32-floor→ 4 — the same four (#17797, #17458, #17141, #16644), of which #17797 (prose classification inscripts/**) and #16644 (throwaway-git-repo builders' environment) merely mention the gate in passing and were read to confirm it. Dark control → 0. ⇒ the corpus was really read, and there is no prior card.Generated by Claude Code