Skip to content

Remove AssetHub<>AssetHub message lanes - #3314

Merged
bkontur merged 3 commits into
masterfrom
remove-ah-message-lanes
Aug 10, 2026
Merged

Remove AssetHub<>AssetHub message lanes#3314
bkontur merged 3 commits into
masterfrom
remove-ah-message-lanes

Conversation

@bkontur

@bkontur bkontur commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

The AssetHubRococo<>AssetHubWestend message lanes added in #3143 cannot run against any existing chain: neither AssetHub runtime includes pallet-bridge-messages (only pallet-xcm-bridge-hub-router), so the relay-messages asset-hub-rococo-to-bridge-hub-westend / asset-hub-westend-to-bridge-hub-rococo CLI options never had a target to relay to. Nothing in deployments/, the zombienet tests or the docs references them, and they are not wired into relay-headers-and-messages.

Keeping them forced the two AssetHub relay-client codegens to be generated from bridging-enabled asset_hub_*_runtime blobs that are not reproducible from this repo, which is why the polkadot-sdk-bump codegen refresh had to skip them.

Commit 1 removes the two message lane modules, their FullBridge variants (whose names were copy-pasted from the parachains enum and read AssetHub..ToBridgeHub.. while relaying AssetHub -> AssetHub) and the now unused BridgeMessagesCall alias in both AssetHub clients — 22 deletions plus the two files.

Commit 2 regenerates both AssetHub codegens from the pinned polkadot-sdk (bfe72652), so they finally track the pin like every other rococo/westend relay-client.

AssetHub parachain head syncing — the actual subject of #3143 — is untouched: it uses the AssetHub clients only as a source parachain and submits to the BridgeHubs.

These lanes can be reintroduced once bridging on AssetHub lands in polkadot-sdk; the asset-hub-*/bridge-primitives crates are already there.

Validated: cargo clippy --all-targets --locked --workspace, cargo +nightly fmt --all, scripts/check-codegen-compat.py (COMPATIBLE).

Note on merge order with #3313 (polkadot-sdk bump): whichever lands second needs the AssetHub codegens regenerated at the then-current pin. If this merges first, #3313 can drop its "AssetHubs excluded" caveat and regenerate all six chains normally.

The AssetHubRococo<>AssetHubWestend message lanes added in #3143 cannot
run against any existing chain: neither AssetHub runtime includes
pallet-bridge-messages (only pallet-xcm-bridge-hub-router), so the
`relay-messages asset-hub-rococo-to-bridge-hub-westend` /
`asset-hub-westend-to-bridge-hub-rococo` CLI options have never had a
target to relay to. Nothing in deployments/, the zombienet tests or the
docs references them, and they are not wired into
relay-headers-and-messages.

Keeping them forces the two AssetHub relay-client codegens to be
generated from bridging-enabled runtime blobs that are not reproducible
from this repo, which in turn keeps them out of the regular
polkadot-sdk-bump codegen refresh.

Removes the two message lane modules, their FullBridge variants (whose
names were copy-pasted from the parachains enum and said
AssetHub..ToBridgeHub.. while relaying AssetHub -> AssetHub) and the now
unused BridgeMessagesCall alias in both AssetHub clients.

AssetHub parachain head syncing -- the actual subject of #3143 -- is
untouched: it uses the AssetHub clients only as a source parachain and
submits to the BridgeHubs.

These lanes can be reintroduced once bridging on AssetHub lands in
polkadot-sdk; the bridge-primitives crates are already there.
With the AssetHub<>AssetHub message lanes gone, nothing references the
bridging types any more, so these two codegens can finally be generated
from the pinned polkadot-sdk (bfe72652) like every other rococo/westend
relay-client:

  scripts/generate-codegen.sh --target relay-clients \
    --chains "asset-hub-rococo asset-hub-westend"

Previously they came from bridging-enabled asset_hub_*_runtime blobs that
are not reproducible from this repo, which is why the polkadot-sdk-bump
codegen refresh had to skip them. Now they track the pin.

The EXECUTED COMMAND header is kept in its committed form so the diff
carries only type changes, not local machine paths.

Validated: cargo clippy --all-targets --locked --workspace,
cargo +nightly fmt --all and scripts/check-codegen-compat.py (COMPATIBLE).
@bkontur
bkontur enabled auto-merge (squash) August 10, 2026 12:22
@bkontur
bkontur requested a review from rosarp August 10, 2026 12:22
@bkontur
bkontur merged commit ad9daaf into master Aug 10, 2026
23 checks passed
@bkontur
bkontur deleted the remove-ah-message-lanes branch August 10, 2026 13:07
bkontur added a commit that referenced this pull request Aug 10, 2026
Now that #3314 made the AssetHub relay-client codegens track the pinned
polkadot-sdk, they are part of the regular bump refresh -- regenerate them
at cde8a924 too:

  scripts/generate-codegen.sh --target relay-clients \
    --chains "asset-hub-rococo asset-hub-westend"

