diff --git a/.github/workflows/evals-periodic.yml b/.github/workflows/evals-periodic.yml index 707c2221c..9713a4600 100644 --- a/.github/workflows/evals-periodic.yml +++ b/.github/workflows/evals-periodic.yml @@ -113,7 +113,7 @@ jobs: - name: Emit run manifest (ALL periodic tests minus reasoned excludes) env: EVALS_ALL: "1" - run: EVALS_TIER=periodic bun --no-install run scripts/test-paid-shards.ts --tier periodic --emit-plan /tmp/paid-plan/manifest.json --slice-budget 540 --jobs 2 --max-parallel 24 + run: EVALS_TIER=periodic bun --no-install run scripts/test-paid-shards.ts --tier periodic --emit-plan /tmp/paid-plan/manifest.json --slice-budget 540 --jobs 2 --max-parallel 25 - name: Derive the periodic executor matrix from the plan id: periodic-matrix @@ -166,7 +166,7 @@ jobs: fail-fast: false # Every planned slice starts at once; test/evals-workflow-wiring.test.ts # fails when the live plan outgrows this cap. - max-parallel: 24 + max-parallel: 25 matrix: slice: ${{ fromJSON(needs.plan-slices.outputs.periodic_slices) }} steps: diff --git a/bin/gstack-slug b/bin/gstack-slug index 51b0c902b..3865b8973 100755 --- a/bin/gstack-slug +++ b/bin/gstack-slug @@ -65,6 +65,11 @@ # # Security: output is sanitized to [a-zA-Z0-9._-] only, preventing shell # injection when consumed via source or eval. +# Bash 5.2+ can feed a heredoc body >=512B through a pipe with no reader +# yet, which hangs --help forever; compat level 50 restores the tempfile path +# (same guard as bin/gstack-artifacts-init). Not exported. +BASH_COMPAT=50 + set -euo pipefail # State-root aware (bin/gstack-state-root.sh), matching lib/bin-context.ts (#2561): the diff --git a/test/eng-finding-retry-budget.test.ts b/test/eng-finding-retry-budget.test.ts index 7ee125f7f..f3966fcde 100644 --- a/test/eng-finding-retry-budget.test.ts +++ b/test/eng-finding-retry-budget.test.ts @@ -139,7 +139,7 @@ test('live periodic census fits the declared CI wall including setup', () => { test('registered allocation is deterministic and preserves every discovered file', () => { const files = collectPaidTestFiles(); - expect(files).toHaveLength(106); + expect(files).toHaveLength(107); expect(files).toContain('test/skill-e2e-ship-skip.test.ts'); const m = livePlan(files); expect(livePlan([...files].reverse())).toEqual(m); diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md index 49c89d309..cddee5bef 100644 --- a/test/fixtures/golden/codex-ship-SKILL.md +++ b/test/fixtures/golden/codex-ship-SKILL.md @@ -1576,9 +1576,9 @@ You are running a ship-workflow plan completion audit. The base branch is `/dev/null || true # zsh compat BRANCH=$(git branch --show-current 2>/dev/null | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') REPO=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)") -_PLAN_SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*[:/]\([^/]*/[^/]*\)\.git$|\1|;s|.*[:/]\([^/]*/[^/]*\)$|\1|' | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') || true -_PLAN_SLUG="${_PLAN_SLUG:-$(basename "$PWD" | tr -cd 'a-zA-Z0-9._-')}" eval "$($GSTACK_ROOT/bin/gstack-paths)"; : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}" +_PLAN_SLUG=$($GSTACK_ROOT/bin/gstack-slug 2>/dev/null | sed -n 's/^SLUG=//p') || true +_PLAN_SLUG="${_PLAN_SLUG:-$(basename "$PWD" | tr -cd 'a-zA-Z0-9._-')}" for PLAN_DIR in "$GSTACK_STATE_ROOT/projects/$_PLAN_SLUG" "$HOME/.claude/plans" "$HOME/.codex/plans" ".gstack/plans"; do [ -d "$PLAN_DIR" ] || continue PLAN=$(ls -t "$PLAN_DIR"/*.md 2>/dev/null | xargs grep -l "$BRANCH" 2>/dev/null | head -1) diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md index d1171d146..69d5dacc2 100644 --- a/test/fixtures/golden/factory-ship-SKILL.md +++ b/test/fixtures/golden/factory-ship-SKILL.md @@ -1556,9 +1556,9 @@ You are running a ship-workflow plan completion audit. The base branch is `/dev/null || true # zsh compat BRANCH=$(git branch --show-current 2>/dev/null | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') REPO=$(basename "$(git rev-parse --show-toplevel 2>/dev/null)") -_PLAN_SLUG=$(git remote get-url origin 2>/dev/null | sed 's|.*[:/]\([^/]*/[^/]*\)\.git$|\1|;s|.*[:/]\([^/]*/[^/]*\)$|\1|' | tr '/' '-' | tr -cd 'a-zA-Z0-9._-') || true -_PLAN_SLUG="${_PLAN_SLUG:-$(basename "$PWD" | tr -cd 'a-zA-Z0-9._-')}" eval "$($GSTACK_ROOT/bin/gstack-paths)"; : "${GSTACK_STATE_ROOT:?gstack-paths failed; reinstall with ./setup or /gstack-upgrade}" +_PLAN_SLUG=$($GSTACK_ROOT/bin/gstack-slug 2>/dev/null | sed -n 's/^SLUG=//p') || true +_PLAN_SLUG="${_PLAN_SLUG:-$(basename "$PWD" | tr -cd 'a-zA-Z0-9._-')}" for PLAN_DIR in "$GSTACK_STATE_ROOT/projects/$_PLAN_SLUG" "$HOME/.claude/plans" "$HOME/.codex/plans" ".gstack/plans"; do [ -d "$PLAN_DIR" ] || continue PLAN=$(ls -t "$PLAN_DIR"/*.md 2>/dev/null | xargs grep -l "$BRANCH" 2>/dev/null | head -1)