fix(ci): bump Bun build pin to 1.3.14 for sandbox env loading (#1249) (#1250)

Bun <= 1.3.11 loads an empty process.env when a cwd ancestor directory
is unreadable, the normal state inside OS sandboxes (Seatbelt/Landlock):
every released binary silently ignored all PLANNOTATOR_* env vars there
(oven-sh/bun#27802, fixed in 1.3.13). The 1.3.11 pin existed for the
Bun 1.3.12 cross-compile signing regression (#541, binaries SIGKILLed
on macOS); verified gone on 1.3.14: cross-compiled darwin-arm64 output
carries the same linker-signed CodeDirectory as the known-good shipped
binaries and executes cleanly on macOS 26.3, and the unreadable-ancestor
env repro passes on a 1.3.14 build.

Guardrails so neither regression class can ship silently again: the
release smoke matrix gains a macOS arm64 leg (executing the binary is
the signing assertion), and a new smoke step runs the annotate server
from a cwd with an unreadable ancestor, where responding on the fixed
PLANNOTATOR_PORT proves env vars were read.
This commit is contained in:
Michael Ramos
2026-08-09 21:06:26 -07:00
committed by GitHub
parent 9c40ffadcc
commit e53a933106
+27 -4
View File
@@ -29,7 +29,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.11
bun-version: 1.3.14
- name: Install dependencies
run: bun install
@@ -61,7 +61,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.11
bun-version: 1.3.14
- name: Install dependencies
run: bun install
@@ -139,6 +139,12 @@ jobs:
binary: plannotator-linux-x64
- os: windows-latest
binary: plannotator-win32-x64.exe
# macOS leg exists so a Bun cross-compile signing regression (the
# 1.3.12 linker-signature loss, #541: binaries SIGKILLed on launch)
# can never ship silently again. Executing the binary at all is the
# assertion; the env smoke below rides along.
- os: macos-latest
binary: plannotator-darwin-arm64
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
@@ -288,6 +294,23 @@ jobs:
# 4. terminal: exercises managed WebTUI runtime + compiled sidecar import.
smoke_test_agent_terminal
# 5. #1249 regression: env vars must load even when a cwd ancestor
# is unreadable (the OS-sandbox case: the project dir is granted but
# an ancestor is not). Bun <= 1.3.11 loaded an EMPTY process.env
# there, silently ignoring every PLANNOTATOR_* variable. The server
# responding on the fixed PLANNOTATOR_PORT proves the variable was
# actually read from inside the guarded cwd.
guard_root="$(mktemp -d)"
mkdir -p "$guard_root/parent/child"
printf '# env smoke\n' > "$guard_root/parent/child/doc.md"
chmod 311 "$guard_root/parent"
(
cd "$guard_root/parent/child"
smoke_test_server "annotate under unreadable ancestor" 19503 "/api/plan" \
"$GITHUB_WORKSPACE/$BINARY" annotate doc.md
)
chmod 755 "$guard_root/parent"
- name: Smoke-test binary
if: runner.os == 'Windows'
shell: pwsh
@@ -650,7 +673,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.11
bun-version: 1.3.14
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with:
@@ -912,7 +935,7 @@ jobs:
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0
with:
bun-version: 1.3.11
bun-version: 1.3.14
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
with: