Background
The contract migrate() currently reads a single shadow, v3_12_0_state::MpcContract — i.e. it migrates from 3.12.0. That is correct today: per crates/contract-history (hash-checked against on-chain), current_mainnet()/current_testnet() are both version_3_12_0(), so 3.12.0 is the live baseline on both networks. 3.13.0 is tagged but not yet deployed, and there is no 3.13.0 wasm archived.
Once 3.13.0 is actually deployed, the next state-changing release must migrate from 3.13.0, not 3.12.0 — otherwise it will fail to deserialize the live state and brick the upgrade. This mirrors #3584 (which bumped the baseline 3.11.2 → 3.12.0).
Acceptance Criteria
Resources
Background
The contract
migrate()currently reads a single shadow,v3_12_0_state::MpcContract— i.e. it migrates from 3.12.0. That is correct today: percrates/contract-history(hash-checked against on-chain),current_mainnet()/current_testnet()are bothversion_3_12_0(), so 3.12.0 is the live baseline on both networks. 3.13.0 is tagged but not yet deployed, and there is no 3.13.0 wasm archived.Once 3.13.0 is actually deployed, the next state-changing release must migrate from 3.13.0, not 3.12.0 — otherwise it will fail to deserialize the live state and brick the upgrade. This mirrors #3584 (which bumped the baseline 3.11.2 → 3.12.0).
Acceptance Criteria
signer-3_13_0.wasmincrates/contract-history; pointcurrent_mainnet()/current_testnet()atversion_3_13_0()and update the on-chain-hash assertioncrates/contract/src/v3_13_0_state.rsshadowing the 3.13.0 layout; dropv3_12_0_state.rsmigrate()(pub mod+try_state_read) tov3_13_0_stateupgrade_to_current_contractsandbox test passes against the new baselineResources
last_used+ twoConfigfields, so the next migration must account for the 3.13.0 layout)