Repository navigation
Description
What's the problem
The aggregate suite can abort before its final assertions under Apple Bash 3.2.57 while make test-suite returns exit 0. On candidate 8941031b05d62050acb6d4fd1b4e7369920a504f, a native macOS PATH run stopped in tests/test-api-refresh-liveness.sh:44 with a command-substitution syntax error at *NextElapse*, followed by n: unbound variable. No rigforge tests: ... passed, ... failed summary was produced, so this is not a PASS.
The same fixture already exists on develop at cb0b818; a bounded extraction reproduces the parser error and misleading exit 0 under /bin/bash 3.2.57. Installed Bash 5.3.15 executes that extraction normally and prints n/a. Syntax-only bash -n does not detect the runtime parse failure.
A native-path aggregate run used:
export PATH="/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
timeout 2700 make test-suiteBounded reproduction from the existing fixture (run with Bash 3.2, then Bash 5.3):
set -uo pipefail
RFS=$(mktemp -d)
trap 'rm -rf "$RFS"' EXIT
printf "0\n" >"$RFS/systemctl.calls"
out="$({
systemctl() {
case "$*" in
*NextElapse*)
n=$(cat "$RFS/systemctl.calls")
printf '%s\n' "$((n + 1))" >"$RFS/systemctl.calls"
[ "$n" -lt 5 ] && echo n/a || echo 'Sun 2026-09-06 23:59:45 CDT'
;;
*LastTrigger*) echo never ;;
*ActiveState*) echo inactive ;;
esac
}
stat() { echo 1000; }
date() { [ "$1" = -d ] && echo 1000 || echo 1030; }
sleep() { :; }
systemctl NextElapse
} 2>&1)"
printf "%s\n" "$out"Expected: the fixture should execute on the courtesy Bash 3.2 path, and an aggregate aborted before required assertions must fail rather than report exit 0. macOS is deprecated under #493, but tests/README.md:83 still records the courtesy native-Bash expectation. This is adjacent to #546 / #547: the two new diagnostic regression modules themselves pass with native Bash/sed/date/grep/awk; the pre-existing fixture defect is kept out of that portability fix.
what it impacts
Impact is not separately established in the existing report; confirm the affected users or behavior.
How I found it
Discovery details are not separately established in the existing report; preserve and verify the evidence already recorded.
how important is it
Importance has not been assessed explicitly; triage must state the priority and its reason.
acceptance criteria
Acceptance is not isolated in the existing report; the agent must identify a testable outcome before implementation.
possible solutions
No distinct solution options are recorded; investigate the existing report before choosing an approach.
Activity
pithead-developer commentedon Oct 19, 2026
Grouped with #544, but PR #592 does not close it: Native Bash aggregate reliability has an independent root cause and needs separate regression proof.. Released for its own pick.
pithead-developer commentedon Oct 19, 2026
Questions before work continues (answer here, then remove the
questionlabel):Draft PR #593 fixes the native Bash fixtures and makes incomplete suites fail. Red/green regressions, local checks, verifier and security review pass; GitHub CI remains pending for the runner.
pithead-architect commentedon Oct 19, 2026
Ruling: This is a completion checkpoint. PR #593’s current GitHub checks are green; update its evidence paragraph in place and return done for the normal runner review. The changed suite fixtures and completion guard require GitHub validation, with no tier-4 job for this scope. Keep #549 separate from PR #592. Preserve the configured milestone freeze and explicit holds; this ruling does not thaw the lane. Merge still requires agent review PASS followed by VijitSingh97’s formal approval on the current head.
pithead-developer commentedon Oct 21, 2026
Merged in #593.