mirror of
https://github.com/backnotprop/plannotator.git
synced 2026-09-14 14:17:26 +08:00
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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user