Skip to content

Commit a16f6a6

Browse files
ufukaltinokalfonso-magic-context
authored andcommitted
ci: float opencode to latest in host-e2e instead of pinning 1.15.4
CI pinned opencode to a fixed version (1.15.4), so CI never ran the version users actually run — which is exactly why opencode 1.16's post-overflow change (commit 7e09660c3) wasn't caught when 1.16.0 shipped, only at our release time when I had to downgrade locally to pass the gate. A gate that doesn't track the real runtime can't catch upstream regressions. Switch all five host-e2e opencode installs (ci.yml x2, release.yml x2, smoke-opencode-linux.yml) from a hard "--version 1.15.4" pin to floating latest (no --version flag). The original pin worked around a 1.15.5 linux-amd64 serve-startup hang; 1.16.x is the current line and the overflow-recovery test is now version-agnostic, so the host suite passes on it (44/44 locally on 1.16.0). Trade-off documented inline: a known-bad upstream opencode release can now turn CI red for unrelated PRs — that's the correct signal (users would hit it too), and the escape hatch is a temporary "--version X.Y.Z" re-pin until upstream fixes it. SDK dep bump (@opencode-ai/* ^1.15.13 -> ^1.16.x) is deferred until the 3-day min-release-age gate clears on Jun 08 (all 1.16.x published Jun 05); not blocking since the overflow change is in the opencode binary, not the SDK API. Co-authored-by: Alfonso [Magic Context] <288211368+alfonso-magic-context@users.noreply.github.com>
1 parent 2124bfa commit a16f6a6

3 files changed

Lines changed: 23 additions & 25 deletions

File tree

.github/workflows/ci.yml

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -198,14 +198,16 @@ jobs:
198198
# Install opencode the same way the Docker image does — the host
199199
# suite spawns `opencode serve` from PATH.
200200
- name: Install opencode
201-
# NOTE: pinned to 1.15.4 because opencode 1.15.5 on linux-amd64
202-
# never responds to HTTP /doc after stdout reports "server listening",
203-
# despite "Database migration complete." printing. waitForReady() in
204-
# our test harness then times out at 5 min, killing every test in
205-
# the suite. The same 1.15.5 binary works on macOS. Once a working
206-
# newer release ships, drop the --version pin or move it up.
201+
# Float to LATEST (no --version) so CI exercises the opencode version
202+
# users actually run and catches upstream breakage as it ships — not at
203+
# our release time. (A fixed pin previously hid opencode 1.16's
204+
# post-overflow change, commit 7e09660c3, until release; the
205+
# overflow-recovery host test is now version-agnostic.) Trade-off: a
206+
# known-bad upstream release can turn CI red for unrelated PRs — if that
207+
# happens, temporarily re-pin with `--version X.Y.Z` here until it's
208+
# resolved upstream.
207209
run: |
208-
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.15.4
210+
curl -fsSL https://opencode.ai/install | bash
209211
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
210212
211213
- name: Verify opencode on PATH
@@ -259,14 +261,11 @@ jobs:
259261

260262
# pi-cross-harness.test.ts spawns BOTH a Pi runner and an OpenCode
261263
# serve to verify cross-harness memory sharing, so this job needs
262-
# opencode on PATH too — same PINNED version the OpenCode host job uses.
263-
# Pin to 1.15.4: opencode 1.15.5 on linux-amd64 never responds to HTTP
264-
# /doc after stdout reports "server listening", so waitForReady() times
265-
# out and the cross-harness test hangs (same hang the OpenCode host job
266-
# pins around). Keep both jobs on the same version.
264+
# opencode on PATH too. Float to LATEST like the OpenCode host job
265+
# (see that step for the rationale + re-pin escape hatch).
267266
- name: Install opencode
268267
run: |
269-
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.15.4
268+
curl -fsSL https://opencode.ai/install | bash
270269
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
271270
272271
- name: Verify opencode on PATH

.github/workflows/release.yml

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -212,11 +212,10 @@ jobs:
212212
# Install opencode the same way the Docker image does — the host
213213
# suite spawns `opencode serve` from PATH.
214214
- name: Install opencode
215-
# NOTE: pinned to 1.15.4 because opencode 1.15.5 on linux-amd64
216-
# never responds to HTTP /doc after stdout reports "server listening".
217-
# See ci.yml for the same pin and details.
215+
# Float to LATEST (the version users run). See ci.yml for the rationale
216+
# + re-pin escape hatch for known-bad upstream builds.
218217
run: |
219-
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.15.4
218+
curl -fsSL https://opencode.ai/install | bash
220219
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
221220
222221
- name: Verify opencode on PATH
@@ -263,14 +262,11 @@ jobs:
263262

264263
# pi-cross-harness.test.ts spawns BOTH a Pi runner and an OpenCode
265264
# serve to verify cross-harness memory sharing, so this job needs
266-
# opencode on PATH too — same PINNED version the OpenCode host job uses.
267-
# Pin to 1.15.4: opencode 1.15.5 on linux-amd64 never responds to HTTP
268-
# /doc after stdout reports "server listening", so waitForReady() times
269-
# out and the cross-harness test hangs (same hang the OpenCode host job
270-
# pins around). Keep both jobs on the same version.
265+
# opencode on PATH too. Float to LATEST like the OpenCode host job
266+
# (see ci.yml for the rationale + re-pin escape hatch).
271267
- name: Install opencode
272268
run: |
273-
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.15.4
269+
curl -fsSL https://opencode.ai/install | bash
274270
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
275271
276272
- name: Verify opencode on PATH

.github/workflows/smoke-opencode-linux.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,12 @@ jobs:
4949
with:
5050
bun-version: latest
5151

52-
- name: Install opencode (1.15.4 pin matches host e2e)
52+
- name: Install opencode (latest — matches host e2e)
53+
# Float to latest: this smoke job exists to catch a Linux serve-startup
54+
# regression, so it must run the version users get. See ci.yml host job
55+
# for the re-pin escape hatch if an upstream build is known-bad.
5356
run: |
54-
curl -fsSL https://opencode.ai/install | bash -s -- --version 1.15.4
57+
curl -fsSL https://opencode.ai/install | bash
5558
echo "$HOME/.opencode/bin" >> "$GITHUB_PATH"
5659
5760
- name: Verify opencode binary

0 commit comments

Comments
 (0)