Skip to content

fix: register legacy IBC gov proposal content types in atomone gov fork#356

Merged
tbruyelle merged 1 commit into
release/v4.xfrom
fix/v4-gov-migration
Jul 22, 2026
Merged

fix: register legacy IBC gov proposal content types in atomone gov fork#356
tbruyelle merged 1 commit into
release/v4.xfrom
fix/v4-gov-migration

Conversation

@tbruyelle

Copy link
Copy Markdown
Collaborator

The v4 mainnet upgrade failed during the gov proposal migration with:

failed to migrate gov proposals: failed to get proposal value: no
concrete type registered for type URL /ibc.core.client.v1.ClientUpdateProposal
against interface *v1beta1.Content

The AtomOne gov module fork defines its own Content interface (atomone.gov.v1beta1.Content), and MsgExecLegacyContent unpacks its content Any against it. ibc-go registers ClientUpdateProposal and UpgradeProposal against the SDK's gov Content interface, but not against ours, so a historical mainnet proposal (#20) wrapping a ClientUpdateProposal failed to unpack during migration.

Register both legacy IBC 02-client proposal content types against the AtomOne Content interface, matching the existing manual registration of the params and upgrade proposal content types.

An audit of all 20 atomone-1 mainnet proposals confirms ClientUpdateProposal is the only missing registration; UpgradeProposal is registered defensively as it travels with it in ibc-go.

The v4 mainnet upgrade failed during the gov proposal migration with:

  failed to migrate gov proposals: failed to get proposal value: no
  concrete type registered for type URL /ibc.core.client.v1.ClientUpdateProposal
  against interface *v1beta1.Content

The AtomOne gov module fork defines its own Content interface
(atomone.gov.v1beta1.Content), and MsgExecLegacyContent unpacks its
content Any against it. ibc-go registers ClientUpdateProposal and
UpgradeProposal against the SDK's gov Content interface, but not against
ours, so a historical mainnet proposal (#20) wrapping a ClientUpdateProposal
failed to unpack during migration.

Register both legacy IBC 02-client proposal content types against the
AtomOne Content interface, matching the existing manual registration of
the params and upgrade proposal content types.

An audit of all 20 atomone-1 mainnet proposals confirms ClientUpdateProposal
is the only missing registration; UpgradeProposal is registered defensively
as it travels with it in ibc-go.
@tbruyelle
tbruyelle requested review from julienrbrt and removed request for jaekwon July 22, 2026 09:45

@julienrbrt julienrbrt left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

@tbruyelle
tbruyelle merged commit 85862ff into release/v4.x Jul 22, 2026
13 checks passed
@tbruyelle
tbruyelle deleted the fix/v4-gov-migration branch July 22, 2026 09:58
@julienrbrt

Copy link
Copy Markdown
Collaborator

We should backport this to main

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.

3 participants