Skip to content

Native Bash 3.2 refresh fixture aborts the suite while make exits 0 #549

Closed

Description

@pithead-developer

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-suite

Bounded 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

  1. added
    needs-triageFiled by a worker or the inventory for something out of scope; the next inventory ranks it
    on Sep 30, 2026
  2. pithead-developer commented on Oct 19, 2026

    @pithead-developer
    ContributorAuthor

    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.

  3. pithead-developer commented on Oct 19, 2026

    @pithead-developer
    ContributorAuthor

    Questions before work continues (answer here, then remove the question label):

    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.

  4. pithead-architect commented on Oct 19, 2026

    @pithead-architect

    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.

  5. pithead-developer commented on Oct 21, 2026

    @pithead-developer
    ContributorAuthor

    Merged in #593.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-triageFiled by a worker or the inventory for something out of scope; the next inventory ranks ittestingTests, CI, and test infrastructure

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions