Skip to content

build(harness): rebase the harness onto OpenCode 1.19.4 - #1959

Merged
marcusrbrown merged 2 commits into
mainfrom
build/harness-1.19.4
Oct 27, 2026
Merged

marcusrbrown merged 2 commits into
mainfrom
build/harness-1.19.4

Conversation

@marcusrbrown

Copy link
Copy Markdown
Collaborator

Moves the harness base from OpenCode 1.19.0 to 1.19.4 and keeps all 15 carries. The @opencode-ai/sdk bump to 1.19.4 is in the same PR, so the server and the SDK move together.

Carries. None was merged upstream, and none has met its removal condition. I simulated merging the carries onto the v1.19.4 tag in config order, and the result matches the one at 1.19.0:

The conflicting files and hunk counts match the ledger. No carry head pulls extra commits onto the tag.

Upstream changes between 1.19.0 and 1.19.4 that matter here. Most of the code the Action, gateway and runtime use is unchanged: tool/task.ts, the session, permission, question and storage code, the /event handler (server.connected is still emitted first), the SDK's lazy SSE stream and its opencode serve spawn, the database migrations and instance dispose. Four things did change:

  • Bun. Upstream's packageManager moved from bun@1.3.14 to bun@1.4.4. The harness build requires an exact match, so HARNESS_BUN_VERSION, the harness-release bun-version inputs and the Renovate Bun cap move to 1.4.4. The existing drift test keeps those three in step.
  • Update check. It now reads npm for every install method and ignores build metadata, so <base>+harness.<sha> no longer counts as older than <base>. opencode serve still never runs the check. The harness README is corrected.
  • Session sharing is discontinued upstream. We don't use it.
  • reasoning_options is a new optional provider option. It is additive, and type checks stay clean.

script/build.ts adds --libc="*" to its native installs. The build-platform patch still applies, which I checked against the real v1.19.4 file.

Live checks against stock 1.19.4. These are the same as on 1.19.0:

  • the event subscription is lazy, events aren't replayed, and server.connected is the first frame;
  • /instance/dispose refreshes a stale file listing;
  • the question tool isn't registered with OPENCODE_CLIENT=fro-bot-action;
  • an early abort is honoured on a warm server.

On a cold server, meaning the first prompt the process handles, an early abort isn't honoured, and that is true on 1.19.0 as well. #1958 tracks it.

Other changes:

  • The Renovate cap for anomalyco/opencode and @opencode-ai/sdk moves to <=1.19.4.
  • The clonedeps manifest and the AGENTS.md source pins move to v1.19.4. So does the wiki's source pin, and the carry ledger's verified version and line references.
  • The build-platform verification note and the provenance test expectation are updated.
  • DEFAULT_OPENCODE_VERSION and the workspace image pin move when harness-release syncs them after publish.

The SDK's request and event-stream code is unchanged between 1.19.0 and 1.19.4 (the lazy SSE client, `sseMaxRetryAttempts`/`onSseError`, and the `opencode serve` spawn); the v2 types gain an optional `reasoning_options` on provider models. The lockfile change is limited to the SDK entry; dist/THIRD_PARTY_NOTICES.txt carries the new version.
Moves the harness base from OpenCode 1.19.0 to 1.19.4 and keeps all 15 carries. A merge simulation onto the v1.19.4 tag in config order matches the one onto v1.19.0 exactly: nine carries merge cleanly, three have the trivial conflicts the ledger describes (anomalyco/opencode#31922, #33713, #47430), and three need the resolver (#19961, #33134, #33159). The conflicting files and hunk counts are identical, and no carry head drags extra commits onto the tag. None of the carries is merged upstream and no removal condition is met.

The code the Action, gateway and runtime consume is unchanged between the tags: `tool/task.ts`, the session files, the server event handler, the SDK's SSE client and `opencode serve` spawn, and the database migrations. What changed upstream: session sharing was discontinued (the share routes stay, and sharing fails), configured `reasoning_options` build provider variants, the update check now reads npm for every install method and only counts a newer 1.x release as an update, and `script/build.ts` installs the musl native packages explicitly because Bun 1.4.4 skips the other libc by default.

Bun moves to 1.4.4 because upstream's `packageManager` does. The harness build gate requires an exact match, so `HARNESS_BUN_VERSION`, both `bun-version` inputs in `harness-release.yaml` (the drift-guard test requires them to match) and the Renovate Bun cap move together. The `build-platform` singleFlag patch applies unchanged to the v1.19.4 `build.ts`.

Also moved: the Renovate cap for `anomalyco/opencode` and `@opencode-ai/sdk` (`<=1.19.4`), the clonedeps manifest and AGENTS.md source pins, the carry ledger's verified version and status lines, the harness README's update-check description, and the `build-platform` verification note and provenance test.

`DEFAULT_OPENCODE_VERSION` and the workspace image pin move when `harness-release` syncs them after publish.

@fro-bot fro-bot left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: PASS

No actionable regression found in the 15-file diff. SDK manifests and lockfile agree on 1.19.4; release-job Bun pins match upstream's 1.4.4 declaration. The upstream target-selection block remains compatible with the harness patch.

Blocking issues

None

Non-blocking concerns

None

Missing tests

None identified for the changed pins. Existing provenance, pin-invariant, carry-ledger, and build-platform tests cover the relevant contracts. Tests were inspected, not executed.

Risk assessment (MED): likelihood of regression, security exposure, or blast radius

The upstream runtime and Bun compiler change has release-wide reach, though this diff introduces no new permissions or public API changes. Carry integration and platform binaries still depend on CI/release validation; the author's live probes were not independently reproduced.


Run Summary
Field Value
Event pull_request
Repository fro-bot/agent
Run ID 40465701590
Cache hit
Session ses_e83c8f37bffew4aH0pOkFsU77E
Scope All 15 changed files and relevant build/release/test context; checkout unchanged
Verification Static review and upstream tagged-source inspection; no build, lint, type-check, or test suite executed
Focused probe bun --version reported 1.3.14. bun install --help and bun install '--libc=*' --help inspected flag handling; bun install '--libc=*' --dry-run --ignore-scripts --no-save exited successfully, ruling out immediate argument rejection, not proving upstream build compatibility
Review tooling Three read-only reviewer passes returned no findings; packaged synthesis validation was unavailable because reference access was denied, so their payloads were withheld from formal synthesis. Verdict is based on direct source inspection

@marcusrbrown
marcusrbrown merged commit 7c389d6 into main Oct 27, 2026
15 checks passed
@marcusrbrown
marcusrbrown deleted the build/harness-1.19.4 branch October 27, 2026 07:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants