fix(ci): unblock the check job — shellcheck OOM + missing dashboard dep install#52
Conversation
…llowing CI's `check` job has been red on main since ~May 28 (macos-15-arm64 runner image 20260527): the shellcheck step was SIGKILLed after ~76 min. Root cause: shellcheck follows a `source` statement whenever the target is also in the input list — regardless of `-x`. bin/subctl sources the entire lib/ tree, so the single xargs invocation built a combinatorial source graph rooted at bin/subctl and ran away (~76 min → OOM on the lower-RAM runner; merely slow locally, which is why it wasn't caught). Fix: - Check bin/subctl in its own invocation, alone, without -x (no source targets co-present → ~0.2s, no graph explosion). - Give the 6 no-shebang sourced libs a `# shellcheck shell=bash` directive so they pass standalone without bin/subctl's -x context (the idiomatic SC2148 fix for sourced fragments). Validated locally on shellcheck 0.11.0 / macos-15-arm64 (identical to the runner): batch 5.5s + bin/subctl 0.2s, both exit 0; previously 76-min OOM. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughThe PR reconfigures shellcheck linting to prevent out-of-memory failures on macOS: the CI workflow splits shellcheck execution (batch checking all scripts except ChangesShellCheck Configuration
🎯 2 (Simple) | ⏱️ ~10 minutes
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
The "Build-check dashboard" step ran `bun build` with no prior install, so imports (@earendil-works/pi-ai, smol-toml, shell-quote) couldn't resolve. It failed every run but was masked for a week behind the shellcheck OOM at the earlier step. Install both workspaces (committed bun.lock lockfiles) before building. Validated locally: frozen installs exit 0 (lockfiles in sync); the exact CI command `bun build dashboard/server.ts` bundles 2006 modules; deck `go vet ./...` + `go build` also pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CI's
checkjob has been red onmainsince ~May 28. Because the job is sequential, a single early failure masked everything after it. This PR fixes the chain so the job runs green end-to-end.Fix 1 — shellcheck OOM (the visible failure)
The Shellcheck step ran ~76 min then
signal 9(OOM). Root cause: shellcheck follows asourcestatement whenever the target is also in the input list, regardless of-x.bin/subctlsources the wholelib/tree, so the singlexargsinvocation built a runaway source graph. Themacos-15-arm64image rotation (20260527) lowered RAM headroom enough to tip slow→OOM (matching the onset).bin/subctlin its own invocation, without-x(no source targets co-present → ~0.2s).# shellcheck shell=bashto the 6 no-shebang sourced libs so they pass standalone.✅ Confirmed on the runner: in the first #52 run the Shellcheck step went green and the job reached the next step in ~30s.
Fix 2 — dashboard build-check had no
bun install(masked downstream failure)With shellcheck unblocked, the next step failed:
bun build dashboard/server.tswith no prior install →Could not resolve: @earendil-works/pi-ai / smol-toml / shell-quote. This had been failing the whole time, hidden behind the OOM.bun install --frozen-lockfileforcomponents/evyanddashboard(both have committedbun.lock) before the build-check.Validation (local, runner-identical env)
bin/subctl0.2s, both exit 0 (was 76-min OOM)bun build dashboard/server.ts: bundles 2006 modulesgo vet ./...+go build: exit 0🤖 Generated with Claude Code
Summary by CodeRabbit