Skip to content

chore: bump pocket-ic to release-2026-04-30_04-26-base - #6088

Merged
ggreif merged 6 commits into
masterfrom
gabor/bump-pocket-ic
May 6, 2026
Merged

chore: bump pocket-ic to release-2026-04-30_04-26-base#6088
ggreif merged 6 commits into
masterfrom
gabor/bump-pocket-ic

Conversation

@ggreif

@ggreif ggreif commented May 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Bumps pocket-ic-server (and the matching pocket-ic Rust crate) from release-2026-04-16_04-20-base to release-2026-04-30_04-26-base.
  • Drives the upgrade through the bump-pocket-ic skill — also relocated from .claude/skills/ to .agents/skills/ (matching the bump-rust-nightly precedent in chore: bump rustc-nightly to 2026-05-04 (May the fourth) #6079) and tweaked based on what we learned this run.

Skill retro (folded back into the SKILL.md)

  1. SHA256SUMS is no longer published by recent release-*-base tags (URL 404s). Option A demoted to an optional cross-check; nix-prefetch-url is now the default. Nix rejects tampered downloads on its own, so the cross-check is belt-and-suspenders.
  2. The skill's nix-prefetch-url --print-path | head -1 recipe was unnecessary; plain nix-prefetch-url <url> returns the base32 hash on stdout.
  3. cargo update must run with plain cargo, not nix develop --command cargo … — the dev shell is offline-sandboxed and fails with --offline.
  4. Scope the lockfile change with cargo update -p pocket-ic.
  5. Across consecutive base tags the crate version normally stays the same (here: 13.0.0 → 13.0.0); only the git commit hash moves, so the flake outputHashes hash always changes but the key usually doesn't.

Test plan

  • nix build .#pocket-ic-server
  • nix build .#test-runner
  • CI green (full test suite)

🤖 Generated with Claude Code

@ggreif
ggreif requested a review from a team as a code owner May 6, 2026 00:20
@ggreif ggreif self-assigned this May 6, 2026
@ggreif
ggreif enabled auto-merge May 6, 2026 00:24
Same fix as PR #6009 applied to `gc-tests`. The `tests` matrix on
`arm64-linux-16` runs `nix-build-uncached --max-jobs auto`, which
schedules three parallel ~3 GB derivation builds and OOMs the runner
("Killed" → "The runner has received a shutdown signal").

Use the matrix `include:` pattern to override `max_jobs` per-OS and
plumb it through to `test-blueprint` like `gc-tests` already does.

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

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown
Contributor

Comparing from 53943c3 to 41201d2:
The produced WebAssembly code seems to be completely unchanged.
In terms of gas, no changes are observed in 5 tests.
In terms of size, no changes are observed in 5 tests.

@ggreif
ggreif force-pushed the gabor/bump-pocket-ic branch 2 times, most recently from c77c14a to eefcb56 Compare May 6, 2026 01:11
ggreif added a commit that referenced this pull request May 6, 2026
This reverts commit 6c766d8b0bf6d28cf2a0fc92c5b2d9d76eed9a05.

PR #6088 with a fresh cache-buster (forcing a real cold rebuild of the
GC-variant derivations) hit OOM at max-jobs=2:

  building 'test-drun-compacting-gc.drv'...
  building 'test-drun-generational-gc.drv'...
  Killed   nix-build-uncached -build-flags "--max-jobs 2"

Run: https://github.com/caffeinelabs/motoko/actions/runs/25411132891/job/74532926605

The GC variants are heavier than the regular test-* derivations (each
RTS rebuild with different feature flags = ~3 GB), so two in parallel
exceed the 16 GB runner. PR #6090's gc-tests at max-jobs=2 only
appeared to pass because that branch's cache-busting populated cachix
with a different content hash and the GC variants got pulled instead
of rebuilt.

