Skip to content

build(release): split and minify binaries with P0 and worker smoke gates - #8243

Open
code-yeongyu wants to merge 5 commits into
devfrom
build/release-binary-splitting-minify
Open

code-yeongyu wants to merge 5 commits into
devfrom
build/release-binary-splitting-minify

Conversation

@code-yeongyu

@code-yeongyu code-yeongyu commented Sep 13, 2026 •

Copy link
Copy Markdown
Owner

What and why

Compile release binaries with --splitting --minify --keep-names, retaining entry order, the worker path/define contract, autoload settings, assets, and the 1,000-module engine floor. Enforce a 104,857,600-byte P0 ceiling on darwin-arm64; other targets retain the 150 MiB build ceiling.

Exercise split and unsplit relocated workers across directory, package-store symlink, and external-symlink layouts. Each test verifies two shared-memory round trips and awaited worker exits after deleting the source tree.

Add a non-publishing pull-request workflow for Linux x64, macOS arm64, and Windows x64. It builds the real release binary, runs worker/build contracts, then captures bytes, graph, RPC, and extension receipts. Only JSON receipts are uploaded. Add the worker/RPC/extension gate before runnable release artifact uploads. No publishing workflow was dispatched.

The capture CLI previously retained only the last repeated --case. Preserve every selected case and reject invalid earlier selectors so CI cannot silently omit RPC. Both workflows assert parsed receipt outcomes rather than trusting capture's intentionally permissive exit status.

Evidence

  • RED: missing optimization flags and darwin-arm64 accepting 104,857,601 bytes; repeated case selection and absent workflow gates also fail before implementation.

  • GREEN: 42 build/worker tests pass remotely, no skips. Final workflow checks cover 25 tests, and the audit suite covers 39 tests; both TypeScript projects pass. The inherited optional darwin binary-file check is not applicable on the other CI targets; each actual host binary is independently built and measured by the smoke gate.

  • Isolated native release build with Bun 1.4.2 and the existing engine pin: 102,119,922 bytes, 2,737,678 bytes P0 headroom, versus the recorded 130,850,802-byte baseline.

  • Graph: 4,390 modules; historical 3,995 and 4,476 parser fixtures remain independent of the live count.

  • Real compiled RPC routing, extension identity in both modes, webfetch, image resizing, and changelog probes pass. Providers retain the known module-resolution failures expected before the provider-registration task.

  • Thirty-run startup means: version 0.06849 s, one-shot 6.88947 s; both pass the same-host baseline gates.

  • Full P0 comparison is not green: only exact skill-manifest equality fails. Upstream commit c56c578c5 changed the two browsing/research skill files after the immutable baseline. This PR changes neither those files nor the reference receipts; the mismatch is preserved for review.

  • Worker-entry mutation: all six relocation variants fail with MODULE_NOT_FOUND; the release binary still satisfies size/graph checks but both RPC sessions are quarantined. Restoring the entry yields three consecutive worker-suite passes plus passing compiled RPC/extension receipts.

  • All PR checks are green on e6910d21f: gh pr checks --watch exits 0. This includes actionlint, every CI shard, all three compiled-worker targets, and all three release-smoke targets, including Windows x64 RPC and extension execution. The job summary is emitted even on failure.

Coverage limits and remaining diet targets

CI receipts measure darwin-arm64 at 99,610,098 bytes, Linux x64 at 117,437,920 bytes, and Windows x64 at 122,222,592 bytes. All pass their build ceilings. Comparing the latter two against the immutable target receipts with the audit harness's stricter 80% rule still fails: limits are 116,114,611.2 and 119,950,131.2 bytes, respectively. This flag-only task preserves the 150 MiB build ceiling for those targets; it does not claim the broader relative diet goal is complete or alter sidecars to meet it.

Windows arm64 remains checksum-only; runtime behavior is unverified. Cross-compiled non-native release legs retain their existing smoke policy. The standalone arm64 macOS QA uses a fully materialized payload, while CI mirrors the release workflow's ignore-scripts install. No baseline receipts, engine pin, worker path helper, or sidecar lists were changed.

Refs #8235

Plan: .omo/plans/omo-dependency-diet.md

Enforce the 100 MiB darwin-arm64 P0 budget while retaining the other-target ceiling and engine floor. Exercise relocated split/unsplit workers with shared-memory round trips and awaited exits across physical package layouts.

Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>

Plan: .omo/plans/omo-dependency-diet.md
Add a non-publishing three-OS PR workflow that uploads only JSON receipts. Require worker, RPC, and extension probes before runnable release artifacts upload. Preserve every repeated audit case and reject invalid earlier selectors; explicitly assert receipt outcomes instead of trusting capture exit status.

Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>

Plan: .omo/plans/omo-dependency-diet.md
Resolve runner.temp only in step environments, where GitHub permits the runner context. Always render the smoke job summary through the shared writer and cover the new workflow in the repository summary inventory.

Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>

Plan: .omo/plans/omo-dependency-diet.md
The Windows release smoke exposed a POSIX-only expectation for the metafile argument. Keep full argv equality and derive the expected native filename from the fixture output directory.

Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>

Plan: .omo/plans/omo-dependency-diet.md
Capture compiler argv at the process boundary, assert both ordered entries, and execute receipt gates with real Bash and jq. Replace incidental workflow snapshots with scheduling and failure-propagation checks. Schedule native smoke for audit implementation, fixtures, and release-gate changes.

Plan: .omo/plans/omo-dependency-diet.md

This branch has not been deployed

No deployments
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.

1 participant