Skip to content

chore(ci): diagnostic — toolchain banner + store-check failure detail - #14

Merged
Atri10 merged 2 commits into
mainfrom
ci/diagnose-storecheck
Sep 29, 2026
Merged

Atri10 merged 2 commits into
mainfrom
ci/diagnose-storecheck

Conversation

@Atri10

@Atri10 Atri10 commented Sep 29, 2026

Copy link
Copy Markdown
Owner

Temporary diagnostic, not for merge. The macOS runner fails 16 checks that pass on both my macOS and ubuntu; the log records only which failed, not why. This adds a one-time toolchain banner and makes two assertions carry the tool's own output, so the log carries the answer. Will be closed once the cause is found.

Not for merge. Adds a one-time toolchain banner to the suite and makes two
store-check assertions report the tool's own output, so the macOS runner's
CI log says WHY 16 checks fail there instead of only which.
The macOS CI job failed 16 checks that pass on my machine AND on Ubuntu.
The log named which tests failed but not why, so this carries a one-time
toolchain banner and makes the store-check assertions report the tool's own
output — a failing test should say why, and a suite that only passes on the
author's machine should say what it is running against.

Cause: 'declare -A LISTED=()' in exec-store-check. Associative arrays are
bash 4.0+, and the scripts use '#!/usr/bin/env bash' — which on a stock
macOS resolves to /bin/bash 3.2, the same 3.2.57 the GitHub macOS runner
has. Under 3.2 that declaration is a hard error, and because the script
runs under 'set -e' it died on that line: every I1/I2/I3 check after it
never ran, so a perfectly clean store was reported as rejected, sixteen
times over. Nothing in the output said so.

It was the only bash 4.0+ construct in the codebase; a scan for mapfile,
readarray, coproc, ;;& and others found nothing else. Replaced the
associative array with a newline-delimited set — same job, works in 3.2 —
with a whole-line membership test so INIT-0001-P01 never matches
INIT-0001-P011, which a bare substring test would.

Verified: 123/123 on /bin/bash 3.2.57 AND on bash 5.3. A new assertion
guards the floor by scanning the shipped scripts for bash 4.0+ constructs.
The suite's own compatibility is enforced by the macos-latest matrix job,
which runs it on the stock 3.2 interpreter.
@Atri10
Atri10 merged commit 7f82c0b into main Sep 29, 2026
6 checks passed
@Atri10
Atri10 deleted the ci/diagnose-storecheck branch September 29, 2026 09:56
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