For \`tests\` (release-systems-go) the constituent derivations are
smaller and max-jobs=2 holds — keeping that bump. The matrix is
asymmetric: gc-tests=1, tests=2.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ggreif added a commit that referenced this pull request May 6, 2026
Asymmetric tuning (gc-tests=1, tests=2) is too brittle: PR #6090
showed tests-at-2 passing on a particular cache state, but the
gc-tests OOM in PR #6088 demonstrated that the 2-vs-1 distinction
depends on which derivations happen to rebuild simultaneously.
Future test additions could shift the memory profile of
release-systems-go and reintroduce OOMs silently.

Going back to a uniform max-jobs=1 on arm64-linux-16. Slower but
stable.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ggreif
ggreif force-pushed the gabor/bump-pocket-ic branch 2 times, most recently from fcce493 to c571caf Compare May 6, 2026 01:51
ggreif and others added 5 commits May 6, 2026 07:52
Same shape as the `bump-rust-nightly` move (commit 93e5b09):
promotes the skill from the user-local `.claude/skills/` to the
repo-shared `.agents/skills/` location used by `build-and-test`,
`migrating-motoko`, etc. Renames `skill.md` → `SKILL.md` for
consistency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bumps the `pocket-ic-server` binary from
`release-2026-04-16_04-20-base` to the 2026-04-30 base release.

SHA256 hashes obtained via `nix-prefetch-url`. (The release does not
ship a `SHA256SUMS` file: a `curl -sIL` of the URL returns 404, so
the skill's recommended Option A is unusable for these releases.)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Pins the `pocket-ic` crate in `test-runner/Cargo.toml` to the same
release tag (`release-2026-04-30_04-26-base`) and refreshes
`Cargo.lock`. The crate version is unchanged (13.0.0); only the git
commit hash of the tag moves.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The `pocket-ic` crate version stayed at 13.0.0, but the underlying
git tag now points at a different commit, so `outputHashes` needs
the new fixed-output hash.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Findings from the 2026-04-30 bump:

1. `SHA256SUMS` is no longer published by recent `release-*-base` tags
   (URL 404s). Demoted Option A to an optional cross-check; promoted
   `nix-prefetch-url` to the default. Nix already rejects tampered
   downloads, so the cross-check is belt-and-suspenders, not required.

2. The `nix-prefetch-url --print-path | head -1` recipe was overly
   ornate; plain `nix-prefetch-url <url>` returns the base32 hash on
   stdout already.

3. `cargo update` must run with plain `cargo`, not via
   `nix develop --command` — the dev shell is offline-sandboxed and the
   command fails with `you are in the offline mode (--offline)`.

4. Use `cargo update -p pocket-ic` to scope the change.

5. Across consecutive `release-*-base` tags the crate version normally
   stays the same; only the git commit hash moves. Reworded step 6 to
   reflect that "hash always changes, version usually doesn't".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ggreif
ggreif force-pushed the gabor/bump-pocket-ic branch from c571caf to 41201d2 Compare May 6, 2026 05:53
@ggreif
ggreif disabled auto-merge May 6, 2026 06:06
@ggreif
ggreif added this pull request to the merge queue May 6, 2026
Merged via the queue into master with commit dfc0a50 May 6, 2026
20 checks passed
@ggreif
ggreif deleted the gabor/bump-pocket-ic branch May 6, 2026 07:32
pull Bot pushed a commit to mikeyhodl/motoko that referenced this pull request May 6, 2026
## Summary
Extends the same `max_jobs=1` workaround used by `gc-tests` in caffeinelabs#6009 to
the `tests` matrix on `arm64-linux-16`. `ubuntu-24-large` keeps
`max-jobs=auto`.

## Why
`tests (arm64-linux-16, release)` and `tests (arm64-linux-16, debug)`
have been OOM-killed by the runner whenever `nix-build-uncached
--max-jobs auto` schedules three parallel ~3 GB derivation builds. Most
recent observation:
https://github.com/caffeinelabs/motoko/actions/runs/25409615273/job/74528169567
(initial CI on the `pocket-ic` bump PR caffeinelabs#6088 — failure was unrelated to
the bump itself).

## Why max-jobs=1 (not 2)
We probed a higher ceiling but it's not stable enough to ship:

- PR caffeinelabs#6090 ran `gc-tests` and `tests` at `max-jobs=2` against a
cache-busted `test-runner` and **appeared** to pass.
- PR caffeinelabs#6088 with a *different* cache-buster (forcing a different content
hash than caffeinelabs#6090's, and therefore a real cold rebuild of the GC-variant
derivations) hit OOM on `gc-tests (arm64-linux-16, 2)` after ~2.5
minutes:
  ```
  building 'test-drun-compacting-gc.drv'...
  building 'test-drun-generational-gc.drv'...
  Killed   nix-build-uncached -build-flags "--max-jobs 2"
  ```
Run:
https://github.com/caffeinelabs/motoko/actions/runs/25411132891/job/74532926605

The result depends on which derivations happen to be cachix-cached vs
cold-rebuilt at any given moment. An asymmetric `gc-tests=1, tests=2`
configuration would also be brittle: a future test addition could shift
the memory profile of `release-systems-go` and silently reintroduce
OOMs. Going uniform `max-jobs=1` is slower but stable.

## Test plan
- [x] CI green
- [x] No `tests (arm64-linux-16, *)` OOM on the resulting run

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (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.

2 participants