fix(ci): one bun version everywhere + drift tripwire

Lanes disagreed four ways: 1.3.13 (free-tests, windows, Dockerfile.ci),
latest (quality-gate, make-pdf-gate), unpinned (skill-docs,
version-gate — setup-bun installs latest), 1.3.10 (.gitlab-ci.yml).
Different Bun versions change the runner output shapes the strict
classifiers regex-match, spawn semantics, and shell parsing — a lane on
a different Bun tests a different product; Dockerfile.ci's own comment
records this class biting once already (silent 1.3.13/1.3.14 drift).

All surfaces pinned to 1.3.13; test/bun-version-drift.test.ts scans
every workflow setup-bun stanza + Dockerfile.ci + .gitlab-ci.yml and
fails on any mismatch or unpinned stanza. skill-docs also gains
--frozen-lockfile (was bare bun install).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-08-29 04:40:41 +00:00
co-authored by Claude Fable 5
parent e2904be7a4
commit ace904d40a
6 changed files with 84 additions and 4 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ jobs:
- uses: oven-sh/setup-bun@v2
with:
bun-version: latest
bun-version: 1.3.13
- name: Install dependencies
run: bun install --frozen-lockfile
+1 -1
View File
@@ -36,7 +36,7 @@ jobs:
fetch-depth: 0
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: latest
bun-version: 1.3.13
- name: Install frozen dependencies
run: bun install --frozen-lockfile --ignore-scripts
+3 -1
View File
@@ -26,7 +26,9 @@ jobs:
steps:
- uses: actions/checkout@v7
- uses: oven-sh/setup-bun@v2
- run: bun install
with:
bun-version: 1.3.13
- run: bun install --frozen-lockfile
# One generation pass for ALL 10 hosts. gen-skill-docs --host all
# hard-fails on any per-host generation error (scripts/gen-skill-docs.ts
# aggregates failures and exits non-zero), so every host is gated on
+2
View File
@@ -27,6 +27,8 @@ jobs:
- name: Setup Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: 1.3.13
- name: Read versions
id: versions