Skip to content

fix(sn-manager): replace EVM rollback stack with minimal upgrade gate#316

Open
mateeullahmalik wants to merge 3 commits into
masterfrom
fix/master-minimal-evm-upgrade-gate
Open

fix(sn-manager): replace EVM rollback stack with minimal upgrade gate#316
mateeullahmalik wants to merge 3 commits into
masterfrom
fix/master-minimal-evm-upgrade-gate

Conversation

@mateeullahmalik

Copy link
Copy Markdown
Collaborator

Summary

Replace the broad sn-manager EVM preflight/rollback implementation with the minimal forward-only gate already merged and released through #315.

Commit sequence is intentionally auditable:

  1. revert fix(sn-manager): remove automatic EVM rollback #313;
  2. revert sn-manager: EVM preflight + auto-rollback (v2.6.1-testnet fix) #311;
  3. cherry-pick fix(sn-manager): gate unprepared v2.6 upgrades #315's minimal gate onto master.

The resulting tree is exactly master immediately before #311 plus the four-file #315 patch.

Behavior

Current SuperNode Target evm_key_name Automatic result
<2.6 <2.6 any unchanged
<2.6 >=2.6 non-empty allow
<2.6 >=2.6 missing/blank/unreadable block before download/install
>=2.6 forward target absent allow; never auto-rollback

The v2.6.0-testnet prerelease is treated as a v2.6 binary by comparing core versions.

Rationale

evm_key_name is transitional migration input, not durable proof of runtime validity. Its absence must not trigger an automatic downgrade. The manager only needs to prevent an unprepared pre-v2.6 node from crossing the v2.6 boundary.

#311/#313 expanded this into chain probing, rollback/history state, cross-process locking, channel/bootstrap changes, startup key validation, migration write-order changes, and related observability. Those concerns should not remain bundled into this narrow compatibility gate.

Explicit removals

This PR intentionally removes the behavior and hardening introduced by #311/#313, including:

The last item is useful CI coverage but is intentionally not retained inside this behavior-replacement PR. It can be proposed separately without coupling it to updater semantics.

Risks

  • Updater hardening unrelated to the minimal gate is removed with the exact reverts.
  • An already-v2.6 node with invalid runtime key state is no longer handled by manager rollback or fix(sn-manager): remove automatic EVM rollback #313's additional startup algorithm check; existing SuperNode migration/startup behavior remains authoritative.
  • Blocked updates are visible in logs but no longer persisted in sticky status-marker state.

Partial failure

On a blocked transition, the updater returns before tarball lookup. The installed binaries, active symlink, persisted manager config, and restart marker remain unchanged.

Rollback strategy

Revert this PR as one unit before a new release. Do not operationally reintroduce automatic v2.5 rollback on nodes whose active keyring has already migrated to EVM format.

Migration

No chain or filesystem migration is required. This removes #311/#313 marker/locking behavior and retains the existing config schema plus the narrow read of supernode.evm_key_name.

Observability

State-machine impact

None.

  • State keys: unchanged
  • CheckTx / DeliverTx: unchanged
  • BeginBlock / EndBlock: unchanged
  • Determinism / replay: unchanged
  • Chain migration / upgrade handler: none

Verification

Using repository-required Go 1.26.2:

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