feat(checksum_updater): manage native loom (PerPlatformVersionedAsset) - #530
Merged
Conversation
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>
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.
Problem
The checksum_updater still configured loom as
UniversalWasm{loom.wasm}+AssetExists, which kept it pinned at v0.3.0 — the last release shippingloom.wasm. #514 migrated the registry and toolchain to native per-platform binaries (loom-v{version}-{triple}.tar.gz,.zipon 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_suffixas the full versioned filename (tool_registry.bzlloom:filename: "{suffix}", same as wkg/wrpc). The existingPerPlatformAssetcan'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 verbatimurl_suffix, so the two can't drift.get_url_suffixgains aversionparam (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.test_per_platform_versioned_asset_loom_nativeasserts the exact versioned strings (incl. the Windows.zipmixed extension). Full lib suite 24/24 pass.Scope
With this, every PulseEngine tool the updater tracks is auto-managed (loom, wsc, file-ops). The only remaining excluded entry is
go(nullgithub_repo, different mechanism — out of scope).🤖 Generated with Claude Code