diff --git a/product-sdk/examples/chain-client-demo/e2e/fixtures.ts b/product-sdk/examples/chain-client-demo/e2e/fixtures.ts index 477d7eb7..1004ae1f 100644 --- a/product-sdk/examples/chain-client-demo/e2e/fixtures.ts +++ b/product-sdk/examples/chain-client-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5260"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/contracts-demo/e2e/fixtures.ts b/product-sdk/examples/contracts-demo/e2e/fixtures.ts index 51e3f04f..b1bfb3b9 100644 --- a/product-sdk/examples/contracts-demo/e2e/fixtures.ts +++ b/product-sdk/examples/contracts-demo/e2e/fixtures.ts @@ -13,10 +13,10 @@ const PRODUCT_URL = "http://localhost:5201"; /** * Paseo Asset Hub config with a configurable RPC endpoint. - * Override via `PASEO_AH_RPC` if the default RPC has outages — but the override - * must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still pointing at - * v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` and - * break the chain-handshake. + * + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/host-demo/e2e/fixtures.ts b/product-sdk/examples/host-demo/e2e/fixtures.ts index 0c4d4d45..d5078f84 100644 --- a/product-sdk/examples/host-demo/e2e/fixtures.ts +++ b/product-sdk/examples/host-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5240"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/keys-demo/e2e/fixtures.ts b/product-sdk/examples/keys-demo/e2e/fixtures.ts index 04f8a1c6..8f612ab6 100644 --- a/product-sdk/examples/keys-demo/e2e/fixtures.ts +++ b/product-sdk/examples/keys-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5270"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/signer-demo/e2e/fixtures.ts b/product-sdk/examples/signer-demo/e2e/fixtures.ts index 09b08167..6a0ede0f 100644 --- a/product-sdk/examples/signer-demo/e2e/fixtures.ts +++ b/product-sdk/examples/signer-demo/e2e/fixtures.ts @@ -13,10 +13,11 @@ export const SS58_PREFIX = 0; const PRODUCT_URL = "http://localhost:5210"; /** - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Paseo Asset Hub config with a configurable RPC endpoint. + * + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/statement-store-demo/e2e/fixtures.ts b/product-sdk/examples/statement-store-demo/e2e/fixtures.ts index ca842b6c..4019b0ec 100644 --- a/product-sdk/examples/statement-store-demo/e2e/fixtures.ts +++ b/product-sdk/examples/statement-store-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5220"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/storage-demo/e2e/fixtures.ts b/product-sdk/examples/storage-demo/e2e/fixtures.ts index ed7f44cd..a7e0827c 100644 --- a/product-sdk/examples/storage-demo/e2e/fixtures.ts +++ b/product-sdk/examples/storage-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5250"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/examples/tx-demo/e2e/fixtures.ts b/product-sdk/examples/tx-demo/e2e/fixtures.ts index 01ec30d5..b5c95c6c 100644 --- a/product-sdk/examples/tx-demo/e2e/fixtures.ts +++ b/product-sdk/examples/tx-demo/e2e/fixtures.ts @@ -15,10 +15,9 @@ const PRODUCT_URL = "http://localhost:5200"; /** * Paseo Asset Hub config with a configurable RPC endpoint. * - * Override via `PASEO_AH_RPC` in CI/local if the default RPC has outages — but - * the override must serve **paseo v2** (genesis `0xbf0488db…`). Any mirror still - * pointing at v1 paseo will hash-mismatch the spread `PASEO_ASSET_HUB.genesisHash` - * and break the chain-handshake (manifesting as `Tracking stopped` / `BadProof`). + * Override via `PASEO_AH_RPC` if the default RPC has outages. The override must + * serve the same chain as `PASEO_ASSET_HUB.genesisHash`; a mirror on any other + * genesis fails the chain handshake (seen as `Tracking stopped` / `BadProof`). */ const PASEO_AH: ChainConfig = { ...PASEO_ASSET_HUB, diff --git a/product-sdk/packages/chain-client/src/presets.ts b/product-sdk/packages/chain-client/src/presets.ts index 7c0de3bf..1d9264b6 100644 --- a/product-sdk/packages/chain-client/src/presets.ts +++ b/product-sdk/packages/chain-client/src/presets.ts @@ -180,9 +180,9 @@ if (import.meta.vitest) { const GENESIS = { polkadot_asset_hub: "0x68d56f15f85d3136970ec16946040bc1752654e906147f7e43e9d539d7c3de2f", kusama_asset_hub: "0x48239ef607d7928874027a43a67689209727dfb3d3dc5e5b03a39bdc2eda771a", - paseo_asset_hub: "0xbf0488dbe9daa1de1c08c5f743e26fdc2a4ecd74cf87dd1b4b1eeb99ae4ef19f", + paseo_asset_hub: "0x23e730eb1c6fecae09c917439a5038cb6122d0d48980e8b9bbf0ff56f94a2ca6", paseo_bulletin: "0x8cfe6717dc4becfda2e13c488a1e2061ff2dfee96e7d031157f72d36716c0a22", - paseo_individuality: "0xc5af1826b31493f08b7e2a823842f98575b806a784126f28da9608c68665afa5", + paseo_individuality: "0x89a63b11fef2c0273fc72c0d864da0793a665dade5db153e0cab995348c5440f", devnet_asset_hub: "0xd6eec26135305a8ad257a20d003357284c8aa03d0bdb2b357ab0a22371e11ef2", devnet_bulletin: "0xe101f0fa4627d29a257645e02be86d80378fea1a2bf8fa6a918d150ebc760a59", devnet_individuality: "0xe6c30d6e148f250b887105237bcaa5cb9f16dd203bf7b5b9d4f1da7387cb86ec", diff --git a/product-sdk/packages/descriptors/.papi/metadata/paseo_asset_hub.scale b/product-sdk/packages/descriptors/.papi/metadata/paseo_asset_hub.scale index 24a46e10..2e547a7c 100644 Binary files a/product-sdk/packages/descriptors/.papi/metadata/paseo_asset_hub.scale and b/product-sdk/packages/descriptors/.papi/metadata/paseo_asset_hub.scale differ diff --git a/product-sdk/packages/descriptors/.papi/metadata/paseo_individuality.scale b/product-sdk/packages/descriptors/.papi/metadata/paseo_individuality.scale index ae5862de..efb183e5 100644 Binary files a/product-sdk/packages/descriptors/.papi/metadata/paseo_individuality.scale and b/product-sdk/packages/descriptors/.papi/metadata/paseo_individuality.scale differ diff --git a/product-sdk/packages/descriptors/chains/paseo-asset-hub/.papi/polkadot-api.json b/product-sdk/packages/descriptors/chains/paseo-asset-hub/.papi/polkadot-api.json index 19899eaa..214ca5d8 100644 --- a/product-sdk/packages/descriptors/chains/paseo-asset-hub/.papi/polkadot-api.json +++ b/product-sdk/packages/descriptors/chains/paseo-asset-hub/.papi/polkadot-api.json @@ -5,8 +5,8 @@ "paseo_asset_hub": { "wsUrl": "wss://paseo-asset-hub-next-rpc.polkadot.io", "metadata": "../../.papi/metadata/paseo_asset_hub.scale", - "genesis": "0xbf0488dbe9daa1de1c08c5f743e26fdc2a4ecd74cf87dd1b4b1eeb99ae4ef19f", - "codeHash": "0xd89ebe4efd0300ac8a75980e1007bf7df579d9778f4b3aec87a25b519030cd74" + "genesis": "0x23e730eb1c6fecae09c917439a5038cb6122d0d48980e8b9bbf0ff56f94a2ca6", + "codeHash": "0xbe7baeef2ed57543b860933d78ee5a1dc3b46a74aa42250bd3f24bfdd1ce06b8" } } } diff --git a/product-sdk/packages/descriptors/chains/paseo-asset-hub/generated/package.json b/product-sdk/packages/descriptors/chains/paseo-asset-hub/generated/package.json index 1aa1e921..5dc7f771 100644 --- a/product-sdk/packages/descriptors/chains/paseo-asset-hub/generated/package.json +++ b/product-sdk/packages/descriptors/chains/paseo-asset-hub/generated/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.0-autogenerated.481490637468446631", + "version": "0.1.0-autogenerated.16534415113257585179", "name": "@polkadot-api/descriptors", "files": [ "dist" diff --git a/product-sdk/packages/descriptors/chains/paseo-individuality/.papi/polkadot-api.json b/product-sdk/packages/descriptors/chains/paseo-individuality/.papi/polkadot-api.json index 18d41103..4e045f45 100644 --- a/product-sdk/packages/descriptors/chains/paseo-individuality/.papi/polkadot-api.json +++ b/product-sdk/packages/descriptors/chains/paseo-individuality/.papi/polkadot-api.json @@ -5,8 +5,8 @@ "paseo_individuality": { "wsUrl": "wss://paseo-people-next-system-rpc.polkadot.io", "metadata": "../../.papi/metadata/paseo_individuality.scale", - "genesis": "0xc5af1826b31493f08b7e2a823842f98575b806a784126f28da9608c68665afa5", - "codeHash": "0x8f44f5f86d5d52ee943125f13a918207bae81dfbc00da0501b775d8118fda461" + "genesis": "0x89a63b11fef2c0273fc72c0d864da0793a665dade5db153e0cab995348c5440f", + "codeHash": "0x3973b0f94d593b0018753766422f4898987115b5261ba368ccda84619a8bf582" } } } diff --git a/product-sdk/packages/descriptors/chains/paseo-individuality/generated/package.json b/product-sdk/packages/descriptors/chains/paseo-individuality/generated/package.json index edcbbf62..db0466d4 100644 --- a/product-sdk/packages/descriptors/chains/paseo-individuality/generated/package.json +++ b/product-sdk/packages/descriptors/chains/paseo-individuality/generated/package.json @@ -1,5 +1,5 @@ { - "version": "0.1.0-autogenerated.5596200320699624403", + "version": "0.1.0-autogenerated.18429223142224932464", "name": "@polkadot-api/descriptors", "files": [ "dist" diff --git a/product-sdk/pending-changesets/descriptors-paseo-genesis-reset.md b/product-sdk/pending-changesets/descriptors-paseo-genesis-reset.md new file mode 100644 index 00000000..624d8856 --- /dev/null +++ b/product-sdk/pending-changesets/descriptors-paseo-genesis-reset.md @@ -0,0 +1,48 @@ +--- +"@parity/product-sdk-descriptors": minor +"@parity/product-sdk": minor +--- + +**Re-pin `paseo-individuality` and `paseo-asset-hub` after a genesis reset (#242).** + +Both chains were re-genesised, not upgraded, so the bundled descriptors addressed chains that +no longer exist. Access is gated on +`featureSupported({ tag: "Chain", value: { genesisHash } })`, so a stale genesis fails at +connection with `ChainNotSupportedError` before any storage read. A stale `codeHash` only +means decoding against an old metadata snapshot; a stale genesis means addressing a chain +that is not there. + +| Chain | Old genesis | New genesis | +|---|---|---| +| `paseo-individuality` | `0xc5af1826…65afa5` | `0x89a63b11…48c5440f` | +| `paseo-asset-hub` | `0xbf0488db…ae4ef19f` | `0x23e730eb…f94a2ca6` | + +**Breaking for `paseo-individuality`: the regeneration removes typed API surface.** A green +`pnpm typecheck` here does not clear consumers, so check this before upgrading. + +| Pallet | Removed | Replacement | +|---|---|---| +| `Resources` | storage `FriendRequestRegistrationByAlias`, `FriendRequestAliasByAccount` | `NotificationRegistrationByAlias`, `NotificationAliasByAccount` | +| `Resources` | 6 `FriendRequest*` constants | 4 `Notification*` constants | +| `Game` | storage `Nfts`, `NftCandidates` | none | +| `Coinage` | storage `RecyclersUnloaded` | `RecyclerAliasStates`, `RecyclersArchives` | + +`FriendRequestAllowance`, `FriendRequestSlotsPerPeriod`, `LiteFriendRequestSlotsPerPeriod` and +`FriendRequestPeriodDuration` map onto `Notification*` equivalents. +`FriendRequestGraceWindow` and `FriendRequestRetentionDuration` have no counterpart. + +Added to `paseo-individuality`: pallets `RelayRandomness` and `NftCredits`, `Game` storage +`LiteInvites`, `Game` constant `max_received_votes`. + +`paseo-asset-hub` is additive only: pallets `Scarcity` and `NftClaims`, plus `DotnsGateway` +constants `MaxValiditySeconds` and `MaxFutureSkewSeconds`. Safe to upgrade. + +Minor rather than patch because surface is removed, which on 0.x signals a breaking change. +This is a firmer reason than the additive-only argument used for the 0.9.0 `paseo-bulletin` +bump. A re-pin that neither adds nor removes pallets stays a patch, as in 0.8.0. + +If you pinned either hash yourself, read it from the descriptor (`loadDescriptors()`) instead. +Paseo Next is re-genesised periodically, so any copy goes stale on its own schedule. + +The five other chains reported in #242 have unchanged genesis and need a separate routine +regeneration. #242 stays open until those land. diff --git a/product-sdk/pnpm-lock.yaml b/product-sdk/pnpm-lock.yaml index 5144729f..6e8c8154 100644 --- a/product-sdk/pnpm-lock.yaml +++ b/product-sdk/pnpm-lock.yaml @@ -7,8 +7,8 @@ settings: catalogs: default: '@parity/host-api-test-sdk': - specifier: ^0.12.0 - version: 0.12.0 + specifier: ^0.12.1 + version: 0.12.1 '@parity/truapi': specifier: ^0.7.0 version: 0.7.0 @@ -87,7 +87,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -118,7 +118,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -149,7 +149,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -171,7 +171,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -199,7 +199,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -237,7 +237,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -259,7 +259,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -284,7 +284,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -318,7 +318,7 @@ importers: devDependencies: '@parity/host-api-test-sdk': specifier: 'catalog:' - version: 0.12.0(@playwright/test@1.60.0) + version: 0.12.1(@playwright/test@1.60.0) '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -1646,8 +1646,8 @@ packages: multiformats: ^13.4.1 polkadot-api: ^2.1.2 - '@parity/host-api-test-sdk@0.12.0': - resolution: {integrity: sha512-0+F7kUA35UzweaP1S7AHl0XeMor9v8BH7Hbi8NbNsk9OGYp3uOqqYQ6Tpv/U9in8Y2tCQQLtTGnN1LuNxcqEgA==} + '@parity/host-api-test-sdk@0.12.1': + resolution: {integrity: sha512-VprtVqoLhZfs8W5CcD8hu6xoJ9gPxDzSzEmsH5cTecceH7NCvcuJTKHpTq9J2mLvdy+TBmK6mMkeTyMCqZVzYw==} peerDependencies: '@playwright/test': '>=1.0.0' peerDependenciesMeta: @@ -3899,7 +3899,7 @@ snapshots: multiformats: 13.4.2 polkadot-api: 2.1.6(esbuild@0.28.1)(rxjs@7.8.2) - '@parity/host-api-test-sdk@0.12.0(@playwright/test@1.60.0)': + '@parity/host-api-test-sdk@0.12.1(@playwright/test@1.60.0)': dependencies: '@novasamatech/host-api': 0.9.4 optionalDependencies: diff --git a/product-sdk/pnpm-workspace.yaml b/product-sdk/pnpm-workspace.yaml index 0e3b8991..15e8f07c 100644 --- a/product-sdk/pnpm-workspace.yaml +++ b/product-sdk/pnpm-workspace.yaml @@ -4,7 +4,7 @@ packages: - "scripts/bench-consumer" catalog: - "@parity/host-api-test-sdk": ^0.12.0 + "@parity/host-api-test-sdk": ^0.12.1 "@parity/truapi": ^0.7.0 "@playwright/test": ^1.60.0 "@polkadot-api/json-rpc-provider": ^0.2.0 @@ -32,3 +32,6 @@ onlyBuiltDependencies: allowBuilds: "@biomejs/biome": true esbuild: true + +minimumReleaseAgeExclude: + - '@parity/host-api-test-sdk@0.12.1'