feat(dev-base): pin wasm-pack and binaryen into the Rust payload #986
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!986
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/dev-base-wasm-toolchain"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds pinned
wasm-pack(0.15.0) andbinaryen(version_119,bin/wasm-optonly) to thedev-base-lang-rustpayload, withBINARYEN_ARCH/WASM_PACK_ARCHentries inwrite-arch-env.shand both binaries added to the full image smoke line.Why
The Rust payload already runs
rustup target add wasm32-unknown-unknown, but shipped nothing to drive that target. Every repo building Rust to WASM therefore installs its own toolchain per environment.galaxy-gen is the worked example. Its bundle is produced in four places with three different toolchains:
ward exec build-js-prod-cargo install wasm-pack(floating), and no binaryen at allubuntu-latest- floating wasm-pack, binaryenversion_119on PATHdeployrunner - floating wasm-pack, binaryenversion_119, and node 20 rather than the image's 22cargo testonlyThe artifact serving galaxy-gen.coilysiren.me comes from the third row. Playwright only ever runs against the second. The bundle that ships is not the bundle anything tested.
Why binaryen is the pin that matters
wasm-packtakeswasm-optfrom PATH when it finds one and otherwise downloads its own floatinglatestbuild. An image without a pinned binaryen therefore reoptimizes every bundle by build date rather than by source, silently. Pinning to the same 119 galaxy-gen already proved against chromium makes this an availability change rather than a behavior change.Blast radius
Additive.
wasm-pack 0.15.0is whatcargo install wasm-packresolves to today, so a repo moving onto the image keeps its current toolchain and gains only the determinism. No existing tool, path, or version changes.Only
bin/wasm-optis extracted from the binaryen tarball.lib/libbinaryen.ais a static archive the binary has already absorbed (verified: the extractedwasm-optis a statically linked ELF), andinclude/serves C API consumers this image does not have.Verification
pre-commit run --files ...green on all three files, including code-comment discipline and shellcheckwrite-arch-env.shamd64 branch, arm64 branch, and emitted list all agree at 17 varstarextraction commands exercised against the real release tarballs, each landing exactly one binarydev-base-pr / buildis the authoritative gate here.Follow-up
Unblocks CI-in-dev-base adoption (agentic-os#328) for WASM repos. galaxy-gen adoption is the first mover and is tracked separately. Note that Playwright e2e still cannot move into dev-base, which carries no browser.