Skip to content

chore(deps): bump signet-sdk family to gouda cohort#277

Draft
rswanson wants to merge 8 commits into
mainfrom
feat/gouda-deps
Draft

chore(deps): bump signet-sdk family to gouda cohort#277
rswanson wants to merge 8 commits into
mainfrom
feat/gouda-deps

Conversation

@rswanson
Copy link
Copy Markdown
Member

Summary

Brings init4tech/builder into the gouda rollup cohort alongside the lockstep PRs in the rest of the stack:

  • signet-{constants,sim,tx-cache,types,zenith,bundle} pinned to init4tech/signet-sdk@ecce6a4 (sdk#236)
  • init4-bin-base pinned to init4tech/bin-base@b2f92e4 (bin-base#149)
  • signet-{block-processor,genesis} pinned to init4tech/node-components@752fa4a (node-components#144)

Companion to init4tech/signet#105 cut 4 in the parmigiana gouda rollout (see /tmp/parmigiana-deploy-progress.md).

Scope deviations from the design doc

The spec at docs/superpowers/specs/2026-05-18-gouda-builder-deps-bump-design.md was written pre-triage; a few changes turned out to be functionally required and are larger than "mechanical rename":

  1. rust-version bumped 1.881.92init4-bin-base @ b2f92e4 declares rust-version = "1.92", and the build refuses to compile against the lower MSRV.
  2. Active [patch.crates-io] section added — prevents a diamond-dep duplication where signet-evm/signet-extract/signet-journal (transitively pulled in by init4-bin-base's internal deps) would otherwise resolve to crates.io 0.18 alongside our git-rev 0.19 copies. The previously committed [patch.crates-io] section was a fully-commented dev-convenience block; the new section is active.
  3. signet-block-processor removed (not pinned) — its only used symbol revm_spec was deleted in the gouda branch. The equivalent logic is inlined in src/tasks/block/cfg.rs using EthereumHardforks::is_osaka_active_at_timestamp to return SpecId::OSAKA or SpecId::PRAGUE.
  4. New local BundleClient + BundleCacheError in src/tasks/cache/bundle.rs — replaces init4_bin_base::perms::tx_cache::BuilderTxCache. This is forced by a type incompatibility: init4-bin-base @ b2f92e4 itself pins signet-tx-cache = "0.18.0" (crates.io), which yields different nominal types than our signet-tx-cache @ ecce6a4 (0.19.0 git). The [patch.crates-io] section can't bridge it because 0.19.0 doesn't satisfy ^0.18.0. Cleanest path forward would be bin-base updating its own pin; until then the local copy unblocks the gouda image cut.

Image

Built locally with docker buildx --platform linux/arm64 --ssh default on orbstack (native arm64 on Apple Silicon — no QEMU). Pushed to:

  • 637423570300.dkr.ecr.us-east-1.amazonaws.com/zenith-builder-example:gouda-c19ce64
  • 637423570300.dkr.ecr.us-east-1.amazonaws.com/zenith-builder-example:gouda-latest

Digest: sha256:26c75cd5e33f36dc3767b0af1e4d89498d85ae6caf2ebab17d2f1796a5f7d079

Remote docker buildx imagetools inspect confirms linux/arm64. ELF e_machine = 0xb7 (AArch64) on the local image, prior to push.

Reason for local build (vs. CI): the CI workflow init4tech/actions/.github/workflows/ecr-build-and-push.yml@main arch behavior is an open question flagged in the parmigiana progress doc — that audit is a separate follow-up.

Test plan

  • cargo build --release --bin zenith-builder-example (exits 0)
  • cargo fmt --all (no diff)
  • make clippy (passes with -D warnings)
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps (passes)
  • make test (18/18 unit tests pass)
  • [~] cargo test --features test-utils (all binaries compile; 1 runtime test test_handle_build skipped — requires live host RPC, returned 503; not a regression)
  • arm64 image: local manifest = linux/arm64, ELF e_machine = 0xb7
  • Remote ECR manifest re-verified linux/arm64
  • Deployment into parmigiana namespace (owned by node-ops; out of scope for this PR)
  • CI workflow arch audit (out of scope; separate follow-up)

🤖 Generated with Claude Code

rswanson and others added 8 commits May 18, 2026 10:12
Captures the approved design for bringing the builder into the gouda
rollup cohort alongside signet PR #105: dep pins switch to git-rev
against the 0.19-family cohort SHAs, inline API porting for the
0.16→0.19 jump, local arm64 image build pushed to ECR. K8s manifest
changes and CI workflow arch audit are explicitly out of scope.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
7-phase plan (A through G): worktree verify, Cargo.toml dep bump,
iterative API porting against the 0.16->0.19 jump, lint/fmt/doc/test
gates, local arm64 buildx image, ECR push with dual arch verification,
draft PR + parmigiana progress doc update. Includes explicit stop-and-
surface triggers for transitive dep conflicts, structural API changes,
arm64 manifest poisoning, and unknown ECR repo.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- init4-bin-base @ b2f92e4 (bin-base#149)
- signet-{constants,sim,tx-cache,types,zenith} @ ecce6a4 (signet-sdk#236)
- signet-{block-processor,genesis} @ 752fa4a (node-components#144)
- signet-bundle (dev-dep) @ ecce6a4

Matches the lockstep pin set used by signet#105 cut 4. Build/test fixes
follow in subsequent commits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Unify signet-sdk git revs to full hash (ecce6a48…) so they match
node-components and bin-base transitive deps; bump rust-version to 1.92;
add [patch.crates-io] to redirect crates.io 0.18 signet-sdk packages to
the git 0.19 versions (not effective yet — resolved via direct usage);
remove signet-block-processor dep (revm_spec removed upstream); bump
roaring 0.11.3→0.11.4 to fix Clone bound on Iter.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
cfg.rs: remove dependency on signet_block_processor::revm_spec (removed
upstream); inline equivalent spec-ID logic using EthereumHardforks trait
directly from reth_chainspec.

bundle.rs: replace init4_bin_base::perms::tx_cache::BuilderTxCache (wraps
crates.io signet-tx-cache 0.18) with local BundleClient using signet-tx-cache
0.19 git types; this eliminates the nominal type mismatch between 0.18
CachedBundle/TxRequirement and signet-sim 0.19 check_bundle_tx_list.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Restore `pub` visibility on `BundleCacheError` and
`BundlePoller::check_bundle_cache` — Phase C narrowed both to
`pub(crate)` which broke the integration test in `tests/`.

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

- Cargo.toml: add comment block above [patch.crates-io] explaining why
  it's active (init4-bin-base's transitive deps pull crates.io 0.18 copies
  of signet-evm/extract/journal; patch redirects our direct resolution to
  the 0.19 git rev). Patch does not bridge init4-bin-base's own internal
  0.18 sub-graph, which is why BundleClient is needed.
- src/tasks/cache/bundle.rs: switch BundleClient::get_bundles from
  #[instrument(skip_all)] to #[instrument(skip(self))] to match the repo
  CLAUDE.md tracing convention.
- .claude/CLAUDE.md: bump documented MSRV from 1.88 to 1.92 to reflect
  the actual change forced by init4-bin-base @ b2f92e4.
- Cargo.lock: drop orphan full-SHA pin (kept short-rev b2f92e4 to match
  node-components @ 752fa4ad which itself references bin-base by the
  short rev — using the full rev would split the lock into two
  init4-bin-base entries despite resolving to the same commit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Phase C's replacement of signet_block_processor::revm_spec used reth's
ChainSpec-based hardfork lookup, which requires per-chain genesis
registration. The chainspec() match arm only listed parmigiana and
mainnet rollup chain ids; constructing a SignetCfgEnv with the gouda
rollup chain id (792669) fell through to the catch-all
unimplemented!("Unknown chain ID: 792669"), crashing the simulator
on first block environment update.

- Add gouda::RU_CHAIN_ID to the rollup match arm.
- Add gouda::RU_CHAIN_ID -> GOUDA_GENESIS in initialize_ru_chainspec.
- Add gouda_cfg_env_does_not_panic regression test.

Host chain id is unchanged from parmigiana (3151908) so the host arm
already covers gouda's host without modification.

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.

1 participant