feat(ci): build binary from overlay, retire fork workflows (#1096) - #1111
Merged
Merged
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
jeonghun-jj-lee
force-pushed
the
jj/1096-ci-cutover
branch
3 times, most recently
from
September 13, 2026 23:48
550a01b to
6c592cc
Compare
Replace fork-download binary provisioning with overlay-build in CI: - Add build-binary job; consumers use needs + download-artifact - release.yml builds from overlay, not fork release - Delete prepare-release-candidate.yml and overlay-promotion-bot.yml - Add .buildinfo sidecar for channel assertion - Update package script to use build:binary - build_binary.mjs gains --platform flag for cross-compilation - assert_ui_gate.sh reads .buildinfo for channel verification - app-bundle-gate verifies provenance via lock.version + upstream_base_sha Secret removal (OPENCODE_FETCH_TOKEN, REPO_ACCESS_TOKEN) is deferred to after alpha validation — a separate manual step. Part of fork-absorption campaign #1091. Answers #843.
jeonghun-jj-lee
force-pushed
the
jj/1096-ci-cutover
branch
from
September 13, 2026 23:54
6c592cc to
8edba9d
Compare
jeonghun-jj-lee
marked this pull request as ready for review
September 14, 2026 00:00
jeonghun-jj-lee
merged commit Sep 14, 2026
43a5c88
into
jj/1091-absorb-opencode-fork
10 of 11 checks passed
This was referenced Sep 14, 2026
jeonghun-jj-lee
pushed a commit
that referenced
this pull request
Sep 16, 2026
The fork-absorption (#1114) moved the opencode engine into the overlay but left it with NO CI test/typecheck coverage: packages/app-bundle/overlay/ packages/opencode is not a pnpm workspace member (pnpm-workspace.yaml globs packages/* non-recursively), so the `fast` job's `pnpm -r run typecheck` skips it. The fork ran `bun turbo typecheck`/`bun turbo test`; the cutover (S4 #1111) never ported them. Engine type regressions have merged unseen. This restores the engine typecheck as a standalone `engine-tests` CI job (materialize the full tree -> bun install -> opencode typecheck), the fork's typecheck.yml scoped to the engine. Green-up (pre-existing errors on dev the gate caught): - src/session/lineage.ts: `.filter((id): id is string ...)` must narrow to `id is SessionID` (the branded column type); 4 cascading errors cleared. - test/session/prompt.test.ts: MCP mock omitted `remove`, now required by the overlaid MCP.Interface — add `remove: () => Effect.void`. - test/provider/transform.test.ts: cast content elements `as any` before reading `.type` (matches this file's own convention at :3138) — the Part-union widening from a recent dev merge left these two assertions behind. Three remaining typecheck errors are a base-pin drift (manifest upstream_base_sha=7fe9938 predates the base the overlay was authored against): allowlisted in the gate script by file+rule, tracked in #1229. New errors outside the allowlist fail CI (verified: injected error reds; allowlisted-only passes). The gate is fail-closed (reds if tsgo did not execute). Also: `pnpm test:engine` local entrypoint + AGENTS.md verification-gates row. manifest.json refreshed for the overlay edits (drift_gate PASS). Deferred, tracked: - #1229 base-pin bump -> unlocks full-monorepo typecheck (ui/app also drift). - #1233 engine unit-TEST lane (bun turbo test + test:httpapi) -> blocked on real amicode test fixes (amicode-connections.test.ts failures + hook-timeout slowness). Refs #1228
jeonghun-jj-lee
pushed a commit
that referenced
this pull request
Sep 16, 2026
The fork-absorption (#1114) moved the opencode engine into the overlay but left it with NO CI test/typecheck coverage: packages/app-bundle/overlay/ packages/opencode is not a pnpm workspace member (pnpm-workspace.yaml globs packages/* non-recursively), so the `fast` job's `pnpm -r run typecheck` skips it. The fork ran `bun turbo typecheck`/`bun turbo test`; the cutover (S4 #1111) never ported them. Engine type regressions have merged unseen. This restores the engine typecheck as a standalone `engine-tests` CI job (materialize the full tree -> bun install -> opencode typecheck), the fork's typecheck.yml scoped to the engine. Green-up (pre-existing errors on dev the gate caught): - src/session/lineage.ts: `.filter((id): id is string ...)` must narrow to `id is SessionID` (the branded column type); 4 cascading errors cleared. - test/session/prompt.test.ts: MCP mock omitted `remove`, now required by the overlaid MCP.Interface — add `remove: () => Effect.void`. - test/provider/transform.test.ts: cast content elements `as any` before reading `.type` (matches this file's own convention at :3138) — the Part-union widening from a recent dev merge left these two assertions behind. Three remaining typecheck errors are a base-pin drift (manifest upstream_base_sha=7fe9938 predates the base the overlay was authored against): allowlisted in the gate script by file+rule, tracked in #1229. New errors outside the allowlist fail CI (verified: injected error reds; allowlisted-only passes). The gate is fail-closed (reds if tsgo did not execute). Also: `pnpm test:engine` local entrypoint + AGENTS.md verification-gates row. manifest.json refreshed for the overlay edits (drift_gate PASS). Deferred, tracked: - #1229 base-pin bump -> unlocks full-monorepo typecheck (ui/app also drift). - #1233 engine unit-TEST lane (bun turbo test + test:httpapi) -> blocked on real amicode test fixes (amicode-connections.test.ts failures + hook-timeout slowness). Refs #1228
jeonghun-jj-lee
pushed a commit
that referenced
this pull request
Sep 16, 2026
The fork-absorption (#1114) moved the opencode engine into the overlay but left it with NO CI test/typecheck coverage: packages/app-bundle/overlay/ packages/opencode is not a pnpm workspace member (pnpm-workspace.yaml globs packages/* non-recursively), so the `fast` job's `pnpm -r run typecheck` skips it. The fork ran `bun turbo typecheck`/`bun turbo test`; the cutover (S4 #1111) never ported them. Engine type regressions have merged unseen. This restores the engine typecheck as a standalone `engine-tests` CI job (materialize the full tree -> bun install -> opencode typecheck), the fork's typecheck.yml scoped to the engine. Green-up (pre-existing errors on dev the gate caught): - src/session/lineage.ts: `.filter((id): id is string ...)` must narrow to `id is SessionID` (the branded column type); 4 cascading errors cleared. - test/session/prompt.test.ts: MCP mock omitted `remove`, now required by the overlaid MCP.Interface — add `remove: () => Effect.void`. - test/provider/transform.test.ts: cast content elements `as any` before reading `.type` (matches this file's own convention at :3138) — the Part-union widening from a recent dev merge left these two assertions behind. Three remaining typecheck errors are a base-pin drift (manifest upstream_base_sha=7fe9938 predates the base the overlay was authored against): allowlisted in the gate script by file+rule, tracked in #1229. New errors outside the allowlist fail CI (verified: injected error reds; allowlisted-only passes). The gate is fail-closed (reds if tsgo did not execute). Also: `pnpm test:engine` local entrypoint + AGENTS.md verification-gates row. manifest.json refreshed for the overlay edits (drift_gate PASS). Deferred, tracked: - #1229 base-pin bump -> unlocks full-monorepo typecheck (ui/app also drift). - #1233 engine unit-TEST lane (bun turbo test + test:httpapi) -> blocked on real amicode test fixes (amicode-connections.test.ts failures + hook-timeout slowness). Refs #1228
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replaces fork-download binary provisioning with overlay-build in CI. Phase 3 of the fork-absorption campaign (#1091). This is the cutover slice — the point where CI no longer touches the fork.
What changed
harmoniqs/opencodereleasebuild-binaryjob →upload-artifact→ consumersdownload-artifactlock.repo + lock.tag + lock.refvs forklock.versionvs.buildinfo+upstream_base_shavs materialized base.buildinfosidecarbuild_binary.mjs --platformflag, single runner +OPENCODE_BUILD_TARGETSFiles changed (net -75 lines)
.github/workflows/ci.yml—build-binaryjob; all consumers gainneeds: [build-binary].github/workflows/release.yml— overlay-build, no fork download.github/workflows/prepare-release-candidate.yml— deleted (fork-centric).github/workflows/overlay-promotion-bot.yml— deleted (overlay committed directly)packages/extension/scripts/build_binary.mjs—--platformflag for cross-compilation +.buildinfosidecarpackages/extension/scripts/assert_ui_gate.sh— reads.buildinfowith pre-S4 fallbackpackages/extension/test/release_workflow.test.ts— asserts the new overlay-build worldHITL gates (deferred)
OPENCODE_FETCH_TOKENandREPO_ACCESS_TOKEN— manual step AFTER alpha validates; secret deletion is non-revertableRollback
Code changes revert in one PR. The fork is still alive (not archived until S7). Secrets are untouched.
Closes #1096. Answers #843. Part of #1091.