Defect
Every org repo consuming wasm-pack through aqua resolves macos-arm64 to the x86_64 tarball although the pinned version ships a native arm64 asset. Identical in edtf's and release-lab's locks (asset id 420850460):
[tools."aqua:rustwasm/wasm-pack"."platforms.macos-arm64"]
url = ".../v0.15.0/wasm-pack-v0.15.0-x86_64-apple-darwin.tar.gz"
Cause, re-verified 2026-08-24 against aqua-registry HEAD (pkgs/wasm-bindgen/wasm-pack/registry.yaml): the current-version entry carries rosetta2: true and a single goos: linux override mapping arm64: aarch64; there is no darwin case, so on darwin/arm64 rosetta2 selects the amd64 asset. The version boundary is exact and re-measured today against the release assets: aarch64-apple-darwin first appears in v0.14.0 (absent in v0.13.1), so rosetta2 is correct through 0.13.1 and wrong from 0.14.0 on. No existing upstream issue or PR covers this (searched aquaproj/aqua-registry for wasm-pack, 2026-08-24: only version-bump and transfer PRs).
Two consequences; the second is the org's: arm64 macOS developers run wasm-pack under emulation, and the checksum + provenance pinned for the platform called macos-arm64 are those of an x86_64 binary — a pinned attestation that does not describe the declared platform is a weaker claim than it looks.
Decided build
Decided 2026-08-24, both halves:
Upstream (authorized by Carl 2026-08-24, conditions binding): file one issue on aquaproj/aqua-registry, using their template (.github/ISSUE_TEMPLATE/05-bug-report.yml is the fit), only after re-checking at filing time that (a) HEAD still lacks the darwin override and (b) no issue/PR has appeared since this search — if either changed, record that here instead of filing. Content: the fix is a version_overrides entry constrained semver(">= 0.14.0") adding a goos: darwin override arm64: aarch64 and dropping rosetta2 for those versions; include the measured asset boundary. One issue, no PR unless upstream asks — a PR is a second decision, escalate if invited.
Local, until upstream lands: the belt carries the correction so macos-arm64 resolves the aarch64 asset — delivered, never copied per repo. The mechanism is measured, not assumed: mise/aqua support local registry overrides in more than one shape (a repo-level [tools] URL/backend override, an aqua local registry entry); the build measures which shape (1) survives --locked with a real per-platform checksum entry, (2) is deliverable through the belt's existing [env]/config channel, and (3) disappears cleanly when the upstream fix arrives (pin bump makes it dead code that a comment dates). If no shape measurably expresses it, the fallback is a dated, loud exception: a comment at the pin recording that macos-arm64 runs x86_64-under-Rosetta and why, plus a belt check that reds the day the lock's macos-arm64 URL and the release's aarch64 asset can finally agree — silence is the one forbidden outcome.
The sweep: this was found by eye. Script the same check across every aqua-backed tool in the belt: for each tool with per-platform lock entries, compare each platform key's resolved asset name against the architecture the key declares; report mismatches. Run it once, record results here; if it finds a second mismatch, that is a new issue per tool, filed with the measurement. Decide at build time whether the script graduates into audit:* (network-bound: it reads release asset lists) — default yes, as audit:lock-arch, since a one-shot check is a claim that decays.
Rejected, recorded: accepting emulation silently (the attestation mismatch is the harm); per-repo overrides (the belt delivers, #445); filing upstream without the freshness re-check (Carl's condition: real, unfiled, single, templated).
Canon consequence
Whatever shape lands is belt-delivered and reaches edtf and release-lab (today's wasm consumers) at their pin bump. When upstream merges and the aqua-registry pin advances past it, the local correction is deleted in the same PR that bumps.
Done when
- the upstream issue exists (linked here) or the freshness re-check found it fixed/filed and says so here
mise install --locked on an arm64 mac resolves wasm-pack to …aarch64-apple-darwin.tar.gz with a matching checksum — measured, lock diff quoted — OR the dated loud exception plus its watchdog check exist
- the sweep has run across all aqua-backed belt tools with results recorded here; any second mismatch is its own filed issue
- edtf and release-lab locks show the corrected platform entry at their next regeneration
Sequencing
Independent of the release path; no lab run. Not blocked (upstream filing is authorized with conditions). Shares mise/config.toml/mise.lock with other belt lanes — own PR. Refs #810, #445.
Defect
Every org repo consuming
wasm-packthrough aqua resolvesmacos-arm64to the x86_64 tarball although the pinned version ships a native arm64 asset. Identical in edtf's and release-lab's locks (asset id 420850460):Cause, re-verified 2026-08-24 against aqua-registry HEAD (
pkgs/wasm-bindgen/wasm-pack/registry.yaml): the current-version entry carriesrosetta2: trueand a singlegoos: linuxoverride mappingarm64: aarch64; there is nodarwincase, so on darwin/arm64 rosetta2 selects the amd64 asset. The version boundary is exact and re-measured today against the release assets:aarch64-apple-darwinfirst appears in v0.14.0 (absent in v0.13.1), so rosetta2 is correct through 0.13.1 and wrong from 0.14.0 on. No existing upstream issue or PR covers this (searched aquaproj/aqua-registry for wasm-pack, 2026-08-24: only version-bump and transfer PRs).Two consequences; the second is the org's: arm64 macOS developers run wasm-pack under emulation, and the checksum + provenance pinned for the platform called
macos-arm64are those of an x86_64 binary — a pinned attestation that does not describe the declared platform is a weaker claim than it looks.Decided build
Decided 2026-08-24, both halves:
Upstream (authorized by Carl 2026-08-24, conditions binding): file one issue on
aquaproj/aqua-registry, using their template (.github/ISSUE_TEMPLATE/05-bug-report.ymlis the fit), only after re-checking at filing time that (a) HEAD still lacks the darwin override and (b) no issue/PR has appeared since this search — if either changed, record that here instead of filing. Content: the fix is aversion_overridesentry constrainedsemver(">= 0.14.0")adding agoos: darwinoverridearm64: aarch64and droppingrosetta2for those versions; include the measured asset boundary. One issue, no PR unless upstream asks — a PR is a second decision, escalate if invited.Local, until upstream lands: the belt carries the correction so
macos-arm64resolves the aarch64 asset — delivered, never copied per repo. The mechanism is measured, not assumed: mise/aqua support local registry overrides in more than one shape (a repo-level[tools]URL/backend override, an aqua local registry entry); the build measures which shape (1) survives--lockedwith a real per-platform checksum entry, (2) is deliverable through the belt's existing[env]/config channel, and (3) disappears cleanly when the upstream fix arrives (pin bump makes it dead code that a comment dates). If no shape measurably expresses it, the fallback is a dated, loud exception: a comment at the pin recording thatmacos-arm64runs x86_64-under-Rosetta and why, plus a belt check that reds the day the lock's macos-arm64 URL and the release's aarch64 asset can finally agree — silence is the one forbidden outcome.The sweep: this was found by eye. Script the same check across every aqua-backed tool in the belt: for each tool with per-platform lock entries, compare each platform key's resolved asset name against the architecture the key declares; report mismatches. Run it once, record results here; if it finds a second mismatch, that is a new issue per tool, filed with the measurement. Decide at build time whether the script graduates into
audit:*(network-bound: it reads release asset lists) — default yes, asaudit:lock-arch, since a one-shot check is a claim that decays.Rejected, recorded: accepting emulation silently (the attestation mismatch is the harm); per-repo overrides (the belt delivers, #445); filing upstream without the freshness re-check (Carl's condition: real, unfiled, single, templated).
Canon consequence
Whatever shape lands is belt-delivered and reaches edtf and release-lab (today's wasm consumers) at their pin bump. When upstream merges and the aqua-registry pin advances past it, the local correction is deleted in the same PR that bumps.
Done when
mise install --lockedon an arm64 mac resolves wasm-pack to…aarch64-apple-darwin.tar.gzwith a matching checksum — measured, lock diff quoted — OR the dated loud exception plus its watchdog check existSequencing
Independent of the release path; no lab run. Not blocked (upstream filing is authorized with conditions). Shares
mise/config.toml/mise.lockwith other belt lanes — own PR. Refs #810, #445.