Skip to content

fix: failsoft_classify_check bash-3.2 portable (v0.43.0 macOS release build) - #1117

Merged
InauguralPhysicist merged 1 commit into
mainfrom
fix-failsoft-bash32
Sep 6, 2026
Merged

fix: failsoft_classify_check bash-3.2 portable (v0.43.0 macOS release build)#1117
InauguralPhysicist merged 1 commit into
mainfrom
fix-failsoft-bash32

Conversation

@InauguralPhysicist

Copy link
Copy Markdown
Collaborator

The v0.43.0 release build failed on both macOS jobs: failsoft_classify_check.sh used declare -A (bash 4+) over a fixed 6-tag set; macOS bash 3.2 mis-parses it and set -u kills it. The #988 [99p] child-exit ledger surfaced the latent bug (regular CI macOS uses a newer bash). Replaced with plain per-tag counters + case dispatch, semantics unchanged (selftest 13/13). Also stamps CLAUDE.md Latest-release to v0.43.0 (the tag now exists). After merge: delete + re-dispatch the v0.43.0 tag so it points at the fix.

🤖 Generated with Claude Code

The v0.43.0 release build failed on both macOS jobs in tools/failsoft_classify_check.sh,
which shipped two tool-version assumptions macOS violates:
- `declare -A tally` + `tally[$tag]` (bash 4+): macOS bash 3.2 makes `declare -A`
  a syntax error and parses the string key as arithmetic on an unbound name,
  which `set -u` kills. Replaced with plain per-tag counters + case dispatch.
- `make --eval` in compiled_union (GNU Make 3.82+): macOS ships Make 3.81, where
  the flag is unknown and the output empty, so every builtin file read as an
  ORPHAN. Replaced with a temp makefile that `include`s the real one and carries
  the print rule (3.81-compatible). This was masked by the declare -A crash until
  it was fixed; the #988 [99p] child-exit ledger surfaces both.

Semantics unchanged (files=13 sites=136; ANSWER=70 CHANNEL=36 LITERAL=3 EMPTY=6
STRICT=7 TODO=14; selftest 13/13). No other child .sh uses a bash-4/make-3.82
construct. Also stamps CLAUDE.md Latest-release to v0.43.0 now that the tag
exists (doc_drift_check gates it against the latest tag).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Kpzyjv1SaLaqBf45FSFDhB
@InauguralPhysicist
InauguralPhysicist merged commit a6c50fb into main Sep 6, 2026
20 checks passed
@InauguralPhysicist
InauguralPhysicist deleted the fix-failsoft-bash32 branch September 6, 2026 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant