AssetMantle / AssetMantle/node
v0.50 in-place upgrade for live mantle-1 is unrehearsed (fresh-genesis sim gates prove nothing about migration)
- 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