Skip to content

feat(checksum_updater): manage native loom (PerPlatformVersionedAsset) - #530

Merged
avrabe merged 1 commit into
mainfrom
feat/updater-manage-loom-native
Jun 18, 2026
Merged

feat(checksum_updater): manage native loom (PerPlatformVersionedAsset)#530
avrabe merged 1 commit into
mainfrom
feat/updater-manage-loom-native

Conversation

@avrabe

@avrabe avrabe commented Jun 18, 2026

Copy link
Copy Markdown
Contributor

Problem

The checksum_updater still configured loom as UniversalWasm{loom.wasm} + AssetExists, which kept it pinned at v0.3.0 — the last release shipping loom.wasm. #514 migrated the registry and toolchain to native per-platform binaries (loom-v{version}-{triple}.tar.gz, .zip on Windows), so the weekly auto-updater could no longer advance loom past 0.3.0. (loom happens to be current at 1.1.14 today, so there's no live drift — this fixes the mechanism so the next loom release is picked up.)

Why a new pattern

loom's toolchain reads the registry url_suffix as the full versioned filename (tool_registry.bzl loom: filename: "{suffix}", same as wkg/wrpc). The existing PerPlatformAsset can't express that — its stored suffix is static with no {version}, so it would write a stale filename (loom-v1.1.14-… frozen) on the next release.

Adds PerPlatformVersionedAsset { filename_pattern, platform_mapping } whose resolved filename ({version} + {platform}) is both the download asset and the verbatim url_suffix, so the two can't drift. get_url_suffix gains a version param (single caller updated); other patterns ignore it.

Verification

  • update --tools loom --force → selects v1.1.14 (GitHub /releases/latest), downloads all 4 native tarballs from the correct URLs, and reproduces the hand-authored feat(checksums): add loom 1.1.14 native binaries (#512 step 1) #513 registry block (url_suffix + sha256) byte-for-byte — zero functional diff. This is the key check: the updater's output matches exactly what the loom toolchain consumes, so it can't break the download path.
  • New unit test test_per_platform_versioned_asset_loom_native asserts the exact versioned strings (incl. the Windows .zip mixed extension). Full lib suite 24/24 pass.
  • Source-only — no registry change (loom already at 1.1.14).

Scope

With this, every PulseEngine tool the updater tracks is auto-managed (loom, wsc, file-ops). The only remaining excluded entry is go (null github_repo, different mechanism — out of scope).

🤖 Generated with Claude Code

The updater still had loom as UniversalWasm{loom.wasm} + AssetExists, which
kept it pinned at v0.3.0 — the last release shipping loom.wasm. #514 migrated
the registry + toolchain to native per-platform binaries
(loom-v{version}-{triple}.tar.gz, .zip on Windows), so the auto-updater could
no longer advance loom past 0.3.0.

loom's toolchain reads the registry url_suffix as the FULL versioned filename
(tool_registry.bzl loom: `filename: "{suffix}"`, like wkg/wrpc). The existing
PerPlatformAsset can't express that — its stored suffix is static, with no
{version} — so it would write a stale filename on the next loom release. Add a
PerPlatformVersionedAsset pattern whose resolved filename (with {version} and
{platform}) is both the download asset and the verbatim url_suffix, so the two
can never drift. Thread `version` into get_url_suffix (single caller) and
re-point loom to the new pattern with VersionFilter::Any (GitHub /releases/latest
correctly returns v1.1.14).

Verified: `update --tools loom --force` selects v1.1.14, downloads all 4 native
tarballs from the correct URLs, and reproduces the hand-authored #513 registry
block (url_suffix + sha256) byte-for-byte — zero functional diff, proving the
updater output matches what the loom toolchain consumes. New unit test
test_per_platform_versioned_asset_loom_native asserts the exact strings; full
lib suite 24/24 pass. No registry change needed (loom already at 1.1.14); this
only lets future loom releases be picked up automatically.

With this, every PulseEngine tool the updater tracks is auto-managed
(remaining exclusion: `go`, null github_repo — separate mechanism).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@avrabe
avrabe merged commit fc0e346 into main Jun 18, 2026
26 checks passed
@avrabe
avrabe deleted the feat/updater-manage-loom-native branch June 18, 2026 12:23
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