AssetHubWestend drops the parameters pallet and gains the PSM types
(PsmInfo, PsmAdminInfo, ExternalAssetInfo); AssetHubRococo only has minor
type changes.

All six rococo/westend relay-clients are now generated from the pin, so
the AssetHub exception described earlier no longer applies.
bkontur added a commit that referenced this pull request Aug 10, 2026
* Bump polkadot-sdk to cde8a924 and regenerate codegens

Moves the pinned polkadot-sdk revision from bfe72652 to cde8a924 (master,
2026-08-07, 58 commits) and regenerates the rococo/westend codegens from
the runtimes at that commit.

Notable runtime changes picked up: Westend drops the staking stack
(staking, nomination_pools, election_provider_multi_phase, fast_unstake,
voter_list) and AssetHubWestend drops the parameters pallet.

The relay-client version guards need no update -- all six rococo/westend
runtimes are still at spec_version 1_024_001 with unchanged
transaction_versions.

The AssetHub relay-client codegens are deliberately left untouched: they
are generated from bridging-enabled asset_hub_*_runtime blobs (#3143) and
not from polkadot-sdk, whose AssetHubs carry only
pallet-xcm-bridge-hub-router. Regenerating them from the SDK would drop
pallet_bridge_messages and break client-asset-hub-*/src/lib.rs.

Validated: cargo check --locked --workspace, clippy --all-targets, cargo
+nightly fmt --all (no-op) and scripts/check-codegen-compat.py
(COMPATIBLE). The zombienet suite was not run for this bump.

* Regenerate AssetHub codegens for the new pin

Now that #3314 made the AssetHub relay-client codegens track the pinned
polkadot-sdk, they are part of the regular bump refresh -- regenerate them
at cde8a924 too:

  scripts/generate-codegen.sh --target relay-clients \
    --chains "asset-hub-rococo asset-hub-westend"

AssetHubWestend drops the parameters pallet and gains the PSM types
(PsmInfo, PsmAdminInfo, ExternalAssetInfo); AssetHubRococo only has minor
type changes.

All six rococo/westend relay-clients are now generated from the pin, so
the AssetHub exception described earlier no longer applies.

* Remove unused dependencies reported by cargo udeps

`cargo +nightly udeps --workspace --all-targets --all-features` reported
three unused deps in substrate-relay:

* `bridge-runtime-common` -- not referenced anywhere in substrate-relay,
  and nothing else in the workspace depends on it, so it (and its
  exclusive dependency `pallet-bridge-relayers`) drops out of Cargo.lock
  entirely;
* `hex-literal` (dev-dependency) -- no `hex_literal`/`hex!` use left, in
  tests or doc-tests;
* `isahc` -- a false positive: it is declared only so the `static-ssl`
  feature can statically link OpenSSL and is never named in code. Record
  it in `package.metadata.cargo-udeps.ignore` so future runs stay clean.

The two workspace-level entries are dropped as well, since substrate-relay
was their only user.

Validated: cargo check --locked --workspace, clippy --all-targets,
cargo test --workspace, and cargo udeps ("All deps seem to have been
used").

* Remove dead imports from the zombie-ci gated tests

`cargo clippy --all-targets --locked --workspace` (as CI runs it) never
lints this code, because the `zombie-ci` feature is off by default, so
these went unnoticed:

* an unused `anyhow::anyhow` import in both `environment.rs` files;
* `free_balance_at` in the `rococo_westend` / `kusama_polkadot` re-export
  lists -- the call sites import it straight from `common::utils`.

`cargo clippy --all-targets --all-features --locked` is now warning-free.

* Drop the isahc dependency and the static-ssl feature

substrate-relay carried `isahc` plus a `static-ssl` feature purely to
statically link OpenSSL, with a TODO to remove both once the polkadot-sdk
pin contained paritytech/polkadot-sdk#12528. This
bump does: cde8a924 includes eb93f6d583d ("bridges: remove dead
FloatJsonValueMetric"), which dropped the libcurl-backed metric that made
`relay-utils` pull `isahc` in the first place.

At the new pin `relay-utils` has no HTTP client dependency at all, and the
only Cargo.lock entry referencing `isahc` was substrate-relay's own
optional declaration, so removing it drops isahc and its dependencies from
the lock entirely.

The feature is not needed to avoid a `libssl.so` runtime dependency:
`openssl-sys` is already built `vendored` (statically, from source) via
`sc-network -> litep2p[webrtc] -> str0m -> str0m-openssl`, and a release
binary built without `static-ssl` links only libgcc_s/libm/libc -- no
libssl/libcrypto. Since that comes from the dependency graph rather than
the build host, it holds in the bullseye CI container too, so the
zombienet workflow no longer passes `--features static-ssl`.

Validated: cargo check --locked --workspace, clippy --all-targets
--all-features, cargo test --workspace, cargo udeps ("All deps seem to
have been used") and `ldd` on the release binary.
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.

2 participants