Skip to content
Cosmopediaby Unity Nodes
Documentationcosmos/cosmos-sdk-migration-mcpcosmos/cosmos-sdk-migration-mcp › src › cosmos_migration_mcp › migration_spec › v50-to-v54View on cosmos/cosmos-sdk-migration-mcp ↗

── verification ────────────────────────────────────────────────────────────

id: circuit-contrib-migration title: x/circuit moved to contrib version: v50+ -> v54 description: | The x/circuit module has been moved to contrib/x/circuit. It is still available and functional, but it will not be actively maintained by the core Cosmos SDK team going forward. Chains using circuit should be aware that they are taking on responsibility for this module long-term, or should plan to remove it.

What this spec does:

  • Rewrites import paths: cosmossdk.io/x/circuit → contrib/x/circuit
  • Emits an end-of-run warning about the contrib move
  • Keeps all keeper wiring, store keys, and module registrations in place

What this spec does NOT do:

  • Remove the CircuitKeeper from your app (it remains wired)
  • Remove circuit from module ordering (it remains registered)

If you want to fully remove circuit, also apply the circuit-removal spec (not yet written — remove manually and delete all app.CircuitKeeper references).

upstream_sources:

  • docs://upgrading/v0.54
  • docs://changelog/v0.54-breaking

depends_on:

  • core-sdk-migration

detection: imports: - cosmossdk.io/x/circuit - github.com/cosmos/cosmos-sdk/contrib/x/circuit # post-rewrite path patterns: - app.CircuitKeeper - circuitkeeper.NewKeeper - circuitante

changes:

── imports ──────────────────────────────────────────────────────────────

imports: rewrites: - old: cosmossdk.io/x/circuit new: github.com/cosmos/cosmos-sdk/contrib/x/circuit all_packages: true

warnings:
  # Warn on both pre-rewrite and post-rewrite paths, since the warning
  # check runs before and after import rewriting depending on the tool.
  - prefix: cosmossdk.io/x/circuit
    message: >
      this module has been moved to contrib and will not be maintained
      by the Cosmos SDK team.
    fatal: false
  - prefix: github.com/cosmos/cosmos-sdk/contrib/x/circuit
    message: >
      this module has been moved to contrib and will not be maintained
      by the Cosmos SDK team.
    fatal: false

── text replacements ─────────────────────────────────────────────────

text_replacements: # Remove the circuitante import — it was only needed for the custom ante wrapper. - old: "\tcircuitante "cosmossdk.io/x/circuit/ante"\n" new: ""

- old: "\tcircuitante \"github.com/cosmos/cosmos-sdk/contrib/x/circuit/ante\"\n"
  new: ""

# app.go: remove leftover circuit module order entries
# (circuit is still registered via module.NewManager but the explicit
# SetOrder* entries for contrib modules are cleaned up here)
- old: "\t\tcircuittypes.ModuleName,\n"
  new: ""
  file_match: app.go

# NOTE: The ante handler rewrite (NewAnteHandler → ante.NewAnteHandler,
# HandlerOptions wrapper removal) is handled by ante.yaml, not here.
# The two specs are complementary: circuit.yaml handles imports/warnings,
# ante.yaml handles the ante.go deletion and call-site rewrite.

NOTE: ante.go deletion is handled exclusively by ante.yaml.

Do not declare file_removals here to avoid duplication.

── verification ────────────────────────────────────────────────────────────

verification: must_not_import: - cosmossdk.io/x/circuit # old path must be gone must_not_contain: - pattern: circuitante - pattern: NewAnteHandler(\n\t\tHandlerOptions{ # old wrapper pattern