Update Aleo dependency streams
Four upstream streams feed this repo. For each: detect a newer version, apply
it, re-run the affected tests, and fix breakage. Work one stream at a time and
commit each stream separately ([Chore] Bump <thing> to <version> plus any
[Fix] commits the bump forces). Devnode-gated tests require leo on PATH;
aleo-devnode comes from node_modules/.bin after pnpm install.
Start with the detection script — it prints current-vs-latest for every stream (including the CI workflow pins) and exits 1 when anything is stale:
./scripts/check-upstream-versions.sh
When it exits 0, every stream is current — report that and stop. Otherwise work only the streams it flagged, using the sections below.
Automation around this skill: .github/workflows/upstream-check.yml runs the
detection script daily, files an upstream-stale issue when something moved,
and dispatches .github/workflows/claude-update-deps.yml — a Claude Code run
of this skill that opens the update PR. A manual run of this skill supersedes
both; close the issue when the update lands.
Full devnode verification command used throughout (append newer devnode test files if the CI workflow lists more):
VEIL_DEVNODE_INTEGRATION=1 pnpm vitest run --no-file-parallelism \
packages/devnode/test/devnodeActions.integration.test.ts \
packages/provable-sdk/test/integration/devnodeE2e.test.ts \
packages/provable-sdk/test/integration/devnodeWrite.e2e.test.ts \
packages/codegen/test/integration/creditsDevnode.e2e.test.ts
Live-API verification (read-only, no keys):
VEIL_INTEGRATION=1 pnpm vitest run --retry=2 \
packages/core/test/integration/realApi.test.ts \
packages/shield-swap/test/integration/reads.integration.test.ts \
packages/shield-swap/test/integration/api.integration.test.ts \
packages/shield-swap/test/integration/traders.integration.test.ts \
packages/bridge/test/integration/api.integration.test.ts
1. @provablehq/sdk (npm)
npm view @provablehq/sdk versionvs the range inpackages/provable-sdk/package.json. Stop here if already current.- Bump the range,
pnpm install, then runpnpm vitest run(unit) and the devnode verification command. - Known breakage patterns:
- Consensus version count.
DEVNODE_CONSENSUS_HEIGHTSinpackages/provable-sdk/src/index.tsMUST have exactly as many entries as the new SDK's consensus-version count AND mirror theCONSENSUS_VERSION_HEIGHTSdefault inpackages/devnode/src/index.ts. A short list panics with an opaque wasmunreachableinsidegetOrInitConsensusVersionTestHeights. Update both files together. - Renamed/removed SDK exports surface as type errors in
packages/provable-sdk/src/index.ts— fix the imports, then re-run.
- Consensus version count.
- Finish with the live-API verification command (the SDK builds transactions for those paths too).
2. leo (ProvableHQ/leo releases)
gh release list -R ProvableHQ/leo --limit 1vsleo --version.- Install the new binary locally (release asset zip or
cargo install leo-lang), then update the pinnedLEO_RELEASEenv in.github/workflows/ci.ymlto the new tag. - Run the devnode verification command.
- Known breakage patterns (all bit at 4.2→4.3):
- Language syntax changes break the inline Leo sources in
packages/provable-sdk/test/integration/devnodeWrite.e2e.test.tsanddevnodeE2e.test.ts(4.3:fn+finalblocks replacedasync transition/async function; explicit@noupgrade constructor()required; structs moved outside theprogram { }block). - Build artifact layout changes break
packages/provable-sdk/test/integration/leoProject.ts(4.3 movedbuild/main.aleo→build/<name>/<name>.aleo) and the@provablehq/veil-leoJSDoc examples. leo abioutput shape changes breakparseAbiinpackages/core/src/utils/parseAbi.tsand the codegen round-trip test.
- Language syntax changes break the inline Leo sources in
3. aleo-devnode (@provablehq/aleo-devnode on npm)
Distributed as a prebuilt-binary npm package, so it is pinned in the root
package.json like any other dependency — there is no DEVNODE_RELEASE env
and the toolchain action does not install it. pnpm install puts it in
node_modules/.bin, which is on PATH for the test commands that spawn it.
npm view @provablehq/aleo-devnode versionvs the rootpackage.jsonrange.- Bump it,
pnpm install, and run the devnode verification command. - Read the release notes (
gh release view <tag> -R ProvableHQ/aleo-devnode) for new node capabilities — new CLI flags, REST endpoints, or lifecycle commands. Anything a test or local-dev workflow would drive belongs in the SDK as an action:- Node lifecycle and process flags →
packages/devnode/src/index.ts(startDevnodeoptions, standalone helpers). - Live REST controls (the snapshot/advance/shutdown family) → test-client
actions in
packages/core/src/actions/test/plus theTestClientsurface, mirroring howsnapshot/listSnapshotswere added. Each new action needs unit tests, coverage inpackages/devnode/test/devnodeActions.integration.test.ts, and JSDoc per.agents/contributors.md.
- Node lifecycle and process flags →
- Consensus-heights coupling applies here too (see stream 1): if the new
devnode changes its
CONSENSUS_VERSION_HEIGHTSdefault expectations, update both mirrored lists.
4. aleo-dev-toolkit adaptor packages (npm)
The ProvableHQ/aleo-dev-toolkit monorepo publishes the
@provablehq/aleo-wallet-adaptor-* packages consumed here.
npm view @provablehq/aleo-wallet-adaptor-core version(and-react,-shield,-leo,-puzzle,-fox) vs the pins inpackages/react/package.json(exact versions) and the peer ranges inpackages/wallet-adapter/package.json.Bump,
pnpm install, then run the consumer tests:pnpm vitest run packages/wallet-adapter packages/reactand the dApp typecheck (
pnpm --filter @provablehq/veil-loyalty-dapp exec tsc --noEmit).Adapter interface changes ripple into
packages/wallet-adapter/src/index.tsandpackages/react/src/provider.tsx— fix, re-run, and keepapps/loyalty-dapp/compiling (it is a release blocker per CLAUDE.md).
Wrap-up
pnpm vitest rungreen from the repo root.- The
LEO_RELEASEpin in ci.yml matches the leo binary the tests ran against; aleo-devnode is pinned in the rootpackage.jsoninstead. - Note in the PR body which streams moved and which were already current.