Skip to content

Test13 hardfork strategy & rollout plan #5558

@moul

Description

@moul

This PR tracks the work to launch test13 as a hardfork of gnoland1, using the same tooling stack as gnoland-1 (gnogenesis fork generate + post-replay govDAO migrations).

Plan

Phase 1 — bootstrap from #5486

  1. Fork PR test(hf-glue): hardfork end-to-end testbed (DO NOT MERGE) — integrates #5511 + #5376 #5486 (moul/hf-glue-experimental) as the starting point. It already has: InitialHeight fork support, PastChainIDs genesis-mode, --patch-realm, --migration-tx, post-replay valset-swap migration, full replay verified against gnoland1.
  2. Adapt for test13 — swap chain IDs (gnoland-1test-13), point misc/deployments/ at a test-13/ directory parallel to gnoland-1/, update seed node / RPC defaults.
  3. Local iterationmake reset init fetch up loop against a local gnoland-1 RPC until genesis builds cleanly and replays with 0 failures.

Phase 2 — pull in the backlog

  1. Cherry-pick the ~100 commits Morgan identified for test13 (realm upgrades, VM fixes, SDK changes, etc.). Rebase them onto the hardfork branch in logical batches; each batch is a hf_patch_addpkg / code change / keeper change.
  2. Local iteration again — replay + boot + smoke-test after each batch. Triage failures in situ (skip-list vs fix-forward).

Phase 3 — coordinated fork

  1. Switch source from RPC to local blockstore — use gnogenesis fork generate --source /path/to/stopped-node-data (already supported via fetch-from-dir flow). This lets validators do a coordinated stop at height N and each generate a bit-for-bit identical genesis from their own local data, instead of depending on a live RPC.
  2. Multi-node dress rehearsal — coordinate with the validator set to run the full stop→generate→boot flow on a shared testnet cluster. Cross-check sha256(genesis.json) across all participants.

Phase 4 — split for review

  1. Once the integrated branch works end-to-end, split into three reviewable PRs:

Splitting late (not early) because the integrated branch is what we actually test; the PRs are a reviewability artifact, not a development model.

Why this order

Risks / open questions

  • 100-commit backlog may surface hardfork-incompatible changes; budget time for triage.
  • govDAO migration txs need per-chain review (test13 validators ≠ gnoland1 validators).
  • Need consensus on stop height ahead of phase 3.

Dependencies

  • #5486 — hardfork tooling (parent)
  • #5511 — hardfork logic primitives
  • Morgan's cherry-pick list (link TBD)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Status

Triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions