Skip to content

chore(deps): bump PulseEngine toolchains (meld 0.10, spar 0.10, synth 0.6, wsc 0.9) - #471

Merged
avrabe merged 1 commit into
mainfrom
deps/pulseengine-tools-2026-05
May 24, 2026
Merged

chore(deps): bump PulseEngine toolchains (meld 0.10, spar 0.10, synth 0.6, wsc 0.9)#471
avrabe merged 1 commit into
mainfrom
deps/pulseengine-tools-2026-05

Conversation

@avrabe

@avrabe avrabe commented May 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Bumps four of the six PulseEngine pipeline tools to their latest releases:

Tool From To Notes
meld 0.1.0 0.10.0 canonical-ABI sweep, multi-memory warning
spar 0.9.3 0.10.0 mermaid emitter, EMV2 propagation, Lean 4 proofs
synth 0.3.1 0.6.0 cosign-signed sums, SBOM, SLSA provenance
wsc 0.7.0 0.9.0 (registry only) TPM2 variant added

Each version pin is updated everywhere it appears (JSON registry latest_version, module-extension defaults in wasm/extensions.bzl, repository-rule defaults in toolchains/*.bzl, and the MODULE.bazel call sites) so the resolved version actually matches the registry.

Special handling: wsc

The wsc bump touches the registry (checksums/tools/wsc.json now lists v0.9.0) but MODULE.bazel stays pinned to v0.7.0 because the v0.9.0 release dropped the wsc-cli.wasm asset that our tools/wasmsign2_wrapper consumes. Filed upstream as pulseengine/sigil#132; the call site will move once the wasm artifact is reinstated or the wrapper switches to the native binary.

Not bumped

  • loom: pinned at 0.3.0. Every loom release from v0.6.0 through v1.1.1 ships zero binary assets upstream — filed as pulseengine/loom#142.
  • witness: already at v0.22.0 (latest).

Related: release artifact unification

While auditing the bumps I found three different SHA conventions and three different signing tiers across the six PulseEngine releases. Synth is the only one with the full stack (single signed SHA256SUMS.txt + SBOM + SLSA provenance). Filed brief on five repos asking them to adopt that pattern:

Test plan

  • bazel build //examples/spar_example/... //examples/witness_example/... //examples/synth_example/... green on darwin_arm64
  • Spar generates WIT from building_control.aadl (7 components, working)
  • Synth compiles to Cortex-M3 ELF (770 bytes, math_firmware.elf)
  • Meld toolchain v0.10.0 binary resolves
  • All four new SHA256s validated via Bazel's hermetic ctx.download (would hard-fail on mismatch)
  • CI matrix (ubuntu, macOS, windows, BCR) on PR

🤖 Generated with Claude Code

Bumps four of the six PulseEngine tools to their latest releases. Each
version pin is updated everywhere it appears (JSON registry,
module-extension defaults, repository-rule defaults, MODULE.bazel
call sites) so the resolved version matches `latest_version` in the
registry.

* meld   0.1.0   -> 0.10.0  (canonical-ABI sweep + multi-memory warning)
* spar   0.9.3   -> 0.10.0  (mermaid emitter, EMV2 traversal, Lean 4 proofs)
* synth  0.3.1   -> 0.6.0   (cosign-signed sums, SBOM, SLSA provenance)
* wsc    0.7.0   -> 0.9.0   (TPM2 variant; registry entry only -- the
                             MODULE.bazel call site stays at 0.7.0 because
                             v0.9.0 dropped the wsc-cli.wasm asset our
                             wasmsign2_wrapper consumes, tracked upstream
                             as pulseengine/sigil#132)

Not bumped:
* loom    pinned at 0.3.0 -- every release from v0.6.0 through v1.1.1
                            ships zero binary assets upstream
                            (pulseengine/loom#142)
* witness already at v0.22.0 (latest)

Validated locally: bazel build //examples/{spar,witness,synth}_example/...
green on darwin_arm64; spar generates WIT, synth compiles to Cortex-M
ELF, meld toolchain resolves.

A companion brief was filed on the five non-synth repos asking them to
adopt synth's release-artifact pattern (single SHA256SUMS.txt signed
keyless with cosign + SBOM + SLSA build provenance), to unify the
three different checksum/signing conventions currently in use across
the PulseEngine toolset.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@avrabe
avrabe merged commit d2347fb into main May 24, 2026
20 checks passed
@avrabe
avrabe deleted the deps/pulseengine-tools-2026-05 branch May 24, 2026 19:02
avrabe added a commit that referenced this pull request Jun 13, 2026
…ntry

Correcting the prior commit: I pointed the wasm_component platform at
wsc-component.wasm, which fetches but is a *component* that
`wasmtime run <wasm> keygen ...` cannot execute as a command module:

    Error: failed to run main module `.../wasmsign2.wasm`

The wrapper runs the WASI *CLI* module. v0.7.0 ships both wsc-cli.wasm and
wsc-component.wasm; the pre-#471 registry used wsc-cli.wasm. Point 0.7.0 at
wsc-cli.wasm (sha a57139921f87e91282f22f788155177eadf2085e21a7f2f8ceb8d9fac1c761ef,
verified against the pulseengine/sigil sidecar).

Drop the 0.9.0 wasm_component entry: v0.9.0 ships only wsc-component.wasm (no
CLI module), so the current wrapper can't run it. Nothing fetches 0.9.0 (the
pin is 0.7.0); bumping past 0.7.0 needs the wrapper to handle the component
form (tracked in #498).

Verified by RUNNING it: `bazel build //examples/wasm_signing:example_keys`
fetches wsc-cli.wasm and successfully generates a key pair via the wrapper.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
avrabe added a commit that referenced this pull request Jun 13, 2026
…gning tree) (#499)

* fix(checksums): restore wsc wasm_component platform (unbreaks wasm_signing)

The wsc bump to per-OS binaries (#471) replaced wsc.json's universal
wasm-component entry with per-platform binaries, dropping the
`wasm_component` platform. But `@wasmsign2_cli_wasm` is a
wasm_component_download(tool_name="wsc") that resolves only the
`wasm`/`wasm_component` platform, so it failed to fetch:

    Error in fail: Tool 'wsc' version '0.7.0' not found in registry
    (tried platforms: wasm, wasm_component)

This cascaded into analysis failures for //tools/wasmsign2_wrapper and the
entire //examples/wasm_signing tree on every PR (the Test workflow runs on
pull_request, not on main pushes, so it landed uncaught).

Restore the `wasm_component` platform for 0.7.0 (pinned) and 0.9.0 (latest),
pointing at the wsc-component.wasm asset. Checksums verified against the
authoritative pulseengine/sigil release .sha256 sidecars:
  0.7.0  15efa8033741c4613165ae49b002847df9afcc27af876778884c79aaea4d45b2
  0.9.0  b40f70180a3c448b2f2fef21f42966c43a6cc11a7d5796db89de7abf969a1ba4

Verified locally: `bazel build //tools/wasmsign2_wrapper:wasmsign2_wrapper`
now fetches wsc-component.wasm and builds successfully.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(checksums): use wsc-cli.wasm (runnable module), drop 0.9.0 wasm entry

Correcting the prior commit: I pointed the wasm_component platform at
wsc-component.wasm, which fetches but is a *component* that
`wasmtime run <wasm> keygen ...` cannot execute as a command module:

    Error: failed to run main module `.../wasmsign2.wasm`

The wrapper runs the WASI *CLI* module. v0.7.0 ships both wsc-cli.wasm and
wsc-component.wasm; the pre-#471 registry used wsc-cli.wasm. Point 0.7.0 at
wsc-cli.wasm (sha a57139921f87e91282f22f788155177eadf2085e21a7f2f8ceb8d9fac1c761ef,
verified against the pulseengine/sigil sidecar).

Drop the 0.9.0 wasm_component entry: v0.9.0 ships only wsc-component.wasm (no
CLI module), so the current wrapper can't run it. Nothing fetches 0.9.0 (the
pin is 0.7.0); bumping past 0.7.0 needs the wrapper to handle the component
form (tracked in #498).

Verified by RUNNING it: `bazel build //examples/wasm_signing:example_keys`
fetches wsc-cli.wasm and successfully generates a key pair via the wrapper.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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