AssetMantle / AssetMantle/node

v0.50 in-place upgrade for live mantle-1 is unrehearsed (fresh-genesis sim gates prove nothing about migration)

Open
#110 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
42
Forks
16
PR merge metrics
No merged PRs in 30d

Description

The `rwa/phase2-sdk-upgrade` branch now boots and the four sim gates pass, but every gate starts from **fresh genesis** and validates zero migration behavior. The live `mantle-1` chain (running the deployed v1.x binary, SDK v0.47-era) must upgrade **in place**, and that path has never been exercised.

## What is unverified (grounded)
- The upgrade handler runs `RunMigrations` for the v0.4x -> v0.50 module migrations; none of these run in the sim (fresh genesis skips migration). The legacy `x/params` key tables were registered so migrations do not panic on a missing table, but whether each module's actual stored params migrate cleanly from mainnet bytes is untested.
- `StoreUpgrades.Added` was corrected to `{crisis, consensus}` by comparing against the deployed binary's store list **from memory**; this must be re-derived against an actual mainnet store export, not assumed.
- Applied-plan name `v2.0.0` replaces the burnt `v1-Yellow Spaceship` (verified applied at height 7,135,001 via `rest.assetmantle.one`). Correct, but the height/skip wiring is only meaningful once tested against real state.

## Proposed fix (no code decision needed to start)
Export current `mantle-1` state, run an in-place-testnet upgrade rehearsal (halt at the upgrade height, swap binary, resume), and make that rehearsal a release gate. Derive `StoreUpgrades.Added` and any param migration from the rehearsal, not from inspection.

## Fix-priority scorecard

| SEC | UX | AUTO | YAGNI | DELTA | FIN |
|-----|----|------|-------|-------|-----|
| 75 | 30 | 25 | 60 | 20 | 43 |

SEC high (a botched live upgrade halts/corrupts a chain holding real value); AUTO low (needs mainnet export + human-judged rehearsal), so this is a human-decision item, not autonomous-fix.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the upgrade handler's RunMigrations path and the StoreUpgrades.Added configuration on the rwa/phase2-sdk-upgrade branch, then compare them with an actual mantle-1 state export. Rehearse the upgrade by halting at the upgrade height, swapping the binary, and resuming; done means real state migrates cleanly and the rehearsal is a release gate.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems, release
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.