Repository navigation
Fix Debug/Dev chain sync: list Avail DA Mainnet once in chains_dev.json - #1317
Closed
takemiyamakoto wants to merge 1 commit into
Closed
takemiyamakoto wants to merge 1 commit into
takemiyamakoto wants to merge 1 commit into
Conversation
remote-config/development/chains/v13/chains_dev.json listed Avail DA Mainnet (b91746b4...) twice, as the shared-features-utils f2ed4ccf list it was imported from already did. Debug and Fearless Dev builds read this list (F_DEV), and ChainSyncService.sanitizingRemoteChains refuses a list that repeats a chainId, so every sync failed and those builds kept only Bitcoin, Solana and Taira: no Polkaswap, no Substrate networks. Both copies were identical to the single production entry. Keep the one at the production position (after Viction, next to Avail Turing Testnet) and delete the other; no other entry changes. - Re-pin the file's ownedSha256 and log the correction in config/remote-config-imports.json. - scripts/verify-remote-config.py now fails on a versioned chain list that repeats a chainId; the previous audit passed this list. - Refresh the owned-registry table in docs/ChainRegistryVersions.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Nov 7, 2026
Remote config integrity: verify pins, list each chain once in the bundled list and chain types
#1318
Closed
Contributor
Author
|
Folded into #1326, which brings every open iOS PR into master in one change, so one code-owner approval covers it. This PR's branch is kept. |
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
Debug and Fearless Dev builds (
-DF_DEVinfearless.debug.xcconfigandfearless.dev.xcconfig) readremote-config/development/chains/v13/chains_dev.jsonfrommaster. That list had Avail DA Mainnet (b91746b45e0346cc2f815a520b9c6cb4d5c0902af848db0a80f85932d2e8276a) twice.ChainSyncService.sanitizingRemoteChainsrefuses a whole list that repeats a chainId (duplicateRemoteChainIdentifier), so every sync attempt failed and a fresh install kept only the app-owned Bitcoin, Solana and Taira chains: no Polkaswap, no SORA, no Substrate networks. This showed up in a Debug simulator run on 2026-11-07, where the app's stdout shows the error and the retries.Release builds read
remote-config/production/chains/v13/chains.json, which has one Avail entry. This PR doesn't change it.Root cause
The duplicate arrived with the import in #1305. Upstream
soramitsu/shared-features-utils@f2ed4ccfchains/v13/chains_dev.jsonalready listed Avail twice; its SHA-2565726b01a…is the manifest'supstreamSha256.scripts/verify-remote-config.pynever compared chainIds, so the audit passed this list.Changes
remote-config/development/chains/v13/chains_dev.json: delete the first Avail DA Mainnet copy (74 lines, deletions only). The two copies were byte-identical and equal to the production entry. The copy I kept is where production has it, after Viction and next to Avail Turing Testnet. The list goes from 78 to 77 chains, every chainId is unique, and no other entry changes (the new list equals the old one without index 59).config/remote-config-imports.json: re-pinownedSha256to26b9dc290ad22588888dee433f6d6f7dfbe2b3541d1cf738fadef37ceca14310and log the correction.scripts/verify-remote-config.py: the audit now fails when a versioned chain list (remote-config/*/chains/v*/chains*.json) repeats a chainId. Two new tests are inscripts/test-remote-config.py.docs/ChainRegistryVersions.md: refresh the owned-registry table. Its chain-list rows still had values from before the 2026-10-29 network removal. The production row now shows master's current value; this PR doesn't change that file.Evidence
This project runs no hosted CI. Every check below ran locally on a clean tree at the PR head,
1cbd9038d905e66110c8caa460e932227d6aba52(basedce8790cd).python3 scripts/test-remote-config.py -vpython3 scripts/verify-remote-config.py .{"documents": 34, "ownedReferences": 1995}, exit 0dce8790cddataremote-config/development/chains/v13/chains_dev.json: chainId b91746b4 is listed more than once, exit 1dce8790cddatapython3 scripts/deps/test-native-source.pypython3 scripts/deps/verify-native-source.py .python3 Native/scripts/test-xcm-read-only-boundary.pypython3 Native/scripts/test-authorized-rpc.pyownedSha256values match the filesownedReferencesdrops from 1997 to 1995 because the removed copy carried two icon URLs.Debug simulator check
I ran one Debug build of this commit on a fresh iPhone 17 simulator (iOS 26.5). A local patch, not committed, let the launch environment choose which ref of
remote-config/the app downloads:master(dce8790cd)Sync failed with error: duplicateRemoteChainIdentifier("b91746b4…")five times, retried after 0.8 s, 2.2 s, 6.0 s and 16.4 s. Never synced.Sync completedlisting all 77 chains (SORA Mainnet, Polkadot, Kusama and the other Substrate networks, Avail DA Mainnet once). No failures or retries.I didn't open Network management, because it needs a wallet. The sync log names every chain the app stored.
Debug and Dev builds read this file from
masterat runtime, so the fix reaches them when this merges. No new build is needed.Not in this PR (found while checking)
fearless/Modules/LiquidityPools/LiquidityPoolDetails/Resources/chains.jsonrepeats Manta Pacific Mainnet, Enjin Relaychain and Liberland, and its two Liberland copies differ.ChainSyncServicereads that file only when the compile-timefetchLocalDataflag istrue. The flag isfalsetoday; if it were flipped, the same sanitizer would refuse the list.remote-config/production/chains/all_chains_types.jsonlists chainId6d8d9f14…twice with different contents. That chain is in neither v13 list.ownedSha256pins. For this PR I checked all 949 by hand.Risk and rollback
This only changes app data, and Release builds are unaffected. To roll back, revert this commit; that restores the duplicate and the old pin.
🤖 Generated with Claude Code