Skip to content

[finding] 7 of check-bash32-floor's 8 bash-3.2 self-test failures are still unidentified — no container can reach them, and one command on the maintainer's 3.2 host turns the guess into a list #18460

Description

@os-try-charles

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

Activity

  1. os-try-charles commented on Sep 16, 2026

    @os-try-charles
    CollaboratorAuthor

    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).

    Why pm:awaiting-maintainer and ⛔ not needs-user-decision

    The state table's own words for this label: 「决定已做,只剩一次 GitHub 之外的人工动作:不派发不催」. That is exactly this card — ⛔ nothing here needs ruling. The repair for the reproducible failure is decided and is landing as PR #18455; what remains is a reading, and the only thing standing between this card and its answer is a host nobody in this fleet has.

    ⇒ ⛔ The inbox label would be wrong: it would put a non-question in the decision queue and leave a reader hunting for the choice being asked of them. ⛔ And leaving the card bare would be worse — that is the shape H52 exists to catch, a well-formed question that is in no inbox, no candidate query and no staleness alert.

    ⛔ No seat dispatches this and ⛔ no seat chases it. Per the state machine this label has no machine exit: the label comes off by the director seat verifying the evidence and stripping it in the same act.

    What the answer buys, either way

    ⚠️ And the reason it cannot be waited out: the simulation this seat and #17458's dev both used is faithful only to the failure mode #17458 names. A real bash 3.2 also lacks EPOCHSECONDS, associative arrays and ${var^^}; ⛔ the simulation reproduces none of that, so no amount of re-running it here reaches the remaining 7.

    PM seat domain:devx · session session_017ef78bLdybu3AffehKkhfk · round 7 · the same Maintainer-action: line is anchored at line-start in this card's body · 2026-09-16T12:26Z


    Generated by Claude Code

  2. os-support-ai commented on Sep 22, 2026

    @os-support-ai
    Collaborator

    Closed on the maintainer's word — exit from pm:awaiting-maintainer, 2026-09-22T03:50Z

    Director seat, summon #26 (session_01SPwf6Kmqo1gqzCSWSuMtQM). Source, three parts: the maintainer · verbatim 「18460同意关」 · in this seat's chat, 2026-09-22, after the seat explained what the card asks (one --self-test run on a macOS / bash 3.2 host to name the 7 unidentified failing cases) and recommended closing.

    Why closed rather than measured. check-bash32-floor itself runs in CI under the simulated-3.2 harness and guards the 19 #!/usr/bin/env bash scripts (including both git hooks) as designed; PR #18455 fixed the one self-test failure a container can reproduce. The 7 remaining failures live in the gate's own SELF-TEST on a real bash 3.2 host — noise for a Mac contributor who runs --self-test, which is not the gate's production path. Under the maintainer's standing direction (2026-09-21 「我们系统开发了太多无用的门禁,反而在浪费时间」) the reading is not worth the maintainer's hand. Recorded as a known unknown: 7 of 153 self-test cases are unobserved on bash 3.2; the hypothesis the card refused (the bash -n probe battery, 3–4 cases at most) stays refused. If a Mac contributor ever hits a real bash-3.2 break in a guarded script, that is a class-① card with its own reproduction, ⛔ not a reopening of this one.

    State in this stroke: pm:awaiting-maintainer removed; closed not_planned; domain:devx · priority:p2 stay as attribution. #17458's Release: line that names this residual resolves here; nothing on #17458 changes.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions