Skip to content

Verify Beacon state across process restarts - #88

Draft
0x00101010 wants to merge 3 commits into
feat/beacon-state-restorefrom
test/beacon-process-restart
Draft

0x00101010 wants to merge 3 commits into
feat/beacon-state-restorefrom
test/beacon-process-restart

Conversation

@0x00101010

Copy link
Copy Markdown

Why

In-memory load tests cannot prove that graceful shutdown writes a usable checkpoint or that incompatible startup leaves it untouched. Exercise the real CLI across SIGTERM and restart.

What

  • Compare retained blocks, receipts, EVM block hashes, and exact JSON/SSZ blob bytes.
  • Check canonical clock and simulated-finality behavior after restart.
  • Reject incompatible startup without rewriting the saved state file.
  • Bound child-process waits and clean up children on failure.

Notes

  • Process-signal tests run on Unix; state and routing regressions remain cross-platform.
  • Implementation, tests, and review assisted by Amp.

@0x00101010

0x00101010 commented Oct 5, 2026 •

Copy link
Copy Markdown
Author

Local qualification at f514786ab: 347/347 selected offline tests passed across anvil, anvil-core, anvil-rpc and anvil-server with zero retries, including real SIGTERM/restart and incompatible-startup preservation. All-target/all-feature Anvil Clippy, workspace formatting and the no-default-features build passed. Independent reviews and follow-up reviews have no unresolved findings.

Review map: independent fixes #77, #78, #79; feature chain #80 → #81 → #82 → #83 → #84 → #85 → #86 → #87 → #88. #84 includes the #77/#78 branches, and #85 includes #79. Each feature PR targets its immediate parent.

CI qualification as of October 5, 21:25 UTC: #86 and #87 passed 341 and 345 Anvil tests respectively, with the same five Forge failures seen on the original PRs. Workspace crate checks passed on #86 and #88. The latest five runs had 29 cancellations without acquiring a runner, and #87 Clippy lost its runner during dependency compilation. The unchanged rustls advisory RUSTSEC-2026-0285 also fails cargo-deny. Earlier runs show pre-existing external-fixture dependency/RPC failures; the latest #87 external-fixture job is still running. All other jobs in the latest five runs have finished. Cancelled checks are unverified, not passes.

These drafts are not merge-ready. Dependency/CI maintenance needs a separate scope decision; no checks were disabled or manually rerun. The original #75/#76 branches and immutable devnet pin remain unchanged. This qualification does not claim live Base snapshot or Denim acceptance.

Comment generated by Amp.

Amp-Thread-ID: T-01a10d69-00b6-7378-855f-af2b1a148692
Amp-Thread-ID: T-01a10d69-00b6-7378-855f-af2b1a148692
@0x00101010

Copy link
Copy Markdown
Author

CI repairs from #89 are included at e04db3462. The selected Anvil suite passed 347/347 locally with zero retries, including both process-restart tests; the hosted main test suite passed too. The feature diff against the parent is unchanged.

This PR is not fully green: the external Convex fixture hit public archive-RPC rate limits, then timed out. Its other eleven external fixtures passed. Reliable external verification needs a CI-approved archive endpoint in the existing HTTP_ARCHIVE_URLS repository secret. A cancelled duplicate workflow is also being rerun to clear its stale aggregate result. No checks were disabled.

The earlier feature review evidence is stack-level, not twelve independently recorded per-parent review cycles. The maintenance changes received their own independent reviews. Comment generated by Amp.

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