Repository navigation
fix(ibc): enforce retired chain lifecycle - #697
Merged
Merged
Conversation
daedaluscoder
commented
Aug 14, 2026
daedaluscoder
left a comment
Collaborator
Author
There was a problem hiding this comment.
Code review: PASS\n\nReviewed exact head ce65f027a7735583a44df5474e7f2b5599d82f21 (tree 8baabedcd0034cffd81b057f998378b8a61b2f44, base-to-head binary diff SHA-256 3f779f60cb4fd7d3b6034a65d349c45e281bde95a713e26f22bf7bf04ac94e53).\n\nNo blocking correctness, lifecycle-safety, compatibility, security, or test findings remain. Verified exact supported-chain membership, deny-first deprecated/killed precedence, literal raw bridge state, canonical registry naming, fail-closed metadata behavior, retired transfer-data removal, prototype-key allowlist hardening, and v0.11.83 release-manifest alignment. Node 24 CI is green, including lint, generated-output checks, side-effect audit, full tests, build, package validation, and installed-package verification.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
axelar-dojo-1), Osmosis (osmosis-1), and Noble (noble-1), with every other counterparty deprecatedbridge.enabledvalue while exposing Carbon lifecycle separately throughcarbonLifecycleStatusand derivingisTransferAvailablechain_idmatches or maintained supported-chain identity instead of deriving directory names from revisioned chain IDskilledchains from becoming transfer-available when metadata is missing, stale, or reportsliveLifecycle contract
IBCModule.getChainInfoMap()retains bridge entries for historical/display consumers, but:carbonLifecycleStatus: "deprecated",isTransferAvailable: falsekilled:carbonLifecycleStatus: "supported", literalregistryStatus: "killed",isTransferAvailable: falsebridge.enabled: false,isTransferAvailable: falseDeprecated/killed entries are returned without reusable RPC/REST, fee, feature, explorer, or currency metadata. Remote registry failures cannot override Carbon's lifecycle result.
Evmos regression
evmos_9001-2is Carbon-deprecated before any per-chain lookup. The SDK therefore never requests the invalid.../evmos_9001/chain.jsonpath, never revives embedded Evmos endpoints after a 404, and always reports the entry unavailable even if the on-chain bridge remains enabled or a remote response sayslive.Tests
yarn test --runInBand— 237/237 passed (includes lint, CJS/ESM type builds, entrypoint checks, packed-artifact tests, and 13 IBC lifecycle regressions)node scripts/audit-side-effects.cjs— passed; reviewed fingerprints updatedSwitcheo/switcheo-disco@69c286882;yarn check:typescriptandVITE_DEPLOY_ENV=staging yarn buildboth passedDownstream Demex adaptation
This PR deliberately does not rewrite/filter canonical
TokenClient.bridges.ibcstate. Demex currently has paths that gate only onbridge.enabledand then consumechainInfoMapfor wallet/provider setup, fee estimation, and transfer execution. Before rollout, Demex should requirechainInfoMap[bridge.chain_id_name]?.isTransferAvailable === truewhen:Historical balance and transaction displays can continue using the retained chain ID / blockchain identity mappings.