From 6c3219ebe9231a0305f53c7b33cb558d46058062 Mon Sep 17 00:00:00 2001
From: Alexander Samusev <41779041+alvicsam@users.noreply.github.com>
Date: Thu, 26 Sep 2024 20:51:29 +0200
Subject: [PATCH] [ci] Update CI image with rust 1.81.0 and 2024-09-11 (#5676)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

cc https://github.com/paritytech/ci_cd/issues/1035

cc https://github.com/paritytech/ci_cd/issues/1023

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Maksym H <1177472+mordamax@users.noreply.github.com>
Co-authored-by: gui <gui.thiolliere@gmail.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: ggwpez <ggwpez@users.noreply.github.com>
---
 .github/env                                   |   2 +-
 .github/scripts/generate-prdoc.py             |   6 +-
 .github/workflows/checks.yml                  |   8 +-
 .github/workflows/command-prdoc.yml           |   2 +-
 .github/workflows/tests-linux-stable.yml      |   5 +-
 .github/workflows/tests-misc.yml              |  16 +-
 .github/workflows/tests.yml                   |   6 +-
 .gitlab-ci.yml                                |   3 +-
 Cargo.toml                                    |   2 +-
 bridges/modules/grandpa/src/lib.rs            |   4 +-
 bridges/modules/xcm-bridge-hub/src/lib.rs     |  40 +-
 .../header-chain/src/justification/mod.rs     |  15 +-
 bridges/primitives/messages/src/lane.rs       |   6 +-
 .../src/cli/relay_headers_and_messages/mod.rs |   4 +-
 .../src/messages/metrics.rs                   |   3 +-
 .../src/on_demand/parachains.rs               |   3 +-
 .../messages/src/message_race_delivery.rs     |  44 +-
 .../messages/src/message_race_limits.rs       |  49 +-
 .../relays/messages/src/message_race_loop.rs  |  18 -
 .../messages/src/message_race_strategy.rs     |   6 +-
 .../outbound-queue/merkle-tree/src/lib.rs     |  20 +-
 .../primitives/router/src/inbound/mod.rs      |   6 +-
 .../primitives/router/src/outbound/mod.rs     |   3 +-
 .../runtime/runtime-common/src/lib.rs         |   3 +-
 cumulus/pallets/parachain-system/src/lib.rs   |   3 +-
 cumulus/pallets/xcmp-queue/src/mock.rs        |  61 +-
 .../asset-hub-rococo/src/tests/teleport.rs    |   4 +-
 .../asset-hub-westend/src/tests/teleport.rs   |   4 +-
 .../people-rococo/src/tests/teleport.rs       |   4 +-
 .../people-westend/src/tests/teleport.rs      |   4 +-
 .../assets/asset-hub-rococo/src/lib.rs        |   5 +-
 .../assets/asset-hub-westend/src/lib.rs       |   5 +-
 .../assets/test-utils/src/test_cases.rs       |   3 +-
 .../bridge-hub-westend/tests/tests.rs         |  32 +-
 .../test-utils/src/test_cases/mod.rs          |  11 +-
 .../runtimes/starters/shell/src/lib.rs        |   6 +-
 .../src/fake_runtime_api/mod.rs               |   2 +
 cumulus/primitives/utility/src/lib.rs         |   6 +-
 polkadot/cli/src/command.rs                   |   2 -
 .../core/approval-voting-parallel/src/lib.rs  |   3 +-
 .../node/core/approval-voting/src/import.rs   |  11 +-
 polkadot/node/core/approval-voting/src/lib.rs |   7 +-
 .../node/core/approval-voting/src/tests.rs    |   3 +-
 polkadot/node/core/pvf/build.rs               |   2 +-
 .../common/src/worker/security/change_root.rs |   3 +-
 polkadot/node/core/pvf/src/artifacts.rs       |  16 +-
 polkadot/node/core/pvf/src/host.rs            |  25 +-
 polkadot/node/core/pvf/src/prepare/pool.rs    |  15 +-
 .../core/pvf/src/prepare/worker_interface.rs  |   2 -
 polkadot/node/core/pvf/src/testing.rs         |   2 +-
 .../approval-distribution/src/tests.rs        |   3 +-
 .../src/tests/mod.rs                          |  11 +-
 .../src/tests/state.rs                        |   1 -
 .../src/task/strategy/chunks.rs               |  13 +-
 .../src/task/strategy/systematic.rs           |   6 +-
 polkadot/node/overseer/src/lib.rs             |   1 +
 polkadot/node/service/src/fake_runtime_api.rs |   1 +
 .../node/service/src/parachains_db/mod.rs     |   9 +-
 polkadot/node/service/src/tests.rs            |   3 -
 .../src/lib/approval/message_generator.rs     |   5 +-
 .../subsystem-bench/src/lib/statement/mod.rs  |  16 +-
 .../subsystem-types/src/runtime_client.rs     |   3 +-
 polkadot/primitives/src/runtime_api.rs        |   2 +-
 polkadot/primitives/src/v8/metrics.rs         |  12 -
 polkadot/runtime/parachains/src/hrmp.rs       |   2 +-
 .../runtime/parachains/src/inclusion/mod.rs   |   3 +-
 .../parachains/src/paras_inherent/mod.rs      |  25 +-
 polkadot/runtime/parachains/src/ump_tests.rs  |   7 +-
 polkadot/runtime/westend/src/lib.rs           |  49 +-
 polkadot/runtime/westend/src/weights/mod.rs   |   1 -
 .../pallet_referenda_fellowship_referenda.rs  | 525 ---------------
 .../list-syscalls/execute-worker-syscalls     |   1 +
 .../list-syscalls/prepare-worker-syscalls     |   1 +
 polkadot/statement-table/src/generic.rs       |   6 +-
 .../parachain/xcm_config.rs                   |   2 +-
 .../relay_chain/xcm_config.rs                 |   2 +-
 polkadot/xcm/pallet-xcm-benchmarks/src/lib.rs |   2 +-
 polkadot/xcm/procedural/tests/ui.rs           |   1 -
 .../xcm/xcm-builder/src/asset_conversion.rs   |   8 +-
 .../xcm-builder/src/nonfungibles_adapter.rs   |   9 +-
 .../xcm/xcm-executor/src/traits/weight.rs     |   7 -
 polkadot/xcm/xcm-runtime-apis/src/dry_run.rs  |   7 +-
 .../xcm-runtime-apis/tests/fee_estimation.rs  |   2 +-
 prdoc/pr_4851.prdoc                           |   4 +-
 prdoc/pr_5676.prdoc                           | 174 +++++
 prdoc/pr_5678.prdoc                           |   2 +-
 prdoc/pr_5684.prdoc                           |   2 +-
 scripts/update-ui-tests.sh                    |  12 +-
 substrate/bin/node/cli/tests/fees.rs          | 132 ----
 .../authority-discovery/src/worker/tests.rs   |  33 +-
 .../cli/src/commands/import_blocks_cmd.rs     |   7 +-
 substrate/client/cli/src/commands/vanity.rs   |  14 -
 .../client/cli/src/params/node_key_params.rs  |   4 +-
 .../client/consensus/beefy/src/fisherman.rs   |   9 +-
 .../consensus/grandpa/src/aux_schema.rs       |   4 +-
 .../consensus/grandpa/src/voting_rule.rs      |   2 +-
 substrate/client/consensus/slots/build.rs     |   2 +-
 substrate/client/consensus/slots/src/lib.rs   |   2 +-
 substrate/client/executor/wasmtime/build.rs   |   2 +-
 .../client/executor/wasmtime/src/tests.rs     |   2 +-
 substrate/client/network-gossip/src/bridge.rs |   3 -
 substrate/client/network/src/behaviour.rs     |  12 +-
 .../client/network/src/litep2p/discovery.rs   |  15 +-
 .../src/protocol/notifications/behaviour.rs   | 112 ++--
 .../src/protocol/notifications/handler.rs     |  29 -
 .../src/protocol/notifications/service/mod.rs |   6 +-
 .../notifications/upgrade/notifications.rs    |  15 +-
 .../client/network/src/service/metrics.rs     |   5 -
 substrate/client/network/sync/src/engine.rs   |   3 +-
 substrate/client/network/sync/src/lib.rs      |   1 -
 .../network/sync/src/request_metrics.rs       |  25 -
 substrate/client/network/test/src/lib.rs      |   3 +-
 substrate/client/network/test/src/sync.rs     |  18 -
 .../rpc-spec-v2/src/chain_head/test_utils.rs  |   3 +-
 .../client/service/test/src/client/mod.rs     |   6 +-
 .../transaction-pool/src/graph/tracked_map.rs |   3 +-
 substrate/client/utils/src/mpsc.rs            |   7 +-
 substrate/frame/authorship/src/lib.rs         |   3 +-
 substrate/frame/bags-list/src/lib.rs          |   2 +-
 substrate/frame/bags-list/src/list/tests.rs   |   2 +-
 substrate/frame/bags-list/src/mock.rs         |   2 +-
 substrate/frame/balances/src/lib.rs           |   3 +-
 .../balances/src/tests/currency_tests.rs      |   6 +-
 substrate/frame/beefy-mmr/src/benchmarking.rs |  12 +-
 .../frame/benchmarking/pov/src/weights.rs     |   2 +
 substrate/frame/bounties/src/lib.rs           |  12 +-
 substrate/frame/child-bounties/src/lib.rs     |  13 +-
 .../frame/contracts/src/benchmarking/code.rs  |   3 +-
 substrate/frame/contracts/src/exec.rs         |   7 -
 substrate/frame/contracts/src/wasm/mod.rs     |   4 -
 substrate/frame/delegated-staking/src/lib.rs  |   4 +-
 .../election-provider-multi-phase/src/lib.rs  |   3 +-
 .../election-provider-support/src/lib.rs      |   4 +-
 substrate/frame/elections-phragmen/src/lib.rs |   3 +-
 .../examples/offchain-worker/src/tests.rs     |  22 +-
 .../src/migrations/v1.rs                      |   2 +-
 substrate/frame/executive/src/lib.rs          |   3 +-
 substrate/frame/nis/src/lib.rs                |  16 +-
 substrate/frame/referenda/src/mock.rs         |   9 -
 substrate/frame/referenda/src/types.rs        |   3 +-
 substrate/frame/revive/proc-macro/src/lib.rs  |  25 +-
 substrate/frame/society/src/lib.rs            |  12 -
 substrate/frame/society/src/tests.rs          |   2 +-
 substrate/frame/staking/src/tests.rs          |   2 +-
 .../procedural/src/construct_runtime/parse.rs |   3 -
 .../support/procedural/src/derive_impl.rs     |   1 +
 substrate/frame/support/procedural/src/lib.rs |  25 +-
 .../src/pallet/expand/genesis_build.rs        |   3 +-
 .../procedural/src/pallet/expand/hooks.rs     |   4 +-
 .../procedural/src/pallet/parse/call.rs       |  23 +-
 .../procedural/src/runtime/parse/pallet.rs    |   1 -
 substrate/frame/support/src/lib.rs            |   2 +
 .../src/storage/generator/double_map.rs       |   3 +-
 .../support/src/storage/generator/map.rs      |   3 +-
 .../support/src/storage/generator/nmap.rs     |   3 +-
 .../support/src/storage/types/double_map.rs   |   3 +-
 substrate/frame/support/src/tests/mod.rs      |   1 +
 substrate/frame/support/src/traits/misc.rs    |   8 +-
 .../traits/try_runtime/decode_entire_state.rs |   6 +-
 ...bad_return_type_blank_with_question.stderr |   4 +
 .../deprecated_where_block.stderr             | 616 ++++++++++++++----
 .../undefined_event_part.stderr               |   4 +-
 .../undefined_genesis_config_part.stderr      |   2 +-
 .../undefined_inherent_part.stderr            |   4 +-
 .../undefined_origin_part.stderr              |   2 +-
 .../frame/support/test/tests/derive_impl.rs   |  10 -
 .../support/test/tests/derive_no_bound.rs     |   1 +
 .../test/tests/derive_no_bound_ui/ord.stderr  |  10 +
 substrate/frame/support/test/tests/pallet.rs  |   5 +-
 .../call_argument_invalid_bound.stderr        |   9 +
 .../call_argument_invalid_bound_2.stderr      |  13 +-
 .../call_argument_invalid_bound_3.stderr      |   9 +
 .../compare_unset_storage_version.stderr      |   6 +
 ...ev_mode_without_arg_max_encoded_len.stderr |  16 +-
 .../error_does_not_derive_pallet_error.stderr |  16 +-
 .../tests/pallet_ui/hooks_invalid_item.stderr |   6 +
 .../inherent_check_inner_span.stderr          |   2 +-
 ...age_ensure_span_are_ok_on_wrong_gen.stderr | 100 +--
 ...re_span_are_ok_on_wrong_gen_unnamed.stderr | 100 +--
 .../pallet_ui/storage_info_unsatisfied.stderr |  16 +-
 .../storage_info_unsatisfied_nmap.stderr      |  16 +-
 .../type_value_error_in_block.stderr          |   6 +
 substrate/frame/system/src/tests.rs           |   1 +
 .../frame/transaction-payment/src/tests.rs    |   6 +-
 substrate/frame/utility/src/lib.rs            |   4 +-
 substrate/frame/vesting/src/tests.rs          |  10 +-
 substrate/primitives/api/test/Cargo.toml      |   1 +
 .../primitives/api/test/tests/trybuild.rs     |  10 +-
 .../api/test/tests/ui/deprecation_info.stderr |  15 +
 .../ui/impl_incorrect_method_signature.stderr |  18 +-
 .../tests/ui/mock_only_self_reference.stderr  |   6 +-
 ...reference_in_impl_runtime_apis_call.stderr |  18 +-
 .../primitives/runtime-interface/tests/ui.rs  |   6 +-
 .../tests/ui/no_feature_gated_method.stderr   |  34 +-
 substrate/primitives/runtime/src/traits.rs    |  12 -
 substrate/primitives/state-machine/src/ext.rs |   1 +
 substrate/test-utils/cli/build.rs             |   2 +-
 substrate/test-utils/cli/src/lib.rs           |   2 +-
 substrate/utils/fork-tree/src/lib.rs          |   3 +-
 .../utils/frame/benchmarking-cli/build.rs     |   4 +
 .../utils/wasm-builder/src/wasm_project.rs    |   7 +-
 .../pallets/template/src/benchmarking.rs      |   1 -
 .../pallets/template/src/benchmarking.rs      |   2 +-
 203 files changed, 1455 insertions(+), 1885 deletions(-)
 delete mode 100644 polkadot/runtime/westend/src/weights/pallet_referenda_fellowship_referenda.rs
 create mode 100644 prdoc/pr_5676.prdoc
 delete mode 100644 substrate/client/network/sync/src/request_metrics.rs

diff --git a/.github/env b/.github/env
index 2e4d5b48100..bb61e1f4cd9 100644
--- a/.github/env
+++ b/.github/env
@@ -1 +1 @@
-IMAGE="docker.io/paritytech/ci-unified:bullseye-1.77.0-2024-04-10-v202407161507"
+IMAGE="docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"
diff --git a/.github/scripts/generate-prdoc.py b/.github/scripts/generate-prdoc.py
index d3b6b523ecf..f05d517a580 100644
--- a/.github/scripts/generate-prdoc.py
+++ b/.github/scripts/generate-prdoc.py
@@ -67,7 +67,6 @@ def create_prdoc(pr, audience, title, description, patch, bump, force):
 		# Go up until we find a Cargo.toml
 		p = os.path.join(workspace.path, p)
 		while not os.path.exists(os.path.join(p, "Cargo.toml")):
-			print(f"Could not find Cargo.toml in {p}")
 			if p == '/':
 				exit(1)
 			p = os.path.dirname(p)
@@ -76,7 +75,6 @@ def create_prdoc(pr, audience, title, description, patch, bump, force):
 			manifest = toml.load(f)
 		
 		if not "package" in manifest:
-			print(f"File was not in any crate: {p}")
 			continue
 		
 		crate_name = manifest["package"]["name"]
@@ -85,8 +83,6 @@ def create_prdoc(pr, audience, title, description, patch, bump, force):
 		else:
 			print(f"Skipping unpublished crate: {crate_name}")
 
-	print(f"Modified crates: {modified_crates.keys()}")
-
 	for crate_name in modified_crates.keys():
 		entry = { "name": crate_name }
 
@@ -137,4 +133,4 @@ def main(args):
 
 if __name__ == "__main__":
 	args = setup_parser().parse_args()
-	main(args)
\ No newline at end of file
+	main(args)
diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml
index fa1d5f2bdd2..0793c31dbb8 100644
--- a/.github/workflows/checks.yml
+++ b/.github/workflows/checks.yml
@@ -32,8 +32,8 @@ jobs:
       - uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.1.7
       - name: script
         run: |
-          forklift cargo clippy --all-targets --locked --workspace
-          forklift cargo clippy --all-targets --all-features --locked --workspace
+          forklift cargo clippy --all-targets --locked --workspace --quiet
+          forklift cargo clippy --all-targets --all-features --locked --workspace --quiet
   check-try-runtime:
     runs-on: ${{ needs.preflight.outputs.RUNNER }}
     needs: [preflight]
@@ -45,13 +45,13 @@ jobs:
       - uses: actions/checkout@6d193bf28034eafb982f37bd894289fe649468fc # v4.1.7
       - name: script
         run: |
-          forklift cargo check --locked --all --features try-runtime
+          forklift cargo check --locked --all --features try-runtime --quiet
           # this is taken from cumulus
           # Check that parachain-template will compile with `try-runtime` feature flag.
           forklift cargo check --locked -p parachain-template-node --features try-runtime
           # add after https://github.com/paritytech/substrate/pull/14502 is merged
           # experimental code may rely on try-runtime and vice-versa
-          forklift cargo check --locked --all --features try-runtime,experimental
+          forklift cargo check --locked --all --features try-runtime,experimental --quiet
   # check-core-crypto-features works fast without forklift
   check-core-crypto-features:
     runs-on: ${{ needs.preflight.outputs.RUNNER }}
diff --git a/.github/workflows/command-prdoc.yml b/.github/workflows/command-prdoc.yml
index aa9de9474a7..2154c8a987f 100644
--- a/.github/workflows/command-prdoc.yml
+++ b/.github/workflows/command-prdoc.yml
@@ -28,7 +28,7 @@ on:
           - "Runtime Dev"
           - "Runtime User"
           - "Node Dev"
-          - "Node User"
+          - "Node Operator"
       overwrite:
         type: choice
         description: Overwrite existing PrDoc
diff --git a/.github/workflows/tests-linux-stable.yml b/.github/workflows/tests-linux-stable.yml
index a23a7ad67de..599edd8e69a 100644
--- a/.github/workflows/tests-linux-stable.yml
+++ b/.github/workflows/tests-linux-stable.yml
@@ -53,7 +53,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: script
-        run: forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet
+        run: forklift cargo nextest run --workspace --features runtime-benchmarks benchmark --locked --cargo-profile testnet --cargo-quiet
 
   test-linux-stable:
     needs: [preflight]
@@ -90,12 +90,13 @@ jobs:
             --locked \
             --release \
             --no-fail-fast \
+            --cargo-quiet \
             --features try-runtime,experimental,riscv,ci-only-tests \
             --partition count:${{ matrix.partition }}
       # run runtime-api tests with `enable-staging-api` feature on the 1st node
       - name: runtime-api tests
         if: ${{ matrix.partition == '1/3' }}
-        run: forklift cargo nextest run -p sp-api-test --features enable-staging-api
+        run: forklift cargo nextest run -p sp-api-test --features enable-staging-api --cargo-quiet
 
   confirm-required-jobs-passed:
     runs-on: ubuntu-latest
diff --git a/.github/workflows/tests-misc.yml b/.github/workflows/tests-misc.yml
index 7f3e01eb424..45ed4ebdc6c 100644
--- a/.github/workflows/tests-misc.yml
+++ b/.github/workflows/tests-misc.yml
@@ -77,8 +77,7 @@ jobs:
       # but still want to have debug assertions.
       RUSTFLAGS: "-C debug-assertions -D warnings"
       RUST_BACKTRACE: 1
-      WASM_BUILD_NO_COLOR: 1
-      WASM_BUILD_RUSTFLAGS: "-C debug-assertions -D warnings"
+      SKIP_WASM_BUILD: 1
       # Ensure we run the UI tests.
       RUN_UI_TESTS: 1
     steps:
@@ -86,13 +85,14 @@ jobs:
         uses: actions/checkout@v4
       - name: script
         run: |
-          forklift cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,no-metadata-docs,try-runtime,experimental
-          forklift cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,no-metadata-docs,try-runtime,experimental
-          forklift cargo test --locked -q --profile testnet -p xcm-procedural
-          forklift cargo test --locked -q --profile testnet -p frame-election-provider-solution-type
-          forklift cargo test --locked -q --profile testnet -p sp-api-test
+          cargo version
+          forklift cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,no-metadata-docs,try-runtime,experimental ui
+          forklift cargo test --locked -q --profile testnet -p frame-support-test --features=frame-feature-testing,frame-feature-testing-2,no-metadata-docs,try-runtime,experimental ui
+          forklift cargo test --locked -q --profile testnet -p xcm-procedural ui
+          forklift cargo test --locked -q --profile testnet -p frame-election-provider-solution-type ui
+          forklift cargo test --locked -q --profile testnet -p sp-api-test ui
           # There is multiple version of sp-runtime-interface in the repo. So we point to the manifest.
-          forklift cargo test --locked -q --profile testnet --manifest-path substrate/primitives/runtime-interface/Cargo.toml
+          forklift cargo test --locked -q --profile testnet --manifest-path substrate/primitives/runtime-interface/Cargo.toml ui
 
   test-deterministic-wasm:
     timeout-minutes: 20
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index e371132647a..6d6e393b041 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -32,7 +32,7 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: script
-        run: forklift cargo run --locked --release -p staging-node-cli --bin substrate-node --features runtime-benchmarks -- benchmark pallet --chain dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1 --quiet
+        run: forklift cargo run --locked --release -p staging-node-cli --bin substrate-node --features runtime-benchmarks --quiet -- benchmark pallet --chain dev --pallet "*" --extrinsic "*" --steps 2 --repeat 1 --quiet
 
   # cf https://github.com/paritytech/polkadot-sdk/issues/1652
   test-syscalls:
@@ -51,7 +51,7 @@ jobs:
       - name: script
         id: test
         run: |
-          forklift cargo build --locked --profile production --target x86_64-unknown-linux-musl --bin polkadot-execute-worker --bin polkadot-prepare-worker
+          forklift cargo build --locked --profile production --target x86_64-unknown-linux-musl --bin polkadot-execute-worker --bin polkadot-prepare-worker --quiet
           cd polkadot/scripts/list-syscalls
           ./list-syscalls.rb ../../../target/x86_64-unknown-linux-musl/production/polkadot-execute-worker --only-used-syscalls | diff -u execute-worker-syscalls -
           ./list-syscalls.rb ../../../target/x86_64-unknown-linux-musl/production/polkadot-prepare-worker --only-used-syscalls | diff -u prepare-worker-syscalls -
@@ -73,4 +73,4 @@ jobs:
       - name: Checkout
         uses: actions/checkout@v4
       - name: script
-        run: forklift cargo check --all --benches
+        run: forklift cargo check --all --benches --quiet
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5c6b3928b46..dbc5dafeb0a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,8 @@ workflow:
     - if: $CI_COMMIT_BRANCH
 
 variables:
-  CI_IMAGE: !reference [.ci-unified, variables, CI_IMAGE]
+  # CI_IMAGE: !reference [ .ci-unified, variables, CI_IMAGE ]
+  CI_IMAGE: "docker.io/paritytech/ci-unified:bullseye-1.81.0-2024-09-11-v202409111034"
   # BUILDAH_IMAGE is defined in group variables
   BUILDAH_COMMAND: "buildah --storage-driver overlay2"
   RELENG_SCRIPTS_BRANCH: "master"
diff --git a/Cargo.toml b/Cargo.toml
index c92254242fc..c40d59fce3c 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -552,7 +552,7 @@ default-members = [
 [workspace.lints.rust]
 suspicious_double_ref_op = { level = "allow", priority = 2 }
 # `substrate_runtime` is a common `cfg` condition name used in the repo.
-unexpected_cfgs = { level = "warn", check-cfg = ['cfg(substrate_runtime)'] }
+unexpected_cfgs = { level = "warn", check-cfg = ['cfg(build_opt_level, values("3"))', 'cfg(build_profile, values("debug", "release"))', 'cfg(enable_alloc_error_handler)', 'cfg(fuzzing)', 'cfg(substrate_runtime)'] }
 
 [workspace.lints.clippy]
 all = { level = "allow", priority = 0 }
diff --git a/bridges/modules/grandpa/src/lib.rs b/bridges/modules/grandpa/src/lib.rs
index dff4b98fd91..22a15ec4062 100644
--- a/bridges/modules/grandpa/src/lib.rs
+++ b/bridges/modules/grandpa/src/lib.rs
@@ -728,15 +728,13 @@ pub mod pallet {
 			init_params;
 		let authority_set_length = authority_list.len();
 		let authority_set = StoredAuthoritySet::<T, I>::try_new(authority_list, set_id)
-			.map_err(|e| {
+			.inspect_err(|_| {
 				log::error!(
 					target: LOG_TARGET,
 					"Failed to initialize bridge. Number of authorities in the set {} is larger than the configured value {}",
 					authority_set_length,
 					T::BridgedChain::MAX_AUTHORITIES_COUNT,
 				);
-
-				e
 			})?;
 		let initial_hash = header.hash();
 
diff --git a/bridges/modules/xcm-bridge-hub/src/lib.rs b/bridges/modules/xcm-bridge-hub/src/lib.rs
index 22c60fb4ad6..1b2536598a2 100644
--- a/bridges/modules/xcm-bridge-hub/src/lib.rs
+++ b/bridges/modules/xcm-bridge-hub/src/lib.rs
@@ -415,7 +415,7 @@ pub mod pallet {
 				bridge.deposit,
 				Precision::BestEffort,
 			)
-			.map_err(|e| {
+			.inspect_err(|e| {
 				// we can't do anything here - looks like funds have been (partially) unreserved
 				// before by someone else. Let's not fail, though - it'll be worse for the caller
 				log::error!(
@@ -423,7 +423,6 @@ pub mod pallet {
 					"Failed to unreserve during the bridge {:?} closure with error: {e:?}",
 					locations.bridge_id(),
 				);
-				e
 			})
 			.ok()
 			.unwrap_or(BalanceOf::<ThisChainOf<T, I>>::zero());
@@ -1456,25 +1455,26 @@ mod tests {
 		let lane_id = TestLaneIdType::try_new(1, 2).unwrap();
 		let lane_id_mismatch = TestLaneIdType::try_new(3, 4).unwrap();
 
-		let test_bridge_state = |id,
-		                         bridge,
-		                         (lane_id, bridge_id),
-		                         (inbound_lane_id, outbound_lane_id),
-		                         expected_error: Option<TryRuntimeError>| {
-			Bridges::<TestRuntime, ()>::insert(id, bridge);
-			LaneToBridge::<TestRuntime, ()>::insert(lane_id, bridge_id);
-
-			let lanes_manager = LanesManagerOf::<TestRuntime, ()>::new();
-			lanes_manager.create_inbound_lane(inbound_lane_id).unwrap();
-			lanes_manager.create_outbound_lane(outbound_lane_id).unwrap();
+		let test_bridge_state =
+			|id,
+			 bridge,
+			 (lane_id, bridge_id),
+			 (inbound_lane_id, outbound_lane_id),
+			 expected_error: Option<TryRuntimeError>| {
+				Bridges::<TestRuntime, ()>::insert(id, bridge);
+				LaneToBridge::<TestRuntime, ()>::insert(lane_id, bridge_id);
 
-			let result = XcmOverBridge::do_try_state();
-			if let Some(e) = expected_error {
-				assert_err!(result, e);
-			} else {
-				assert_ok!(result);
-			}
-		};
+				let lanes_manager = LanesManagerOf::<TestRuntime, ()>::new();
+				lanes_manager.create_inbound_lane(inbound_lane_id).unwrap();
+				lanes_manager.create_outbound_lane(outbound_lane_id).unwrap();
+
+				let result = XcmOverBridge::do_try_state();
+				if let Some(e) = expected_error {
+					assert_err!(result, e);
+				} else {
+					assert_ok!(result);
+				}
+			};
 		let cleanup = |bridge_id, lane_ids| {
 			Bridges::<TestRuntime, ()>::remove(bridge_id);
 			for lane_id in lane_ids {
diff --git a/bridges/primitives/header-chain/src/justification/mod.rs b/bridges/primitives/header-chain/src/justification/mod.rs
index d7c2cbf429e..87f53dac646 100644
--- a/bridges/primitives/header-chain/src/justification/mod.rs
+++ b/bridges/primitives/header-chain/src/justification/mod.rs
@@ -32,7 +32,6 @@ pub use verification::{
 
 use bp_runtime::{BlockNumberOf, Chain, HashOf, HeaderId};
 use codec::{Decode, Encode, MaxEncodedLen};
-use frame_support::RuntimeDebugNoBound;
 use scale_info::TypeInfo;
 use sp_consensus_grandpa::{AuthorityId, AuthoritySignature};
 use sp_runtime::{traits::Header as HeaderT, RuntimeDebug, SaturatedConversion};
@@ -43,7 +42,8 @@ use sp_std::prelude::*;
 ///
 /// This particular proof is used to prove that headers on a bridged chain
 /// (so not our chain) have been finalized correctly.
-#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo, RuntimeDebugNoBound)]
+#[derive(Encode, Decode, Clone, PartialEq, Eq, TypeInfo)]
+#[cfg_attr(feature = "std", derive(Debug))]
 pub struct GrandpaJustification<Header: HeaderT> {
 	/// The round (voting period) this justification is valid for.
 	pub round: u64,
@@ -54,6 +54,17 @@ pub struct GrandpaJustification<Header: HeaderT> {
 	pub votes_ancestries: Vec<Header>,
 }
 
+// A proper Debug impl for no-std is not possible for the `GrandpaJustification` since the `Commit`
+// type only implements Debug that for `std` here:
+// https://github.com/paritytech/finality-grandpa/blob/8c45a664c05657f0c71057158d3ba555ba7d20de/src/lib.rs#L275
+// so we do a manual impl.
+#[cfg(not(feature = "std"))]
+impl<H: HeaderT> core::fmt::Debug for GrandpaJustification<H> {
+	fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
+		write!(f, "GrandpaJustification {{ round: {:?}, commit: <wasm:stripped>, votes_ancestries: {:?} }}", self.round, self.votes_ancestries)
+	}
+}
+
 impl<H: HeaderT> GrandpaJustification<H> {
 	/// Returns reasonable size of justification using constants from the provided chain.
 	///
diff --git a/bridges/primitives/messages/src/lane.rs b/bridges/primitives/messages/src/lane.rs
index c835449db27..0f14ce93e11 100644
--- a/bridges/primitives/messages/src/lane.rs
+++ b/bridges/primitives/messages/src/lane.rs
@@ -71,7 +71,7 @@ impl LaneIdType for LegacyLaneId {
 	}
 }
 
-#[cfg(any(feature = "std", feature = "runtime-benchmarks", test))]
+#[cfg(feature = "std")]
 impl TryFrom<Vec<u8>> for LegacyLaneId {
 	type Error = ();
 
@@ -140,7 +140,7 @@ impl HashedLaneId {
 	/// There's no `From<H256>` implementation for the `LaneId`, because using this conversion
 	/// in a wrong way (i.e. computing hash of endpoints manually) may lead to issues. So we
 	/// want the call to be explicit.
-	#[cfg(any(feature = "std", feature = "runtime-benchmarks", test))]
+	#[cfg(feature = "std")]
 	pub const fn from_inner(inner: H256) -> Self {
 		Self(inner)
 	}
@@ -184,7 +184,7 @@ impl LaneIdType for HashedLaneId {
 	}
 }
 
-#[cfg(any(feature = "std", feature = "runtime-benchmarks", test))]
+#[cfg(feature = "std")]
 impl TryFrom<Vec<u8>> for HashedLaneId {
 	type Error = ();
 
diff --git a/bridges/relays/lib-substrate-relay/src/cli/relay_headers_and_messages/mod.rs b/bridges/relays/lib-substrate-relay/src/cli/relay_headers_and_messages/mod.rs
index 9261dc43753..e875c53a2e7 100644
--- a/bridges/relays/lib-substrate-relay/src/cli/relay_headers_and_messages/mod.rs
+++ b/bridges/relays/lib-substrate-relay/src/cli/relay_headers_and_messages/mod.rs
@@ -325,7 +325,9 @@ where
 				_,
 				Self::Left,
 				MessagesLaneIdOf<Self::R2L>,
-			>(common.right.client.clone(), &common.metrics_params, &common.right.accounts, &lanes)
+			>(
+				common.right.client.clone(), &common.metrics_params, &common.right.accounts, &lanes
+			)
 			.await?;
 		}
 
diff --git a/bridges/relays/lib-substrate-relay/src/messages/metrics.rs b/bridges/relays/lib-substrate-relay/src/messages/metrics.rs
index 9d45a4b3d66..efe429701c4 100644
--- a/bridges/relays/lib-substrate-relay/src/messages/metrics.rs
+++ b/bridges/relays/lib-substrate-relay/src/messages/metrics.rs
@@ -53,9 +53,8 @@ where
 	let token_decimals = client
 		.token_decimals()
 		.await?
-		.map(|token_decimals| {
+		.inspect(|token_decimals| {
 			log::info!(target: "bridge", "Read `tokenDecimals` for {}: {}", C::NAME, token_decimals);
-			token_decimals
 		})
 		.unwrap_or_else(|| {
 			// turns out it is normal not to have this property - e.g. when polkadot binary is
diff --git a/bridges/relays/lib-substrate-relay/src/on_demand/parachains.rs b/bridges/relays/lib-substrate-relay/src/on_demand/parachains.rs
index 2ef86f48ecb..96eba0af988 100644
--- a/bridges/relays/lib-substrate-relay/src/on_demand/parachains.rs
+++ b/bridges/relays/lib-substrate-relay/src/on_demand/parachains.rs
@@ -664,7 +664,8 @@ impl<'a, P: SubstrateParachainsPipeline, SourceRelayClnt, TargetClnt>
 	for (
 		&'a OnDemandParachainsRelay<P, SourceRelayClnt, TargetClnt>,
 		&'a ParachainsSource<P, SourceRelayClnt>,
-	) where
+	)
+where
 	SourceRelayClnt: Client<P::SourceRelayChain>,
 	TargetClnt: Client<P::TargetChain>,
 {
diff --git a/bridges/relays/messages/src/message_race_delivery.rs b/bridges/relays/messages/src/message_race_delivery.rs
index cbb89baabcc..b09533a4ddc 100644
--- a/bridges/relays/messages/src/message_race_delivery.rs
+++ b/bridges/relays/messages/src/message_race_delivery.rs
@@ -59,9 +59,7 @@ pub async fn run<P: MessageLane>(
 			_phantom: Default::default(),
 		},
 		target_state_updates,
-		MessageDeliveryStrategy::<P, _, _> {
-			lane_source_client: source_client,
-			lane_target_client: target_client,
+		MessageDeliveryStrategy::<P> {
 			max_unrewarded_relayer_entries_at_target: params
 				.max_unrewarded_relayer_entries_at_target,
 			max_unconfirmed_nonces_at_target: params.max_unconfirmed_nonces_at_target,
@@ -71,7 +69,6 @@ pub async fn run<P: MessageLane>(
 			latest_confirmed_nonces_at_source: VecDeque::new(),
 			target_nonces: None,
 			strategy: BasicStrategy::new(),
-			metrics_msg,
 		},
 	)
 	.await
@@ -300,11 +297,7 @@ struct DeliveryRaceTargetNoncesData {
 }
 
 /// Messages delivery strategy.
-struct MessageDeliveryStrategy<P: MessageLane, SC, TC> {
-	/// The client that is connected to the message lane source node.
-	lane_source_client: SC,
-	/// The client that is connected to the message lane target node.
-	lane_target_client: TC,
+struct MessageDeliveryStrategy<P: MessageLane> {
 	/// Maximal unrewarded relayer entries at target client.
 	max_unrewarded_relayer_entries_at_target: MessageNonce,
 	/// Maximal unconfirmed nonces at target client.
@@ -322,8 +315,6 @@ struct MessageDeliveryStrategy<P: MessageLane, SC, TC> {
 	target_nonces: Option<TargetClientNonces<DeliveryRaceTargetNoncesData>>,
 	/// Basic delivery strategy.
 	strategy: MessageDeliveryStrategyBase<P>,
-	/// Message lane metrics.
-	metrics_msg: Option<MessageLaneLoopMetrics>,
 }
 
 type MessageDeliveryStrategyBase<P> = BasicStrategy<
@@ -335,7 +326,7 @@ type MessageDeliveryStrategyBase<P> = BasicStrategy<
 	<P as MessageLane>::MessagesProof,
 >;
 
-impl<P: MessageLane, SC, TC> std::fmt::Debug for MessageDeliveryStrategy<P, SC, TC> {
+impl<P: MessageLane> std::fmt::Debug for MessageDeliveryStrategy<P> {
 	fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result {
 		fmt.debug_struct("MessageDeliveryStrategy")
 			.field(
@@ -353,11 +344,9 @@ impl<P: MessageLane, SC, TC> std::fmt::Debug for MessageDeliveryStrategy<P, SC,
 	}
 }
 
-impl<P: MessageLane, SC, TC> MessageDeliveryStrategy<P, SC, TC>
+impl<P: MessageLane> MessageDeliveryStrategy<P>
 where
 	P: MessageLane,
-	SC: MessageLaneSourceClient<P>,
-	TC: MessageLaneTargetClient<P>,
 {
 	/// Returns true if some race action can be selected (with `select_race_action`) at given
 	/// `best_finalized_source_header_id_at_best_target` source header at target.
@@ -465,23 +454,18 @@ where
 		let max_nonces = std::cmp::min(max_nonces, self.max_messages_in_single_batch);
 		let max_messages_weight_in_single_batch = self.max_messages_weight_in_single_batch;
 		let max_messages_size_in_single_batch = self.max_messages_size_in_single_batch;
-		let lane_source_client = self.lane_source_client.clone();
-		let lane_target_client = self.lane_target_client.clone();
 
 		// select nonces from nonces, available for delivery
 		let selected_nonces = match self.strategy.available_source_queue_indices(race_state) {
 			Some(available_source_queue_indices) => {
 				let source_queue = self.strategy.source_queue();
-				let reference = RelayMessagesBatchReference {
+				let reference = RelayMessagesBatchReference::<P> {
 					max_messages_in_this_batch: max_nonces,
 					max_messages_weight_in_single_batch,
 					max_messages_size_in_single_batch,
-					lane_source_client: lane_source_client.clone(),
-					lane_target_client: lane_target_client.clone(),
 					best_target_nonce,
 					nonces_queue: source_queue.clone(),
 					nonces_queue_range: available_source_queue_indices,
-					metrics: self.metrics_msg.clone(),
 				};
 
 				MessageRaceLimits::decide(reference).await
@@ -534,12 +518,10 @@ where
 }
 
 #[async_trait]
-impl<P, SC, TC> RaceStrategy<SourceHeaderIdOf<P>, TargetHeaderIdOf<P>, P::MessagesProof>
-	for MessageDeliveryStrategy<P, SC, TC>
+impl<P> RaceStrategy<SourceHeaderIdOf<P>, TargetHeaderIdOf<P>, P::MessagesProof>
+	for MessageDeliveryStrategy<P>
 where
 	P: MessageLane,
-	SC: MessageLaneSourceClient<P>,
-	TC: MessageLaneTargetClient<P>,
 {
 	type SourceNoncesRange = MessageDetailsMap<P::SourceChainBalance>;
 	type ProofParameters = MessageProofParameters;
@@ -707,8 +689,7 @@ mod tests {
 		message_lane_loop::{
 			tests::{
 				header_id, TestMessageLane, TestMessagesBatchTransaction, TestMessagesProof,
-				TestSourceChainBalance, TestSourceClient, TestSourceHeaderId, TestTargetClient,
-				TestTargetHeaderId,
+				TestSourceChainBalance, TestSourceHeaderId, TestTargetHeaderId,
 			},
 			MessageDetails,
 		},
@@ -726,8 +707,7 @@ mod tests {
 		TestMessagesProof,
 		TestMessagesBatchTransaction,
 	>;
-	type TestStrategy =
-		MessageDeliveryStrategy<TestMessageLane, TestSourceClient, TestTargetClient>;
+	type TestStrategy = MessageDeliveryStrategy<TestMessageLane>;
 
 	fn source_nonces(
 		new_nonces: RangeInclusive<MessageNonce>,
@@ -770,9 +750,6 @@ mod tests {
 			max_messages_weight_in_single_batch: Weight::from_parts(4, 0),
 			max_messages_size_in_single_batch: 4,
 			latest_confirmed_nonces_at_source: vec![(header_id(1), 19)].into_iter().collect(),
-			lane_source_client: TestSourceClient::default(),
-			lane_target_client: TestTargetClient::default(),
-			metrics_msg: None,
 			target_nonces: Some(TargetClientNonces {
 				latest_nonce: 19,
 				nonces_data: DeliveryRaceTargetNoncesData {
@@ -1167,9 +1144,6 @@ mod tests {
 			max_messages_weight_in_single_batch: Weight::from_parts(4, 0),
 			max_messages_size_in_single_batch: 4,
 			latest_confirmed_nonces_at_source: VecDeque::new(),
-			lane_source_client: TestSourceClient::default(),
-			lane_target_client: TestTargetClient::default(),
-			metrics_msg: None,
 			target_nonces: None,
 			strategy: BasicStrategy::new(),
 		};
diff --git a/bridges/relays/messages/src/message_race_limits.rs b/bridges/relays/messages/src/message_race_limits.rs
index 873bb6aad04..8fcd1f911f6 100644
--- a/bridges/relays/messages/src/message_race_limits.rs
+++ b/bridges/relays/messages/src/message_race_limits.rs
@@ -23,33 +23,16 @@ use bp_messages::{MessageNonce, Weight};
 
 use crate::{
 	message_lane::MessageLane,
-	message_lane_loop::{
-		MessageDetails, MessageDetailsMap, SourceClient as MessageLaneSourceClient,
-		TargetClient as MessageLaneTargetClient,
-	},
+	message_lane_loop::{MessageDetails, MessageDetailsMap},
 	message_race_loop::NoncesRange,
 	message_race_strategy::SourceRangesQueue,
-	metrics::MessageLaneLoopMetrics,
 };
 
 /// Reference data for participating in relay
-pub struct RelayReference<
-	P: MessageLane,
-	SourceClient: MessageLaneSourceClient<P>,
-	TargetClient: MessageLaneTargetClient<P>,
-> {
-	/// The client that is connected to the message lane source node.
-	pub lane_source_client: SourceClient,
-	/// The client that is connected to the message lane target node.
-	pub lane_target_client: TargetClient,
-	/// Metrics reference.
-	pub metrics: Option<MessageLaneLoopMetrics>,
+pub struct RelayReference<P: MessageLane> {
 	/// Messages size summary
 	pub selected_size: u32,
 
-	/// Hard check begin nonce
-	pub hard_selected_begin_nonce: MessageNonce,
-
 	/// Index by all ready nonces
 	pub index: usize,
 	/// Current nonce
@@ -59,23 +42,13 @@ pub struct RelayReference<
 }
 
 /// Relay reference data
-pub struct RelayMessagesBatchReference<
-	P: MessageLane,
-	SourceClient: MessageLaneSourceClient<P>,
-	TargetClient: MessageLaneTargetClient<P>,
-> {
+pub struct RelayMessagesBatchReference<P: MessageLane> {
 	/// Maximal number of relayed messages in single delivery transaction.
 	pub max_messages_in_this_batch: MessageNonce,
 	/// Maximal cumulative dispatch weight of relayed messages in single delivery transaction.
 	pub max_messages_weight_in_single_batch: Weight,
 	/// Maximal cumulative size of relayed messages in single delivery transaction.
 	pub max_messages_size_in_single_batch: u32,
-	/// The client that is connected to the message lane source node.
-	pub lane_source_client: SourceClient,
-	/// The client that is connected to the message lane target node.
-	pub lane_target_client: TargetClient,
-	/// Metrics reference.
-	pub metrics: Option<MessageLaneLoopMetrics>,
 	/// Best available nonce at the **best** target block. We do not want to deliver nonces
 	/// less than this nonce, even though the block may be retracted.
 	pub best_target_nonce: MessageNonce,
@@ -94,12 +67,8 @@ pub struct RelayMessagesBatchReference<
 pub struct MessageRaceLimits;
 
 impl MessageRaceLimits {
-	pub async fn decide<
-		P: MessageLane,
-		SourceClient: MessageLaneSourceClient<P>,
-		TargetClient: MessageLaneTargetClient<P>,
-	>(
-		reference: RelayMessagesBatchReference<P, SourceClient, TargetClient>,
+	pub async fn decide<P: MessageLane>(
+		reference: RelayMessagesBatchReference<P>,
 	) -> Option<RangeInclusive<MessageNonce>> {
 		let mut hard_selected_count = 0;
 
@@ -112,15 +81,9 @@ impl MessageRaceLimits {
 		);
 
 		// relay reference
-		let mut relay_reference = RelayReference {
-			lane_source_client: reference.lane_source_client.clone(),
-			lane_target_client: reference.lane_target_client.clone(),
-			metrics: reference.metrics.clone(),
-
+		let mut relay_reference = RelayReference::<P> {
 			selected_size: 0,
 
-			hard_selected_begin_nonce,
-
 			index: 0,
 			nonce: 0,
 			details: MessageDetails {
diff --git a/bridges/relays/messages/src/message_race_loop.rs b/bridges/relays/messages/src/message_race_loop.rs
index 31341a9a0c0..ea6a2371dc9 100644
--- a/bridges/relays/messages/src/message_race_loop.rs
+++ b/bridges/relays/messages/src/message_race_loop.rs
@@ -225,15 +225,9 @@ pub trait RaceState<SourceHeaderId, TargetHeaderId>: Clone + Send + Sync {
 	/// client (at the `best_finalized_source_header_id_at_best_target`).
 	fn set_best_finalized_source_header_id_at_best_target(&mut self, id: SourceHeaderId);
 
-	/// Best finalized source header id at the source client.
-	fn best_finalized_source_header_id_at_source(&self) -> Option<SourceHeaderId>;
 	/// Best finalized source header id at the best block on the target
 	/// client (at the `best_finalized_source_header_id_at_best_target`).
 	fn best_finalized_source_header_id_at_best_target(&self) -> Option<SourceHeaderId>;
-	/// The best header id at the target client.
-	fn best_target_header_id(&self) -> Option<TargetHeaderId>;
-	/// Best finalized header id at the target client.
-	fn best_finalized_target_header_id(&self) -> Option<TargetHeaderId>;
 
 	/// Returns `true` if we have selected nonces to submit to the target node.
 	fn nonces_to_submit(&self) -> Option<RangeInclusive<MessageNonce>>;
@@ -296,22 +290,10 @@ where
 		self.best_finalized_source_header_id_at_best_target = Some(id);
 	}
 
-	fn best_finalized_source_header_id_at_source(&self) -> Option<SourceHeaderId> {
-		self.best_finalized_source_header_id_at_source.clone()
-	}
-
 	fn best_finalized_source_header_id_at_best_target(&self) -> Option<SourceHeaderId> {
 		self.best_finalized_source_header_id_at_best_target.clone()
 	}
 
-	fn best_target_header_id(&self) -> Option<TargetHeaderId> {
-		self.best_target_header_id.clone()
-	}
-
-	fn best_finalized_target_header_id(&self) -> Option<TargetHeaderId> {
-		self.best_finalized_target_header_id.clone()
-	}
-
 	fn nonces_to_submit(&self) -> Option<RangeInclusive<MessageNonce>> {
 		self.nonces_to_submit.clone().map(|(_, nonces, _)| nonces)
 	}
diff --git a/bridges/relays/messages/src/message_race_strategy.rs b/bridges/relays/messages/src/message_race_strategy.rs
index 3a532331d79..1303fcfedeb 100644
--- a/bridges/relays/messages/src/message_race_strategy.rs
+++ b/bridges/relays/messages/src/message_race_strategy.rs
@@ -67,7 +67,8 @@ impl<
 		TargetHeaderHash,
 		SourceNoncesRange,
 		Proof,
-	> where
+	>
+where
 	SourceHeaderHash: Clone,
 	SourceHeaderNumber: Clone + Ord,
 	SourceNoncesRange: NoncesRange,
@@ -189,7 +190,8 @@ impl<
 		TargetHeaderHash,
 		SourceNoncesRange,
 		Proof,
-	> where
+	>
+where
 	SourceHeaderHash: Clone + Debug + Send + Sync,
 	SourceHeaderNumber: Clone + Ord + Debug + Send + Sync,
 	SourceNoncesRange: NoncesRange + Debug + Send + Sync,
diff --git a/bridges/snowbridge/pallets/outbound-queue/merkle-tree/src/lib.rs b/bridges/snowbridge/pallets/outbound-queue/merkle-tree/src/lib.rs
index d5c89b9c098..eeeaa6e68cf 100644
--- a/bridges/snowbridge/pallets/outbound-queue/merkle-tree/src/lib.rs
+++ b/bridges/snowbridge/pallets/outbound-queue/merkle-tree/src/lib.rs
@@ -182,12 +182,6 @@ where
 	let root = merkelize::<H, _, _>(hashes.into_iter(), &mut collect_proof);
 	let leaf = leaf.expect("Requested `leaf_index` is greater than number of leaves.");
 
-	#[cfg(feature = "debug")]
-	log::debug!(
-		"[merkle_proof] Proof: {:?}",
-		collect_proof.proof.iter().map(hex::encode).collect::<Vec<_>>()
-	);
-
 	MerkleProof { root, proof: collect_proof.proof, number_of_leaves, leaf_index, leaf }
 }
 
@@ -274,8 +268,6 @@ where
 	V: Visitor,
 	I: Iterator<Item = H256>,
 {
-	#[cfg(feature = "debug")]
-	log::debug!("[merkelize_row]");
 	next.clear();
 
 	let hash_len = <H as sp_core::Hasher>::LENGTH;
@@ -286,9 +278,6 @@ where
 		let b = iter.next();
 		visitor.visit(index, &a, &b);
 
-		#[cfg(feature = "debug")]
-		log::debug!("  {:?}\n  {:?}", a.as_ref().map(hex::encode), b.as_ref().map(hex::encode));
-
 		index += 2;
 		match (a, b) {
 			(Some(a), Some(b)) => {
@@ -309,14 +298,7 @@ where
 			// Last item = root.
 			(Some(a), None) => return Ok(a),
 			// Finish up, no more items.
-			_ => {
-				#[cfg(feature = "debug")]
-				log::debug!(
-					"[merkelize_row] Next: {:?}",
-					next.iter().map(hex::encode).collect::<Vec<_>>()
-				);
-				return Err(next)
-			},
+			_ => return Err(next),
 		}
 	}
 }
diff --git a/bridges/snowbridge/primitives/router/src/inbound/mod.rs b/bridges/snowbridge/primitives/router/src/inbound/mod.rs
index a10884b4553..fbfc52d01c8 100644
--- a/bridges/snowbridge/primitives/router/src/inbound/mod.rs
+++ b/bridges/snowbridge/primitives/router/src/inbound/mod.rs
@@ -168,7 +168,8 @@ impl<
 		ConvertAssetId,
 		EthereumUniversalLocation,
 		GlobalAssetHubLocation,
-	> where
+	>
+where
 	CreateAssetCall: Get<CallIndex>,
 	CreateAssetDeposit: Get<u128>,
 	InboundQueuePalletInstance: Get<u8>,
@@ -226,7 +227,8 @@ impl<
 		ConvertAssetId,
 		EthereumUniversalLocation,
 		GlobalAssetHubLocation,
-	> where
+	>
+where
 	CreateAssetCall: Get<CallIndex>,
 	CreateAssetDeposit: Get<u128>,
 	InboundQueuePalletInstance: Get<u8>,
diff --git a/bridges/snowbridge/primitives/router/src/outbound/mod.rs b/bridges/snowbridge/primitives/router/src/outbound/mod.rs
index d3b6c116dd7..b23bce0e218 100644
--- a/bridges/snowbridge/primitives/router/src/outbound/mod.rs
+++ b/bridges/snowbridge/primitives/router/src/outbound/mod.rs
@@ -44,7 +44,8 @@ impl<UniversalLocation, EthereumNetwork, OutboundQueue, AgentHashedDescription,
 		OutboundQueue,
 		AgentHashedDescription,
 		ConvertAssetId,
-	> where
+	>
+where
 	UniversalLocation: Get<InteriorLocation>,
 	EthereumNetwork: Get<NetworkId>,
 	OutboundQueue: SendMessage<Balance = u128>,
diff --git a/bridges/snowbridge/runtime/runtime-common/src/lib.rs b/bridges/snowbridge/runtime/runtime-common/src/lib.rs
index aae45520ff4..0b1a74b232a 100644
--- a/bridges/snowbridge/runtime/runtime-common/src/lib.rs
+++ b/bridges/snowbridge/runtime/runtime-common/src/lib.rs
@@ -50,7 +50,8 @@ impl<Balance, AccountId, FeeAssetLocation, EthereumNetwork, AssetTransactor, Fee
 		EthereumNetwork,
 		AssetTransactor,
 		FeeProvider,
-	> where
+	>
+where
 	Balance: BaseArithmetic + Unsigned + Copy + From<u128> + Into<u128> + Debug,
 	AccountId: Clone + FullCodec,
 	FeeAssetLocation: Get<Location>,
diff --git a/cumulus/pallets/parachain-system/src/lib.rs b/cumulus/pallets/parachain-system/src/lib.rs
index 9dc41aa03d9..21af35fe3de 100644
--- a/cumulus/pallets/parachain-system/src/lib.rs
+++ b/cumulus/pallets/parachain-system/src/lib.rs
@@ -390,7 +390,8 @@ pub mod pallet {
 
 			let maximum_channels = host_config
 				.hrmp_max_message_num_per_candidate
-				.min(<AnnouncedHrmpMessagesPerCandidate<T>>::take()) as usize;
+				.min(<AnnouncedHrmpMessagesPerCandidate<T>>::take())
+				as usize;
 
 			// Note: this internally calls the `GetChannelInfo` implementation for this
 			// pallet, which draws on the `RelevantMessagingState`. That in turn has
diff --git a/cumulus/pallets/xcmp-queue/src/mock.rs b/cumulus/pallets/xcmp-queue/src/mock.rs
index 470e00fe94e..3964ecf28ca 100644
--- a/cumulus/pallets/xcmp-queue/src/mock.rs
+++ b/cumulus/pallets/xcmp-queue/src/mock.rs
@@ -20,7 +20,7 @@ use cumulus_pallet_parachain_system::AnyRelayNumber;
 use cumulus_primitives_core::{ChannelInfo, IsSystem, ParaId};
 use frame_support::{
 	derive_impl, parameter_types,
-	traits::{ConstU32, Everything, Nothing, OriginTrait},
+	traits::{ConstU32, Everything, OriginTrait},
 	BoundedSlice,
 };
 use frame_system::EnsureRoot;
@@ -30,10 +30,6 @@ use sp_runtime::{
 	BuildStorage,
 };
 use xcm::prelude::*;
-use xcm_builder::{
-	FixedWeightBounds, FrameTransactionalProcessor, FungibleAdapter, IsConcrete, NativeAsset,
-	ParentIsPreset,
-};
 use xcm_executor::traits::ConvertOrigin;
 
 type Block = frame_system::mocking::MockBlock<Test>;
@@ -119,61 +115,6 @@ parameter_types! {
 	pub const MaxAssetsIntoHolding: u32 = 64;
 }
 
-/// Means for transacting assets on this chain.
-pub type LocalAssetTransactor = FungibleAdapter<
-	// Use this currency:
-	Balances,
-	// Use this currency when it is a fungible asset matching the given location or name:
-	IsConcrete<RelayChain>,
-	// Do a simple punn to convert an AccountId32 Location into a native chain account ID:
-	LocationToAccountId,
-	// Our chain's account ID type (we can't get away without mentioning it explicitly):
-	AccountId,
-	// We don't track any teleports.
-	(),
->;
-
-pub type LocationToAccountId = (ParentIsPreset<AccountId>,);
-
-pub struct XcmConfig;
-impl xcm_executor::Config for XcmConfig {
-	type RuntimeCall = RuntimeCall;
-	type XcmSender = XcmRouter;
-	// How to withdraw and deposit an asset.
-	type AssetTransactor = LocalAssetTransactor;
-	type OriginConverter = ();
-	type IsReserve = NativeAsset;
-	type IsTeleporter = NativeAsset;
-	type UniversalLocation = UniversalLocation;
-	type Barrier = ();
-	type Weigher = FixedWeightBounds<UnitWeightCost, RuntimeCall, MaxInstructions>;
-	type Trader = ();
-	type ResponseHandler = ();
-	type AssetTrap = ();
-	type AssetClaims = ();
-	type SubscriptionService = ();
-	type PalletInstancesInfo = AllPalletsWithSystem;
-	type MaxAssetsIntoHolding = MaxAssetsIntoHolding;
-	type AssetLocker = ();
-	type AssetExchanger = ();
-	type FeeManager = ();
-	type MessageExporter = ();
-	type UniversalAliases = Nothing;
-	type CallDispatcher = RuntimeCall;
-	type SafeCallFilter = Everything;
-	type Aliasers = Nothing;
-	type TransactionalProcessor = FrameTransactionalProcessor;
-	type HrmpNewChannelOpenRequestHandler = ();
-	type HrmpChannelAcceptedHandler = ();
-	type HrmpChannelClosingHandler = ();
-	type XcmRecorder = ();
-}
-
-pub type XcmRouter = (
-	// XCMP to communicate with the sibling chains.
-	XcmpQueue,
-);
-
 pub struct SystemParachainAsSuperuser<RuntimeOrigin>(PhantomData<RuntimeOrigin>);
 impl<RuntimeOrigin: OriginTrait> ConvertOrigin<RuntimeOrigin>
 	for SystemParachainAsSuperuser<RuntimeOrigin>
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs
index d6cf819118e..470b4d0f389 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-rococo/src/tests/teleport.rs
@@ -265,7 +265,9 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
 	let delivery_fees = AssetHubRococo::execute_with(|| {
 		xcm_helpers::teleport_assets_delivery_fees::<
 			<AssetHubRococoXcmConfig as xcm_executor::Config>::XcmSender,
-		>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
+		>(
+			test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest
+		)
 	});
 
 	// Sender's balance is reduced
diff --git a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs
index ddb82a954a8..ee0f297792f 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/assets/asset-hub-westend/src/tests/teleport.rs
@@ -265,7 +265,9 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
 	let delivery_fees = AssetHubWestend::execute_with(|| {
 		xcm_helpers::teleport_assets_delivery_fees::<
 			<AssetHubWestendXcmConfig as xcm_executor::Config>::XcmSender,
-		>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
+		>(
+			test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest
+		)
 	});
 
 	// Sender's balance is reduced
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-rococo/src/tests/teleport.rs b/cumulus/parachains/integration-tests/emulated/tests/people/people-rococo/src/tests/teleport.rs
index 44e6b3934f0..2619ca7591d 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/people/people-rococo/src/tests/teleport.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-rococo/src/tests/teleport.rs
@@ -107,7 +107,9 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
 	let delivery_fees = PeopleRococo::execute_with(|| {
 		xcm_helpers::teleport_assets_delivery_fees::<
 			<PeopleRococoXcmConfig as xcm_executor::Config>::XcmSender,
-		>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
+		>(
+			test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest
+		)
 	});
 
 	// Sender's balance is reduced
diff --git a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/teleport.rs b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/teleport.rs
index 83888031723..d9a2c23ac0c 100644
--- a/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/teleport.rs
+++ b/cumulus/parachains/integration-tests/emulated/tests/people/people-westend/src/tests/teleport.rs
@@ -107,7 +107,9 @@ fn limited_teleport_native_assets_from_system_para_to_relay_fails() {
 	let delivery_fees = PeopleWestend::execute_with(|| {
 		xcm_helpers::teleport_assets_delivery_fees::<
 			<PeopleWestendXcmConfig as xcm_executor::Config>::XcmSender,
-		>(test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest)
+		>(
+			test.args.assets.clone(), 0, test.args.weight_limit, test.args.beneficiary, test.args.dest
+		)
 	});
 
 	// Sender's balance is reduced
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
index e46734dfa97..430c5bd1856 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-rococo/src/lib.rs
@@ -545,7 +545,8 @@ impl InstanceFilter<RuntimeCall> for ProxyType {
 						RuntimeCall::Utility { .. } |
 						RuntimeCall::Multisig { .. } |
 						RuntimeCall::NftFractionalization { .. } |
-						RuntimeCall::Nfts { .. } | RuntimeCall::Uniques { .. }
+						RuntimeCall::Nfts { .. } |
+						RuntimeCall::Uniques { .. }
 				)
 			},
 			ProxyType::AssetOwner => matches!(
@@ -866,7 +867,7 @@ impl pallet_nft_fractionalization::Config for Runtime {
 	type Assets = Assets;
 	type Nfts = Nfts;
 	type PalletId = NftFractionalizationPalletId;
-	type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
+	type WeightInfo = weights::pallet_nft_fractionalization::WeightInfo<Runtime>;
 	type RuntimeHoldReason = RuntimeHoldReason;
 	#[cfg(feature = "runtime-benchmarks")]
 	type BenchmarkHelper = ();
diff --git a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
index 946b72e966e..8565cd30f43 100644
--- a/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
+++ b/cumulus/parachains/runtimes/assets/asset-hub-westend/src/lib.rs
@@ -543,7 +543,8 @@ impl InstanceFilter<RuntimeCall> for ProxyType {
 						RuntimeCall::Utility { .. } |
 						RuntimeCall::Multisig { .. } |
 						RuntimeCall::NftFractionalization { .. } |
-						RuntimeCall::Nfts { .. } | RuntimeCall::Uniques { .. }
+						RuntimeCall::Nfts { .. } |
+						RuntimeCall::Uniques { .. }
 				)
 			},
 			ProxyType::AssetOwner => matches!(
@@ -859,7 +860,7 @@ impl pallet_nft_fractionalization::Config for Runtime {
 	type Assets = Assets;
 	type Nfts = Nfts;
 	type PalletId = NftFractionalizationPalletId;
-	type WeightInfo = pallet_nft_fractionalization::weights::SubstrateWeight<Runtime>;
+	type WeightInfo = weights::pallet_nft_fractionalization::WeightInfo<Runtime>;
 	type RuntimeHoldReason = RuntimeHoldReason;
 	#[cfg(feature = "runtime-benchmarks")]
 	type BenchmarkHelper = ();
diff --git a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
index 67b585ecfe8..c8022214230 100644
--- a/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
+++ b/cumulus/parachains/runtimes/assets/test-utils/src/test_cases.rs
@@ -1143,7 +1143,8 @@ pub fn create_and_manage_foreign_assets_for_local_consensus_parachain_assets_wor
 		.with_balances(vec![(
 			foreign_creator_as_account_id.clone(),
 			existential_deposit +
-				asset_deposit + metadata_deposit_base +
+				asset_deposit +
+				metadata_deposit_base +
 				metadata_deposit_per_byte_eta +
 				buy_execution_fee_amount.into() +
 				buy_execution_fee_amount.into(),
diff --git a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs
index 4ff388f4ba2..d168d1b7a13 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/bridge-hub-westend/tests/tests.rs
@@ -301,12 +301,16 @@ fn relayed_incoming_message_works() {
 				XcmOverBridgeHubRococoInstance,
 				LocationToAccountId,
 				WestendLocation,
-			>(SiblingParachainLocation::get(), BridgedUniversalLocation::get(), |locations, fee| {
-				bridge_hub_test_utils::open_bridge_with_storage::<
-					Runtime,
-					XcmOverBridgeHubRococoInstance,
-				>(locations, fee, LegacyLaneId([0, 0, 0, 1]))
-			})
+			>(
+				SiblingParachainLocation::get(),
+				BridgedUniversalLocation::get(),
+				|locations, fee| {
+					bridge_hub_test_utils::open_bridge_with_storage::<
+						Runtime,
+						XcmOverBridgeHubRococoInstance,
+					>(locations, fee, LegacyLaneId([0, 0, 0, 1]))
+				},
+			)
 			.1
 		},
 		construct_and_apply_extrinsic,
@@ -331,12 +335,16 @@ fn free_relay_extrinsic_works() {
 				XcmOverBridgeHubRococoInstance,
 				LocationToAccountId,
 				WestendLocation,
-			>(SiblingParachainLocation::get(), BridgedUniversalLocation::get(), |locations, fee| {
-				bridge_hub_test_utils::open_bridge_with_storage::<
-					Runtime,
-					XcmOverBridgeHubRococoInstance,
-				>(locations, fee, LegacyLaneId([0, 0, 0, 1]))
-			})
+			>(
+				SiblingParachainLocation::get(),
+				BridgedUniversalLocation::get(),
+				|locations, fee| {
+					bridge_hub_test_utils::open_bridge_with_storage::<
+						Runtime,
+						XcmOverBridgeHubRococoInstance,
+					>(locations, fee, LegacyLaneId([0, 0, 0, 1]))
+				},
+			)
 			.1
 		},
 		construct_and_apply_extrinsic,
diff --git a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs
index 663558f5fd5..9c5d6269dc0 100644
--- a/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs
+++ b/cumulus/parachains/runtimes/bridge-hubs/test-utils/src/test_cases/mod.rs
@@ -506,11 +506,12 @@ pub fn message_dispatch_routing_works<
 
 		// 2. this message is sent from other global consensus with destination of this Runtime
 		//    sibling parachain (HRMP)
-		let bridging_message = test_data::simulate_message_exporter_on_bridged_chain::<
-			BridgedNetwork,
-			NetworkWithParentCount<RuntimeNetwork, NetworkDistanceAsParentCount>,
-			AlwaysLatest,
-		>((RuntimeNetwork::get(), [Parachain(sibling_parachain_id)].into()));
+		let bridging_message =
+			test_data::simulate_message_exporter_on_bridged_chain::<
+				BridgedNetwork,
+				NetworkWithParentCount<RuntimeNetwork, NetworkDistanceAsParentCount>,
+				AlwaysLatest,
+			>((RuntimeNetwork::get(), [Parachain(sibling_parachain_id)].into()));
 
 		// 2.1. WITHOUT opened hrmp channel -> RoutingError
 		let result =
diff --git a/cumulus/parachains/runtimes/starters/shell/src/lib.rs b/cumulus/parachains/runtimes/starters/shell/src/lib.rs
index a7c8bc23935..c7e81d67bba 100644
--- a/cumulus/parachains/runtimes/starters/shell/src/lib.rs
+++ b/cumulus/parachains/runtimes/starters/shell/src/lib.rs
@@ -218,11 +218,7 @@ parameter_types! {
 impl pallet_message_queue::Config for Runtime {
 	type RuntimeEvent = RuntimeEvent;
 	type WeightInfo = ();
-	#[cfg(feature = "runtime-benchmarks")]
-	type MessageProcessor = pallet_message_queue::mock_helpers::NoopMessageProcessor<
-		cumulus_primitives_core::AggregateMessageOrigin,
-	>;
-	#[cfg(not(feature = "runtime-benchmarks"))]
+	// NOTE: Changes are needed here if you add benchmarking to the runtime.
 	type MessageProcessor = xcm_builder::ProcessXcmMessage<
 		AggregateMessageOrigin,
 		xcm_executor::XcmExecutor<xcm_config::XcmConfig>,
diff --git a/cumulus/polkadot-parachain/polkadot-parachain-lib/src/fake_runtime_api/mod.rs b/cumulus/polkadot-parachain/polkadot-parachain-lib/src/fake_runtime_api/mod.rs
index 02aa867d70f..bd4ff167d8f 100644
--- a/cumulus/polkadot-parachain/polkadot-parachain-lib/src/fake_runtime_api/mod.rs
+++ b/cumulus/polkadot-parachain/polkadot-parachain-lib/src/fake_runtime_api/mod.rs
@@ -24,12 +24,14 @@ use utils::{impl_node_runtime_apis, imports::*};
 type CustomBlock = crate::common::types::Block<u32>;
 pub mod aura_sr25519 {
 	use super::*;
+	#[allow(dead_code)]
 	struct FakeRuntime;
 	impl_node_runtime_apis!(FakeRuntime, CustomBlock, sp_consensus_aura::sr25519::AuthorityId);
 }
 
 pub mod aura_ed25519 {
 	use super::*;
+	#[allow(dead_code)]
 	struct FakeRuntime;
 	impl_node_runtime_apis!(FakeRuntime, CustomBlock, sp_consensus_aura::ed25519::AuthorityId);
 }
diff --git a/cumulus/primitives/utility/src/lib.rs b/cumulus/primitives/utility/src/lib.rs
index 6bd14d136a6..8530f5b8748 100644
--- a/cumulus/primitives/utility/src/lib.rs
+++ b/cumulus/primitives/utility/src/lib.rs
@@ -385,7 +385,8 @@ impl<
 		FungiblesAssetMatcher,
 		OnUnbalanced,
 		AccountId,
-	> where
+	>
+where
 	Fungibles::Balance: Into<u128>,
 {
 	fn new() -> Self {
@@ -545,7 +546,8 @@ impl<
 		FungiblesAssetMatcher,
 		OnUnbalanced,
 		AccountId,
-	> where
+	>
+where
 	Fungibles::Balance: Into<u128>,
 {
 	fn drop(&mut self) {
diff --git a/polkadot/cli/src/command.rs b/polkadot/cli/src/command.rs
index 16576e4b272..34ada58bbcd 100644
--- a/polkadot/cli/src/command.rs
+++ b/polkadot/cli/src/command.rs
@@ -29,8 +29,6 @@ use sp_keyring::Sr25519Keyring;
 use std::net::ToSocketAddrs;
 
 pub use crate::error::Error;
-#[cfg(feature = "hostperfcheck")]
-pub use polkadot_performance_test::PerfCheckError;
 #[cfg(feature = "pyroscope")]
 use pyroscope_pprofrs::{pprof_backend, PprofConfig};
 
diff --git a/polkadot/node/core/approval-voting-parallel/src/lib.rs b/polkadot/node/core/approval-voting-parallel/src/lib.rs
index 18c73cfba1f..1a7ef756bdf 100644
--- a/polkadot/node/core/approval-voting-parallel/src/lib.rs
+++ b/polkadot/node/core/approval-voting-parallel/src/lib.rs
@@ -878,7 +878,8 @@ pub struct ApprovalVotingToApprovalDistribution<S: SubsystemSender<ApprovalVotin
 );
 
 impl<S: SubsystemSender<ApprovalVotingParallelMessage>>
-	overseer::SubsystemSender<ApprovalDistributionMessage> for ApprovalVotingToApprovalDistribution<S>
+	overseer::SubsystemSender<ApprovalDistributionMessage>
+	for ApprovalVotingToApprovalDistribution<S>
 {
 	#[allow(clippy::type_complexity, clippy::type_repetition_in_bounds)]
 	fn send_message<'life0, 'async_trait>(
diff --git a/polkadot/node/core/approval-voting/src/import.rs b/polkadot/node/core/approval-voting/src/import.rs
index bf6ea0c9814..5c456d22b21 100644
--- a/polkadot/node/core/approval-voting/src/import.rs
+++ b/polkadot/node/core/approval-voting/src/import.rs
@@ -320,7 +320,6 @@ pub struct BlockImportedCandidates {
 	pub block_hash: Hash,
 	pub block_number: BlockNumber,
 	pub block_tick: Tick,
-	pub no_show_duration: Tick,
 	pub imported_candidates: Vec<(CandidateHash, CandidateEntry)>,
 }
 
@@ -469,14 +468,7 @@ pub(crate) async fn handle_new_head<
 				None => return Ok(Vec::new()),
 			};
 
-		let (block_tick, no_show_duration) = {
-			let block_tick = slot_number_to_tick(state.slot_duration_millis, slot);
-			let no_show_duration = slot_number_to_tick(
-				state.slot_duration_millis,
-				Slot::from(u64::from(session_info.no_show_slots)),
-			);
-			(block_tick, no_show_duration)
-		};
+		let block_tick = slot_number_to_tick(state.slot_duration_millis, slot);
 
 		let needed_approvals = session_info.needed_approvals;
 		let validator_group_lens: Vec<usize> =
@@ -595,7 +587,6 @@ pub(crate) async fn handle_new_head<
 			block_hash,
 			block_number: block_header.number,
 			block_tick,
-			no_show_duration,
 			imported_candidates: candidate_entries
 				.into_iter()
 				.map(|(h, e)| (h, e.into()))
diff --git a/polkadot/node/core/approval-voting/src/lib.rs b/polkadot/node/core/approval-voting/src/lib.rs
index 2149ce81fa8..23f052b95f6 100644
--- a/polkadot/node/core/approval-voting/src/lib.rs
+++ b/polkadot/node/core/approval-voting/src/lib.rs
@@ -2548,7 +2548,12 @@ fn schedule_wakeup_action(
 				last_assignment_tick.map(|l| l + APPROVAL_DELAY).filter(|t| t > &tick_now),
 				next_no_show,
 			)
-			.map(|tick| Action::ScheduleWakeup { block_hash, block_number, candidate_hash, tick })
+			.map(|tick| Action::ScheduleWakeup {
+				block_hash,
+				block_number,
+				candidate_hash,
+				tick,
+			})
 		},
 		RequiredTranches::Pending { considered, next_no_show, clock_drift, .. } => {
 			// select the minimum of `next_no_show`, or the tick of the next non-empty tranche
diff --git a/polkadot/node/core/approval-voting/src/tests.rs b/polkadot/node/core/approval-voting/src/tests.rs
index 8aa78df5495..ec825b800c7 100644
--- a/polkadot/node/core/approval-voting/src/tests.rs
+++ b/polkadot/node/core/approval-voting/src/tests.rs
@@ -253,7 +253,8 @@ where
 		_relay_vrf_story: polkadot_node_primitives::approval::v1::RelayVRFStory,
 		_assignment: &polkadot_node_primitives::approval::v2::AssignmentCertV2,
 		_backing_groups: Vec<polkadot_primitives::GroupIndex>,
-	) -> Result<polkadot_node_primitives::approval::v1::DelayTranche, criteria::InvalidAssignment> {
+	) -> Result<polkadot_node_primitives::approval::v1::DelayTranche, criteria::InvalidAssignment>
+	{
 		self.1(validator_index)
 	}
 }
diff --git a/polkadot/node/core/pvf/build.rs b/polkadot/node/core/pvf/build.rs
index e01cc6deecc..e46f2dc5f55 100644
--- a/polkadot/node/core/pvf/build.rs
+++ b/polkadot/node/core/pvf/build.rs
@@ -16,6 +16,6 @@
 
 fn main() {
 	if let Ok(profile) = std::env::var("PROFILE") {
-		println!(r#"cargo:rustc-cfg=build_type="{}""#, profile);
+		println!(r#"cargo:rustc-cfg=build_profile="{}""#, profile);
 	}
 }
diff --git a/polkadot/node/core/pvf/common/src/worker/security/change_root.rs b/polkadot/node/core/pvf/common/src/worker/security/change_root.rs
index 9ec66906819..fcfaf6541c2 100644
--- a/polkadot/node/core/pvf/common/src/worker/security/change_root.rs
+++ b/polkadot/node/core/pvf/common/src/worker/security/change_root.rs
@@ -124,7 +124,8 @@ fn try_restrict(worker_info: &WorkerInfo) -> Result<()> {
 				libc::MS_BIND |
 					libc::MS_REC | libc::MS_NOEXEC |
 					libc::MS_NODEV | libc::MS_NOSUID |
-					libc::MS_NOATIME | additional_flags,
+					libc::MS_NOATIME |
+					additional_flags,
 				ptr::null(), // ignored when MS_BIND is used
 			) < 0
 			{
diff --git a/polkadot/node/core/pvf/src/artifacts.rs b/polkadot/node/core/pvf/src/artifacts.rs
index 119af34082a..1126a0c90c8 100644
--- a/polkadot/node/core/pvf/src/artifacts.rs
+++ b/polkadot/node/core/pvf/src/artifacts.rs
@@ -56,7 +56,7 @@
 
 use crate::{host::PrecheckResultSender, worker_interface::WORKER_DIR_PREFIX};
 use always_assert::always;
-use polkadot_node_core_pvf_common::{error::PrepareError, prepare::PrepareStats, pvf::PvfPrepData};
+use polkadot_node_core_pvf_common::{error::PrepareError, pvf::PvfPrepData};
 use polkadot_parachain_primitives::primitives::ValidationCodeHash;
 use polkadot_primitives::ExecutorParamsPrepHash;
 use std::{
@@ -144,8 +144,6 @@ pub enum ArtifactState {
 		last_time_needed: SystemTime,
 		/// Size in bytes
 		size: u64,
-		/// Stats produced by successful preparation.
-		prepare_stats: PrepareStats,
 	},
 	/// A task to prepare this artifact is scheduled.
 	Preparing {
@@ -269,15 +267,11 @@ impl Artifacts {
 		path: PathBuf,
 		last_time_needed: SystemTime,
 		size: u64,
-		prepare_stats: PrepareStats,
 	) {
 		// See the precondition.
 		always!(self
 			.inner
-			.insert(
-				artifact_id,
-				ArtifactState::Prepared { path, last_time_needed, size, prepare_stats }
-			)
+			.insert(artifact_id, ArtifactState::Prepared { path, last_time_needed, size })
 			.is_none());
 	}
 
@@ -384,21 +378,18 @@ mod tests {
 			path1.clone(),
 			mock_now - Duration::from_secs(5),
 			1024,
-			PrepareStats::default(),
 		);
 		artifacts.insert_prepared(
 			artifact_id2.clone(),
 			path2.clone(),
 			mock_now - Duration::from_secs(10),
 			1024,
-			PrepareStats::default(),
 		);
 		artifacts.insert_prepared(
 			artifact_id3.clone(),
 			path3.clone(),
 			mock_now - Duration::from_secs(15),
 			1024,
-			PrepareStats::default(),
 		);
 
 		let pruned = artifacts.prune(&cleanup_config);
@@ -432,21 +423,18 @@ mod tests {
 			path1.clone(),
 			mock_now - Duration::from_secs(5),
 			1024,
-			PrepareStats::default(),
 		);
 		artifacts.insert_prepared(
 			artifact_id2.clone(),
 			path2.clone(),
 			mock_now - Duration::from_secs(10),
 			1024,
-			PrepareStats::default(),
 		);
 		artifacts.insert_prepared(
 			artifact_id3.clone(),
 			path3.clone(),
 			mock_now - Duration::from_secs(15),
 			1024,
-			PrepareStats::default(),
 		);
 
 		let pruned = artifacts.prune(&cleanup_config);
diff --git a/polkadot/node/core/pvf/src/host.rs b/polkadot/node/core/pvf/src/host.rs
index 44a4cba2fbf..22943a06c43 100644
--- a/polkadot/node/core/pvf/src/host.rs
+++ b/polkadot/node/core/pvf/src/host.rs
@@ -813,12 +813,8 @@ async fn handle_prepare_done(
 	}
 
 	*state = match result {
-		Ok(PrepareSuccess { path, stats: prepare_stats, size }) => ArtifactState::Prepared {
-			path,
-			last_time_needed: SystemTime::now(),
-			size,
-			prepare_stats,
-		},
+		Ok(PrepareSuccess { path, size, .. }) =>
+			ArtifactState::Prepared { path, last_time_needed: SystemTime::now(), size },
 		Err(error) => {
 			let last_time_failed = SystemTime::now();
 			let num_failures = *num_failures + 1;
@@ -976,7 +972,6 @@ pub(crate) mod tests {
 	use crate::{artifacts::generate_artifact_path, testing::artifact_id, PossiblyInvalidError};
 	use assert_matches::assert_matches;
 	use futures::future::BoxFuture;
-	use polkadot_node_core_pvf_common::prepare::PrepareStats;
 	use polkadot_node_primitives::BlockData;
 	use sp_core::H256;
 
@@ -1196,20 +1191,8 @@ pub(crate) mod tests {
 		builder.cleanup_config = ArtifactsCleanupConfig::new(1024, Duration::from_secs(0));
 		let path1 = generate_artifact_path(cache_path);
 		let path2 = generate_artifact_path(cache_path);
-		builder.artifacts.insert_prepared(
-			artifact_id(1),
-			path1.clone(),
-			mock_now,
-			1024,
-			PrepareStats::default(),
-		);
-		builder.artifacts.insert_prepared(
-			artifact_id(2),
-			path2.clone(),
-			mock_now,
-			1024,
-			PrepareStats::default(),
-		);
+		builder.artifacts.insert_prepared(artifact_id(1), path1.clone(), mock_now, 1024);
+		builder.artifacts.insert_prepared(artifact_id(2), path2.clone(), mock_now, 1024);
 		let mut test = builder.build();
 		let mut host = test.host_handle();
 
diff --git a/polkadot/node/core/pvf/src/prepare/pool.rs b/polkadot/node/core/pvf/src/prepare/pool.rs
index 4e11f977c9e..67cd71812e5 100644
--- a/polkadot/node/core/pvf/src/prepare/pool.rs
+++ b/polkadot/node/core/pvf/src/prepare/pool.rs
@@ -343,14 +343,13 @@ fn handle_mux(
 				),
 				// Return `Concluded`, but do not kill the worker since the error was on the host
 				// side.
-				Outcome::RenameTmpFile { worker: idle, result: _, err, src, dest } =>
-					handle_concluded_no_rip(
-						from_pool,
-						spawned,
-						worker,
-						idle,
-						Err(PrepareError::RenameTmpFile { err, src, dest }),
-					),
+				Outcome::RenameTmpFile { worker: idle, err, src, dest } => handle_concluded_no_rip(
+					from_pool,
+					spawned,
+					worker,
+					idle,
+					Err(PrepareError::RenameTmpFile { err, src, dest }),
+				),
 				// Could not clear worker cache. Kill the worker so other jobs can't see the data.
 				Outcome::ClearWorkerDir { err } => {
 					if attempt_retire(metrics, spawned, worker) {
diff --git a/polkadot/node/core/pvf/src/prepare/worker_interface.rs b/polkadot/node/core/pvf/src/prepare/worker_interface.rs
index d29d2717c4b..718416e8be7 100644
--- a/polkadot/node/core/pvf/src/prepare/worker_interface.rs
+++ b/polkadot/node/core/pvf/src/prepare/worker_interface.rs
@@ -81,7 +81,6 @@ pub enum Outcome {
 	/// final destination location.
 	RenameTmpFile {
 		worker: IdleWorker,
-		result: PrepareWorkerResult,
 		err: String,
 		// Unfortunately `PathBuf` doesn't implement `Encode`/`Decode`, so we do a fallible
 		// conversion to `Option<String>`.
@@ -287,7 +286,6 @@ async fn handle_response(
 			);
 			Outcome::RenameTmpFile {
 				worker,
-				result,
 				err: format!("{:?}", err),
 				src: tmp_file.to_str().map(String::from),
 				dest: artifact_path.to_str().map(String::from),
diff --git a/polkadot/node/core/pvf/src/testing.rs b/polkadot/node/core/pvf/src/testing.rs
index 8c75dafa69c..9a4004f3903 100644
--- a/polkadot/node/core/pvf/src/testing.rs
+++ b/polkadot/node/core/pvf/src/testing.rs
@@ -72,7 +72,7 @@ pub fn build_workers_and_get_paths() -> (PathBuf, PathBuf) {
 			"--bin=polkadot-execute-worker",
 		];
 
-		if cfg!(build_type = "release") {
+		if cfg!(build_profile = "release") {
 			build_args.push("--release");
 		}
 
diff --git a/polkadot/node/network/approval-distribution/src/tests.rs b/polkadot/node/network/approval-distribution/src/tests.rs
index 068559dea76..063e71f2f52 100644
--- a/polkadot/node/network/approval-distribution/src/tests.rs
+++ b/polkadot/node/network/approval-distribution/src/tests.rs
@@ -535,7 +535,8 @@ impl AssignmentCriteria for MockAssignmentCriteria {
 		_relay_vrf_story: polkadot_node_primitives::approval::v1::RelayVRFStory,
 		_assignment: &polkadot_node_primitives::approval::v2::AssignmentCertV2,
 		_backing_groups: Vec<polkadot_primitives::GroupIndex>,
-	) -> Result<polkadot_node_primitives::approval::v1::DelayTranche, criteria::InvalidAssignment> {
+	) -> Result<polkadot_node_primitives::approval::v1::DelayTranche, criteria::InvalidAssignment>
+	{
 		self.tranche
 	}
 }
diff --git a/polkadot/node/network/availability-distribution/src/tests/mod.rs b/polkadot/node/network/availability-distribution/src/tests/mod.rs
index 3320871bceb..078220607c3 100644
--- a/polkadot/node/network/availability-distribution/src/tests/mod.rs
+++ b/polkadot/node/network/availability-distribution/src/tests/mod.rs
@@ -45,7 +45,7 @@ fn test_harness<T: Future<Output = ()>>(
 	let (context, virtual_overseer) =
 		polkadot_node_subsystem_test_helpers::make_subsystem_context(pool.clone());
 
-	let (pov_req_receiver, pov_req_cfg) = IncomingRequest::get_config_receiver::<
+	let (pov_req_receiver, _pov_req_cfg) = IncomingRequest::get_config_receiver::<
 		Block,
 		sc_network::NetworkWorker<Block, Hash>,
 	>(&req_protocol_names);
@@ -65,13 +65,8 @@ fn test_harness<T: Future<Output = ()>>(
 	);
 	let subsystem = subsystem.run(context);
 
-	let test_fut = test_fx(TestHarness {
-		virtual_overseer,
-		pov_req_cfg,
-		chunk_req_v1_cfg,
-		chunk_req_v2_cfg,
-		pool,
-	});
+	let test_fut =
+		test_fx(TestHarness { virtual_overseer, chunk_req_v1_cfg, chunk_req_v2_cfg, pool });
 
 	futures::pin_mut!(test_fut);
 	futures::pin_mut!(subsystem);
diff --git a/polkadot/node/network/availability-distribution/src/tests/state.rs b/polkadot/node/network/availability-distribution/src/tests/state.rs
index 97e616f79fb..53d6fd2c530 100644
--- a/polkadot/node/network/availability-distribution/src/tests/state.rs
+++ b/polkadot/node/network/availability-distribution/src/tests/state.rs
@@ -60,7 +60,6 @@ type VirtualOverseer = polkadot_node_subsystem_test_helpers::TestSubsystemContex
 >;
 pub struct TestHarness {
 	pub virtual_overseer: VirtualOverseer,
-	pub pov_req_cfg: RequestResponseConfig,
 	pub chunk_req_v1_cfg: RequestResponseConfig,
 	pub chunk_req_v2_cfg: RequestResponseConfig,
 	pub pool: TaskExecutor,
diff --git a/polkadot/node/network/availability-recovery/src/task/strategy/chunks.rs b/polkadot/node/network/availability-recovery/src/task/strategy/chunks.rs
index b6376a5b543..6b34538b626 100644
--- a/polkadot/node/network/availability-recovery/src/task/strategy/chunks.rs
+++ b/polkadot/node/network/availability-recovery/src/task/strategy/chunks.rs
@@ -107,9 +107,10 @@ impl FetchChunks {
 		state: &mut State,
 		common_params: &RecoveryParams,
 	) -> Result<AvailableData, RecoveryError> {
-		let recovery_duration = common_params
-			.metrics
-			.time_erasure_recovery(RecoveryStrategy::<Sender>::strategy_type(self));
+		let recovery_duration =
+			common_params
+				.metrics
+				.time_erasure_recovery(RecoveryStrategy::<Sender>::strategy_type(self));
 
 		// Send request to reconstruct available data from chunks.
 		let (avilable_data_tx, available_data_rx) = oneshot::channel();
@@ -136,18 +137,16 @@ impl FetchChunks {
 			// Attempt post-recovery check.
 			Ok(data) => do_post_recovery_check(common_params, data)
 				.await
-				.map_err(|e| {
+				.inspect_err(|_| {
 					recovery_duration.map(|rd| rd.stop_and_discard());
-					e
 				})
-				.map(|data| {
+				.inspect(|_| {
 					gum::trace!(
 						target: LOG_TARGET,
 						candidate_hash = ?common_params.candidate_hash,
 						erasure_root = ?common_params.erasure_root,
 						"Data recovery from chunks complete",
 					);
-					data
 				}),
 			Err(err) => {
 				recovery_duration.map(|rd| rd.stop_and_discard());
diff --git a/polkadot/node/network/availability-recovery/src/task/strategy/systematic.rs b/polkadot/node/network/availability-recovery/src/task/strategy/systematic.rs
index 677bc2d1375..8b8cff54991 100644
--- a/polkadot/node/network/availability-recovery/src/task/strategy/systematic.rs
+++ b/polkadot/node/network/availability-recovery/src/task/strategy/systematic.rs
@@ -125,18 +125,16 @@ impl FetchSystematicChunks {
 				// Attempt post-recovery check.
 				do_post_recovery_check(common_params, data)
 					.await
-					.map_err(|e| {
+					.inspect_err(|_| {
 						recovery_duration.map(|rd| rd.stop_and_discard());
-						e
 					})
-					.map(|data| {
+					.inspect(|_| {
 						gum::trace!(
 							target: LOG_TARGET,
 							candidate_hash = ?common_params.candidate_hash,
 							erasure_root = ?common_params.erasure_root,
 							"Data recovery from systematic chunks complete",
 						);
-						data
 					})
 			},
 			Err(err) => {
diff --git a/polkadot/node/overseer/src/lib.rs b/polkadot/node/overseer/src/lib.rs
index 10a4320433a..e30ed69f9e3 100644
--- a/polkadot/node/overseer/src/lib.rs
+++ b/polkadot/node/overseer/src/lib.rs
@@ -60,6 +60,7 @@
 // unused dependencies can not work for test and examples at the same time
 // yielding false positives
 #![warn(missing_docs)]
+#![allow(dead_code)] // TODO https://github.com/paritytech/polkadot-sdk/issues/5793
 
 use std::{
 	collections::{hash_map, HashMap},
diff --git a/polkadot/node/service/src/fake_runtime_api.rs b/polkadot/node/service/src/fake_runtime_api.rs
index 1f2efdbbb5b..d8f147a9cf7 100644
--- a/polkadot/node/service/src/fake_runtime_api.rs
+++ b/polkadot/node/service/src/fake_runtime_api.rs
@@ -53,6 +53,7 @@ sp_api::decl_runtime_apis! {
 	}
 }
 
+#[allow(dead_code)]
 struct Runtime;
 
 sp_api::impl_runtime_apis! {
diff --git a/polkadot/node/service/src/parachains_db/mod.rs b/polkadot/node/service/src/parachains_db/mod.rs
index 59af30dceeb..887db80a303 100644
--- a/polkadot/node/service/src/parachains_db/mod.rs
+++ b/polkadot/node/service/src/parachains_db/mod.rs
@@ -100,18 +100,11 @@ pub struct CacheSizes {
 	pub availability_meta: usize,
 	/// Cache used by approval data.
 	pub approval_data: usize,
-	/// Cache used by session window data
-	pub session_data: usize,
 }
 
 impl Default for CacheSizes {
 	fn default() -> Self {
-		CacheSizes {
-			availability_data: 25,
-			availability_meta: 1,
-			approval_data: 5,
-			session_data: 1,
-		}
+		CacheSizes { availability_data: 25, availability_meta: 1, approval_data: 5 }
 	}
 }
 
diff --git a/polkadot/node/service/src/tests.rs b/polkadot/node/service/src/tests.rs
index 85b750ddad6..78bbfcd5444 100644
--- a/polkadot/node/service/src/tests.rs
+++ b/polkadot/node/service/src/tests.rs
@@ -63,9 +63,6 @@ struct TestHarness {
 	finality_target_rx: Receiver<Option<Hash>>,
 }
 
-#[derive(Default)]
-struct HarnessConfig;
-
 fn test_harness<T: Future<Output = VirtualOverseer>>(
 	case_vars: CaseVars,
 	test: impl FnOnce(TestHarness) -> T,
diff --git a/polkadot/node/subsystem-bench/src/lib/approval/message_generator.rs b/polkadot/node/subsystem-bench/src/lib/approval/message_generator.rs
index da25a3bf3b7..807afb0438c 100644
--- a/polkadot/node/subsystem-bench/src/lib/approval/message_generator.rs
+++ b/polkadot/node/subsystem-bench/src/lib/approval/message_generator.rs
@@ -401,7 +401,7 @@ impl PeerMessagesGenerator {
 /// We can not sample every time for all the messages because that would be too expensive to
 /// perform, so pre-generate a list of samples for a given network size.
 /// - result[i] give us as a list of random nodes that would send a given message to the node under
-/// test.
+///   test.
 fn random_samplings_to_node(
 	node_under_test: ValidatorIndex,
 	num_validators: usize,
@@ -474,8 +474,7 @@ fn issue_approvals(
 		coalesce_approvals_len(options.coalesce_mean, options.coalesce_std_dev, rand_chacha);
 	let result = assignments
 		.iter()
-		.enumerate()
-		.map(|(_index, message)| match &message.msg {
+		.map(|message| match &message.msg {
 			protocol_v3::ApprovalDistributionMessage::Assignments(assignments) => {
 				let mut approvals_to_create = Vec::new();
 
diff --git a/polkadot/node/subsystem-bench/src/lib/statement/mod.rs b/polkadot/node/subsystem-bench/src/lib/statement/mod.rs
index e2d50f28568..dd7095d3b00 100644
--- a/polkadot/node/subsystem-bench/src/lib/statement/mod.rs
+++ b/polkadot/node/subsystem-bench/src/lib/statement/mod.rs
@@ -114,14 +114,14 @@ fn build_overseer(
 		state.pvd.clone(),
 		state.own_backing_group.clone(),
 	);
-	let (statement_req_receiver, statement_req_cfg) = IncomingRequest::get_config_receiver::<
-		Block,
-		sc_network::NetworkWorker<Block, Hash>,
-	>(&ReqProtocolNames::new(GENESIS_HASH, None));
-	let (candidate_req_receiver, candidate_req_cfg) = IncomingRequest::get_config_receiver::<
-		Block,
-		sc_network::NetworkWorker<Block, Hash>,
-	>(&ReqProtocolNames::new(GENESIS_HASH, None));
+	let (statement_req_receiver, statement_req_cfg) =
+		IncomingRequest::get_config_receiver::<Block, sc_network::NetworkWorker<Block, Hash>>(
+			&ReqProtocolNames::new(GENESIS_HASH, None),
+		);
+	let (candidate_req_receiver, candidate_req_cfg) =
+		IncomingRequest::get_config_receiver::<Block, sc_network::NetworkWorker<Block, Hash>>(
+			&ReqProtocolNames::new(GENESIS_HASH, None),
+		);
 	let keystore = make_keystore();
 	let subsystem = StatementDistributionSubsystem::new(
 		keystore.clone(),
diff --git a/polkadot/node/subsystem-types/src/runtime_client.rs b/polkadot/node/subsystem-types/src/runtime_client.rs
index 7938223df23..a8af8b7996f 100644
--- a/polkadot/node/subsystem-types/src/runtime_client.rs
+++ b/polkadot/node/subsystem-types/src/runtime_client.rs
@@ -665,7 +665,8 @@ where
 	fn number(
 		&self,
 		hash: Block::Hash,
-	) -> sc_client_api::blockchain::Result<Option<<<Block as BlockT>::Header as HeaderT>::Number>> {
+	) -> sc_client_api::blockchain::Result<Option<<<Block as BlockT>::Header as HeaderT>::Number>>
+	{
 		self.client.number(hash)
 	}
 
diff --git a/polkadot/primitives/src/runtime_api.rs b/polkadot/primitives/src/runtime_api.rs
index ddebe99e621..3c90c050bae 100644
--- a/polkadot/primitives/src/runtime_api.rs
+++ b/polkadot/primitives/src/runtime_api.rs
@@ -36,7 +36,7 @@
 //!
 //! Let's see a quick example:
 //!
-//! ```rust(ignore)
+//! ```nocompile
 //! sp_api::decl_runtime_apis! {
 //! 	#[api_version(2)]
 //! 	pub trait MyApi {
diff --git a/polkadot/primitives/src/v8/metrics.rs b/polkadot/primitives/src/v8/metrics.rs
index 1d66c9848a7..409efc86bc9 100644
--- a/polkadot/primitives/src/v8/metrics.rs
+++ b/polkadot/primitives/src/v8/metrics.rs
@@ -91,18 +91,6 @@ pub type RuntimeMetricLabelValue = RuntimeMetricLabel;
 /// A set of metric label values.
 pub type RuntimeMetricLabelValues = RuntimeMetricLabels;
 
-/// Trait for converting Vec<u8> to `&str`.
-pub trait AsStr {
-	/// Return a str reference.
-	fn as_str(&self) -> Option<&str>;
-}
-
-impl AsStr for RuntimeMetricLabel {
-	fn as_str(&self) -> Option<&str> {
-		alloc::str::from_utf8(&self.0).ok()
-	}
-}
-
 impl From<&'static str> for RuntimeMetricLabel {
 	fn from(s: &'static str) -> Self {
 		Self(s.as_bytes().to_vec())
diff --git a/polkadot/runtime/parachains/src/hrmp.rs b/polkadot/runtime/parachains/src/hrmp.rs
index b149404b41b..220543f00ec 100644
--- a/polkadot/runtime/parachains/src/hrmp.rs
+++ b/polkadot/runtime/parachains/src/hrmp.rs
@@ -945,7 +945,7 @@ impl<T: Config> Pallet<T> {
 			outgoing_paras.len() as u32
 		))
 		.saturating_add(<T as Config>::WeightInfo::force_process_hrmp_close(
-			outgoing_paras.len() as u32
+			outgoing_paras.len() as u32,
 		))
 	}
 
diff --git a/polkadot/runtime/parachains/src/inclusion/mod.rs b/polkadot/runtime/parachains/src/inclusion/mod.rs
index e014529ea11..cc333e3b20f 100644
--- a/polkadot/runtime/parachains/src/inclusion/mod.rs
+++ b/polkadot/runtime/parachains/src/inclusion/mod.rs
@@ -991,9 +991,8 @@ impl<T: Config> Pallet<T> {
 			.iter()
 			.filter_map(|d| {
 				BoundedSlice::try_from(&d[..])
-					.map_err(|e| {
+					.inspect_err(|_| {
 						defensive!("Accepted candidate contains too long msg, len=", d.len());
-						e
 					})
 					.ok()
 			})
diff --git a/polkadot/runtime/parachains/src/paras_inherent/mod.rs b/polkadot/runtime/parachains/src/paras_inherent/mod.rs
index 84d8299cd29..70c4ba72d58 100644
--- a/polkadot/runtime/parachains/src/paras_inherent/mod.rs
+++ b/polkadot/runtime/parachains/src/paras_inherent/mod.rs
@@ -1216,18 +1216,19 @@ fn filter_backed_statements_from_disabled_validators<
 
 		// Get relay parent block number of the candidate. We need this to get the group index
 		// assigned to this core at this block number
-		let relay_parent_block_number =
-			match allowed_relay_parents.acquire_info(bc.descriptor().relay_parent(), None) {
-				Some((_, block_num)) => block_num,
-				None => {
-					log::debug!(
-						target: LOG_TARGET,
-						"Relay parent {:?} for candidate is not in the allowed relay parents. Dropping the candidate.",
-						bc.descriptor().relay_parent()
-					);
-					return false
-				},
-			};
+		let relay_parent_block_number = match allowed_relay_parents
+			.acquire_info(bc.descriptor().relay_parent(), None)
+		{
+			Some((_, block_num)) => block_num,
+			None => {
+				log::debug!(
+					target: LOG_TARGET,
+					"Relay parent {:?} for candidate is not in the allowed relay parents. Dropping the candidate.",
+					bc.descriptor().relay_parent()
+				);
+				return false
+			},
+		};
 
 		// Get the group index for the core
 		let group_idx = match scheduler::Pallet::<T>::group_assigned_to_core(
diff --git a/polkadot/runtime/parachains/src/ump_tests.rs b/polkadot/runtime/parachains/src/ump_tests.rs
index d914bf8b666..91571859ecf 100644
--- a/polkadot/runtime/parachains/src/ump_tests.rs
+++ b/polkadot/runtime/parachains/src/ump_tests.rs
@@ -462,10 +462,11 @@ fn verify_relay_dispatch_queue_size_is_externally_accessible() {
 
 fn assert_queue_size(para: ParaId, count: u32, size: u32) {
 	#[allow(deprecated)]
-	let raw_queue_size = sp_io::storage::get(&well_known_keys::relay_dispatch_queue_size(para)).expect(
-		"enqueuing a message should create the dispatch queue\
+	let raw_queue_size = sp_io::storage::get(&well_known_keys::relay_dispatch_queue_size(para))
+		.expect(
+			"enqueuing a message should create the dispatch queue\
 				and it should be accessible via the well known keys",
-	);
+		);
 	let (c, s) = <(u32, u32)>::decode(&mut &raw_queue_size[..])
 		.expect("the dispatch queue size should be decodable into (u32, u32)");
 	assert_eq!((c, s), (count, size));
diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs
index d6ed11d0787..576e297df31 100644
--- a/polkadot/runtime/westend/src/lib.rs
+++ b/polkadot/runtime/westend/src/lib.rs
@@ -1110,7 +1110,8 @@ impl InstanceFilter<RuntimeCall> for ProxyType {
 				matches!(
 					c,
 					RuntimeCall::Staking(..) |
-						RuntimeCall::Session(..) | RuntimeCall::Utility(..) |
+						RuntimeCall::Session(..) |
+						RuntimeCall::Utility(..) |
 						RuntimeCall::FastUnstake(..) |
 						RuntimeCall::VoterList(..) |
 						RuntimeCall::NominationPools(..)
@@ -2761,49 +2762,3 @@ sp_api::impl_runtime_apis! {
 		}
 	}
 }
-
-mod clean_state_migration {
-	use super::Runtime;
-	#[cfg(feature = "try-runtime")]
-	use super::Vec;
-	use frame_support::{pallet_prelude::*, storage_alias, traits::OnRuntimeUpgrade};
-	use pallet_state_trie_migration::MigrationLimits;
-
-	#[storage_alias]
-	type AutoLimits = StorageValue<StateTrieMigration, Option<MigrationLimits>, ValueQuery>;
-
-	// Actual type of value is `MigrationTask<T>`, putting a dummy
-	// one to avoid the trait constraint on T.
-	// Since we only use `kill` it is fine.
-	#[storage_alias]
-	type MigrationProcess = StorageValue<StateTrieMigration, u32, ValueQuery>;
-
-	#[storage_alias]
-	type SignedMigrationMaxLimits = StorageValue<StateTrieMigration, MigrationLimits, OptionQuery>;
-
-	/// Initialize an automatic migration process.
-	pub struct CleanMigrate;
-
-	impl OnRuntimeUpgrade for CleanMigrate {
-		#[cfg(feature = "try-runtime")]
-		fn pre_upgrade() -> Result<Vec<u8>, sp_runtime::TryRuntimeError> {
-			Ok(Default::default())
-		}
-
-		fn on_runtime_upgrade() -> frame_support::weights::Weight {
-			MigrationProcess::kill();
-			AutoLimits::kill();
-			SignedMigrationMaxLimits::kill();
-			<Runtime as frame_system::Config>::DbWeight::get().writes(3)
-		}
-
-		#[cfg(feature = "try-runtime")]
-		fn post_upgrade(_state: Vec<u8>) -> Result<(), sp_runtime::TryRuntimeError> {
-			frame_support::ensure!(
-				!AutoLimits::exists() && !SignedMigrationMaxLimits::exists(),
-				"State migration clean.",
-			);
-			Ok(())
-		}
-	}
-}
diff --git a/polkadot/runtime/westend/src/weights/mod.rs b/polkadot/runtime/westend/src/weights/mod.rs
index 1e7b01bc472..ae11f6ccba4 100644
--- a/polkadot/runtime/westend/src/weights/mod.rs
+++ b/polkadot/runtime/westend/src/weights/mod.rs
@@ -33,7 +33,6 @@ pub mod pallet_nomination_pools;
 pub mod pallet_parameters;
 pub mod pallet_preimage;
 pub mod pallet_proxy;
-pub mod pallet_referenda_fellowship_referenda;
 pub mod pallet_referenda_referenda;
 pub mod pallet_scheduler;
 pub mod pallet_session;
diff --git a/polkadot/runtime/westend/src/weights/pallet_referenda_fellowship_referenda.rs b/polkadot/runtime/westend/src/weights/pallet_referenda_fellowship_referenda.rs
deleted file mode 100644
index a4ac0667911..00000000000
--- a/polkadot/runtime/westend/src/weights/pallet_referenda_fellowship_referenda.rs
+++ /dev/null
@@ -1,525 +0,0 @@
-// Copyright (C) Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// Polkadot is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Autogenerated weights for `pallet_referenda`
-//!
-//! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 4.0.0-dev
-//! DATE: 2023-06-19, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
-//! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `runner-e8ezs4ez-project-163-concurrent-0`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
-//! EXECUTION: Some(Wasm), WASM-EXECUTION: Compiled, CHAIN: Some("kusama-dev"), DB CACHE: 1024
-
-// Executed Command:
-// ./target/production/polkadot
-// benchmark
-// pallet
-// --chain=kusama-dev
-// --steps=50
-// --repeat=20
-// --no-storage-info
-// --no-median-slopes
-// --no-min-squares
-// --pallet=pallet_referenda
-// --extrinsic=*
-// --execution=wasm
-// --wasm-execution=compiled
-// --header=./file_header.txt
-// --output=./runtime/kusama/src/weights/
-
-#![cfg_attr(rustfmt, rustfmt_skip)]
-#![allow(unused_parens)]
-#![allow(unused_imports)]
-#![allow(missing_docs)]
-
-use frame_support::{traits::Get, weights::Weight};
-use core::marker::PhantomData;
-
-/// Weight functions for `pallet_referenda`.
-pub struct WeightInfo<T>(PhantomData<T>);
-impl<T: frame_system::Config> pallet_referenda::WeightInfo for WeightInfo<T> {
-	/// Storage: FellowshipCollective Members (r:1 w:0)
-	/// Proof: FellowshipCollective Members (max_values: None, max_size: Some(42), added: 2517, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda ReferendumCount (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumCount (max_values: Some(1), max_size: Some(4), added: 499, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:0 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	fn submit() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `327`
-		//  Estimated: `42428`
-		// Minimum execution time: 28_969_000 picoseconds.
-		Weight::from_parts(30_902_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn place_decision_deposit_preparing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `404`
-		//  Estimated: `83866`
-		// Minimum execution time: 53_500_000 picoseconds.
-		Weight::from_parts(54_447_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:0)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn place_decision_deposit_queued() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `2042`
-		//  Estimated: `42428`
-		// Minimum execution time: 114_321_000 picoseconds.
-		Weight::from_parts(122_607_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:0)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn place_decision_deposit_not_queued() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `2083`
-		//  Estimated: `42428`
-		// Minimum execution time: 113_476_000 picoseconds.
-		Weight::from_parts(120_078_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:1)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn place_decision_deposit_passing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `774`
-		//  Estimated: `83866`
-		// Minimum execution time: 194_798_000 picoseconds.
-		Weight::from_parts(208_378_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(4))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:1)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn place_decision_deposit_failing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `639`
-		//  Estimated: `83866`
-		// Minimum execution time: 69_502_000 picoseconds.
-		Weight::from_parts(71_500_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(4))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	fn refund_decision_deposit() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `317`
-		//  Estimated: `4365`
-		// Minimum execution time: 30_561_000 picoseconds.
-		Weight::from_parts(31_427_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	fn refund_submission_deposit() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `167`
-		//  Estimated: `4365`
-		// Minimum execution time: 14_535_000 picoseconds.
-		Weight::from_parts(14_999_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn cancel() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `349`
-		//  Estimated: `83866`
-		// Minimum execution time: 38_532_000 picoseconds.
-		Weight::from_parts(39_361_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda MetadataOf (r:1 w:0)
-	/// Proof: FellowshipReferenda MetadataOf (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen)
-	fn kill() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `450`
-		//  Estimated: `83866`
-		// Minimum execution time: 78_956_000 picoseconds.
-		Weight::from_parts(80_594_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:0)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:1)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	fn one_fewer_deciding_queue_empty() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `140`
-		//  Estimated: `4277`
-		// Minimum execution time: 9_450_000 picoseconds.
-		Weight::from_parts(9_881_000, 0)
-			.saturating_add(Weight::from_parts(0, 4277))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn one_fewer_deciding_failing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `2376`
-		//  Estimated: `42428`
-		// Minimum execution time: 98_126_000 picoseconds.
-		Weight::from_parts(102_511_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn one_fewer_deciding_passing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `2362`
-		//  Estimated: `42428`
-		// Minimum execution time: 99_398_000 picoseconds.
-		Weight::from_parts(104_045_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:0)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	fn nudge_referendum_requeued_insertion() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1807`
-		//  Estimated: `4365`
-		// Minimum execution time: 43_734_000 picoseconds.
-		Weight::from_parts(46_962_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:0)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	fn nudge_referendum_requeued_slide() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1774`
-		//  Estimated: `4365`
-		// Minimum execution time: 42_863_000 picoseconds.
-		Weight::from_parts(46_241_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:0)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	fn nudge_referendum_queued() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1790`
-		//  Estimated: `4365`
-		// Minimum execution time: 57_511_000 picoseconds.
-		Weight::from_parts(64_027_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:0)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda TrackQueue (r:1 w:1)
-	/// Proof: FellowshipReferenda TrackQueue (max_values: None, max_size: Some(812), added: 3287, mode: MaxEncodedLen)
-	fn nudge_referendum_not_queued() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1831`
-		//  Estimated: `4365`
-		// Minimum execution time: 56_726_000 picoseconds.
-		Weight::from_parts(61_962_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_no_deposit() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `301`
-		//  Estimated: `42428`
-		// Minimum execution time: 24_870_000 picoseconds.
-		Weight::from_parts(25_837_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_preparing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `349`
-		//  Estimated: `42428`
-		// Minimum execution time: 25_297_000 picoseconds.
-		Weight::from_parts(26_086_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	fn nudge_referendum_timed_out() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `208`
-		//  Estimated: `4365`
-		// Minimum execution time: 16_776_000 picoseconds.
-		Weight::from_parts(17_396_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(1))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:1)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_begin_deciding_failing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `584`
-		//  Estimated: `42428`
-		// Minimum execution time: 37_780_000 picoseconds.
-		Weight::from_parts(38_626_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda DecidingCount (r:1 w:1)
-	/// Proof: FellowshipReferenda DecidingCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_begin_deciding_passing() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `719`
-		//  Estimated: `42428`
-		// Minimum execution time: 85_265_000 picoseconds.
-		Weight::from_parts(89_986_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(4))
-			.saturating_add(T::DbWeight::get().writes(3))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_begin_confirming() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `770`
-		//  Estimated: `42428`
-		// Minimum execution time: 143_283_000 picoseconds.
-		Weight::from_parts(158_540_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_end_confirming() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `755`
-		//  Estimated: `42428`
-		// Minimum execution time: 143_736_000 picoseconds.
-		Weight::from_parts(162_755_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_continue_not_confirming() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `770`
-		//  Estimated: `42428`
-		// Minimum execution time: 139_021_000 picoseconds.
-		Weight::from_parts(157_398_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_continue_confirming() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `776`
-		//  Estimated: `42428`
-		// Minimum execution time: 78_530_000 picoseconds.
-		Weight::from_parts(83_556_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:2 w:2)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	/// Storage: Scheduler Lookup (r:1 w:1)
-	/// Proof: Scheduler Lookup (max_values: None, max_size: Some(48), added: 2523, mode: MaxEncodedLen)
-	fn nudge_referendum_approved() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `776`
-		//  Estimated: `83866`
-		// Minimum execution time: 174_165_000 picoseconds.
-		Weight::from_parts(188_496_000, 0)
-			.saturating_add(Weight::from_parts(0, 83866))
-			.saturating_add(T::DbWeight::get().reads(5))
-			.saturating_add(T::DbWeight::get().writes(4))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:1)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipCollective MemberCount (r:1 w:0)
-	/// Proof: FellowshipCollective MemberCount (max_values: None, max_size: Some(14), added: 2489, mode: MaxEncodedLen)
-	/// Storage: Scheduler Agenda (r:1 w:1)
-	/// Proof: Scheduler Agenda (max_values: None, max_size: Some(38963), added: 41438, mode: MaxEncodedLen)
-	fn nudge_referendum_rejected() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `772`
-		//  Estimated: `42428`
-		// Minimum execution time: 142_964_000 picoseconds.
-		Weight::from_parts(157_257_000, 0)
-			.saturating_add(Weight::from_parts(0, 42428))
-			.saturating_add(T::DbWeight::get().reads(3))
-			.saturating_add(T::DbWeight::get().writes(2))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:0)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: Preimage StatusFor (r:1 w:0)
-	/// Proof: Preimage StatusFor (max_values: None, max_size: Some(91), added: 2566, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda MetadataOf (r:0 w:1)
-	/// Proof: FellowshipReferenda MetadataOf (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen)
-	fn set_some_metadata() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `352`
-		//  Estimated: `4365`
-		// Minimum execution time: 20_126_000 picoseconds.
-		Weight::from_parts(20_635_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-	/// Storage: FellowshipReferenda ReferendumInfoFor (r:1 w:0)
-	/// Proof: FellowshipReferenda ReferendumInfoFor (max_values: None, max_size: Some(900), added: 3375, mode: MaxEncodedLen)
-	/// Storage: FellowshipReferenda MetadataOf (r:1 w:1)
-	/// Proof: FellowshipReferenda MetadataOf (max_values: None, max_size: Some(52), added: 2527, mode: MaxEncodedLen)
-	fn clear_metadata() -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `285`
-		//  Estimated: `4365`
-		// Minimum execution time: 17_716_000 picoseconds.
-		Weight::from_parts(18_324_000, 0)
-			.saturating_add(Weight::from_parts(0, 4365))
-			.saturating_add(T::DbWeight::get().reads(2))
-			.saturating_add(T::DbWeight::get().writes(1))
-	}
-}
diff --git a/polkadot/scripts/list-syscalls/execute-worker-syscalls b/polkadot/scripts/list-syscalls/execute-worker-syscalls
index 349af783cf1..4b22f678786 100644
--- a/polkadot/scripts/list-syscalls/execute-worker-syscalls
+++ b/polkadot/scripts/list-syscalls/execute-worker-syscalls
@@ -20,6 +20,7 @@
 24 (sched_yield)
 25 (mremap)
 28 (madvise)
+34 (pause)
 39 (getpid)
 41 (socket)
 42 (connect)
diff --git a/polkadot/scripts/list-syscalls/prepare-worker-syscalls b/polkadot/scripts/list-syscalls/prepare-worker-syscalls
index 05281b61591..fd46a788537 100644
--- a/polkadot/scripts/list-syscalls/prepare-worker-syscalls
+++ b/polkadot/scripts/list-syscalls/prepare-worker-syscalls
@@ -20,6 +20,7 @@
 24 (sched_yield)
 25 (mremap)
 28 (madvise)
+34 (pause)
 39 (getpid)
 41 (socket)
 42 (connect)
diff --git a/polkadot/statement-table/src/generic.rs b/polkadot/statement-table/src/generic.rs
index 1e90338a0f1..e3c470fcdee 100644
--- a/polkadot/statement-table/src/generic.rs
+++ b/polkadot/statement-table/src/generic.rs
@@ -245,7 +245,8 @@ impl<Ctx: Context> CandidateData<Ctx> {
 	pub fn attested(
 		&self,
 		validity_threshold: usize,
-	) -> Option<AttestedCandidate<Ctx::GroupId, Ctx::Candidate, Ctx::AuthorityId, Ctx::Signature>> {
+	) -> Option<AttestedCandidate<Ctx::GroupId, Ctx::Candidate, Ctx::AuthorityId, Ctx::Signature>>
+	{
 		let valid_votes = self.validity_votes.len();
 		if valid_votes < validity_threshold {
 			return None
@@ -321,7 +322,8 @@ impl<Ctx: Context> Table<Ctx> {
 		digest: &Ctx::Digest,
 		context: &Ctx,
 		minimum_backing_votes: u32,
-	) -> Option<AttestedCandidate<Ctx::GroupId, Ctx::Candidate, Ctx::AuthorityId, Ctx::Signature>> {
+	) -> Option<AttestedCandidate<Ctx::GroupId, Ctx::Candidate, Ctx::AuthorityId, Ctx::Signature>>
+	{
 		self.candidate_votes.get(digest).and_then(|data| {
 			let v_threshold = context.get_group_size(&data.group_id).map_or(usize::MAX, |len| {
 				effective_minimum_backing_votes(len, minimum_backing_votes)
diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs
index 99f17693093..7cb230f6e00 100644
--- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs
+++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/parachain/xcm_config.rs
@@ -152,7 +152,7 @@ impl pallet_xcm::Config for Runtime {
 	// We turn off sending for these tests
 	type SendXcmOrigin = EnsureXcmOrigin<RuntimeOrigin, ()>;
 	type XcmRouter = super::super::network::ParachainXcmRouter<MessageQueue>; // Provided by xcm-simulator
-																		  // Anyone can execute XCM programs
+																		   // Anyone can execute XCM programs
 	type ExecuteXcmOrigin = EnsureXcmOrigin<RuntimeOrigin, LocalOriginToLocation>;
 	// We execute any type of program
 	type XcmExecuteFilter = Everything;
diff --git a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs
index 987bb3f9ab6..a31e664d821 100644
--- a/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs
+++ b/polkadot/xcm/docs/src/cookbook/relay_token_transactor/relay_chain/xcm_config.rs
@@ -125,7 +125,7 @@ impl pallet_xcm::Config for Runtime {
 	// No one can call `send`
 	type SendXcmOrigin = EnsureXcmOrigin<RuntimeOrigin, ()>;
 	type XcmRouter = super::super::network::RelayChainXcmRouter; // Provided by xcm-simulator
-															 // Anyone can execute XCM programs
+															  // Anyone can execute XCM programs
 	type ExecuteXcmOrigin = EnsureXcmOrigin<RuntimeOrigin, LocalOriginToLocation>;
 	// We execute any type of program
 	type XcmExecuteFilter = Everything;
diff --git a/polkadot/xcm/pallet-xcm-benchmarks/src/lib.rs b/polkadot/xcm/pallet-xcm-benchmarks/src/lib.rs
index 4a12bb7f47c..210b8f65637 100644
--- a/polkadot/xcm/pallet-xcm-benchmarks/src/lib.rs
+++ b/polkadot/xcm/pallet-xcm-benchmarks/src/lib.rs
@@ -72,7 +72,7 @@ pub fn generate_holding_assets(max_assets: u32) -> Assets {
 	let fungibles_amount: u128 = 100;
 	let holding_fungibles = max_assets / 2;
 	let holding_non_fungibles = max_assets - holding_fungibles - 1; // -1 because of adding `Here` asset
-																// add count of `holding_fungibles`
+																 // add count of `holding_fungibles`
 	(0..holding_fungibles)
 		.map(|i| {
 			Asset {
diff --git a/polkadot/xcm/procedural/tests/ui.rs b/polkadot/xcm/procedural/tests/ui.rs
index b3469b520eb..4d0c8af4500 100644
--- a/polkadot/xcm/procedural/tests/ui.rs
+++ b/polkadot/xcm/procedural/tests/ui.rs
@@ -16,7 +16,6 @@
 
 //! UI tests for XCM procedural macros
 
-#[cfg(not(feature = "disable-ui-tests"))]
 #[test]
 fn ui() {
 	// Only run the ui tests when `RUN_UI_TESTS` is set.
diff --git a/polkadot/xcm/xcm-builder/src/asset_conversion.rs b/polkadot/xcm/xcm-builder/src/asset_conversion.rs
index 16ae05c2079..6d090b04886 100644
--- a/polkadot/xcm/xcm-builder/src/asset_conversion.rs
+++ b/polkadot/xcm/xcm-builder/src/asset_conversion.rs
@@ -137,7 +137,13 @@ impl<
 		ConvertClassId: MaybeEquivalence<Location, ClassId>,
 		ConvertInstanceId: MaybeEquivalence<AssetInstance, InstanceId>,
 	> MatchesNonFungibles<ClassId, InstanceId>
-	for MatchedConvertedConcreteId<ClassId, InstanceId, MatchClassId, ConvertClassId, ConvertInstanceId>
+	for MatchedConvertedConcreteId<
+		ClassId,
+		InstanceId,
+		MatchClassId,
+		ConvertClassId,
+		ConvertInstanceId,
+	>
 {
 	fn matches_nonfungibles(a: &Asset) -> result::Result<(ClassId, InstanceId), MatchError> {
 		let (instance, class) = match (&a.fun, &a.id) {
diff --git a/polkadot/xcm/xcm-builder/src/nonfungibles_adapter.rs b/polkadot/xcm/xcm-builder/src/nonfungibles_adapter.rs
index b111a05a4f1..006c28954bc 100644
--- a/polkadot/xcm/xcm-builder/src/nonfungibles_adapter.rs
+++ b/polkadot/xcm/xcm-builder/src/nonfungibles_adapter.rs
@@ -270,7 +270,14 @@ impl<
 		CheckAsset: AssetChecking<Assets::CollectionId>,
 		CheckingAccount: Get<Option<AccountId>>,
 	> TransactAsset
-	for NonFungiblesAdapter<Assets, Matcher, AccountIdConverter, AccountId, CheckAsset, CheckingAccount>
+	for NonFungiblesAdapter<
+		Assets,
+		Matcher,
+		AccountIdConverter,
+		AccountId,
+		CheckAsset,
+		CheckingAccount,
+	>
 {
 	fn can_check_in(origin: &Location, what: &Asset, context: &XcmContext) -> XcmResult {
 		NonFungiblesMutateAdapter::<
diff --git a/polkadot/xcm/xcm-executor/src/traits/weight.rs b/polkadot/xcm/xcm-executor/src/traits/weight.rs
index 72de3e0f433..61545c33062 100644
--- a/polkadot/xcm/xcm-executor/src/traits/weight.rs
+++ b/polkadot/xcm/xcm-executor/src/traits/weight.rs
@@ -29,13 +29,6 @@ pub trait WeightBounds<RuntimeCall> {
 	fn instr_weight(instruction: &Instruction<RuntimeCall>) -> Result<Weight, ()>;
 }
 
-/// A means of getting approximate weight consumption for a given destination message executor and a
-/// message.
-pub trait UniversalWeigher {
-	/// Get the upper limit of weight required for `dest` to execute `message`.
-	fn weigh(dest: impl Into<Location>, message: Xcm<()>) -> Result<Weight, ()>;
-}
-
 /// Charge for weight in order to execute XCM.
 ///
 /// A `WeightTrader` may also be put into a tuple, in which case the default behavior of
diff --git a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs
index c51a4a5376a..f0a70b0dacf 100644
--- a/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs
+++ b/polkadot/xcm/xcm-runtime-apis/src/dry_run.rs
@@ -57,7 +57,12 @@ sp_api::decl_runtime_apis! {
 	/// Calls or XCMs might fail when executed, this doesn't mean the result of these calls will be an `Err`.
 	/// In those cases, there might still be a valid result, with the execution error inside it.
 	/// The only reasons why these calls might return an error are listed in the [`Error`] enum.
-	pub trait DryRunApi<Call: Encode, Event: Decode, OriginCaller: Encode> {
+	pub trait DryRunApi<Call, Event, OriginCaller>
+	where
+		Call: Encode,
+		Event: Decode,
+		OriginCaller: Encode
+	{
 		/// Dry run call.
 		fn dry_run_call(origin: OriginCaller, call: Call) -> Result<CallDryRunEffects<Event>, Error>;
 
diff --git a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs
index 889a50a2bab..2d14b4e571c 100644
--- a/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs
+++ b/polkadot/xcm/xcm-runtime-apis/tests/fee_estimation.rs
@@ -197,7 +197,7 @@ fn fee_estimation_for_teleport() {
 fn dry_run_reserve_asset_transfer() {
 	sp_tracing::init_for_tests();
 	let who = 1; // AccountId = u64.
-			 // Native token used for fees.
+			  // Native token used for fees.
 	let balances = vec![(who, DeliveryFees::get() + ExistentialDeposit::get())];
 	// Relay token is the one we want to transfer.
 	let assets = vec![(1, who, 100)]; // id, account_id, balance.
diff --git a/prdoc/pr_4851.prdoc b/prdoc/pr_4851.prdoc
index 923ca4bfff5..2110a68d401 100644
--- a/prdoc/pr_4851.prdoc
+++ b/prdoc/pr_4851.prdoc
@@ -5,8 +5,8 @@ title: Add support for deprecation metadata in `RuntimeMetadataIr` entries.
 
 doc:
   - audience: 
-      - Runtime dev
-      - Runtime user
+      - Runtime Dev
+      - Runtime User
     description: |
       Changes introduced are listed below.
       Adds `DeprecationStatusIR` enum to sp_metadata_ir.
diff --git a/prdoc/pr_5676.prdoc b/prdoc/pr_5676.prdoc
new file mode 100644
index 00000000000..dfe23e120b4
--- /dev/null
+++ b/prdoc/pr_5676.prdoc
@@ -0,0 +1,174 @@
+title: '[ci] Update CI image with rust 1.81.0 and 2024-09-11'
+doc:
+- audience: [Runtime Dev, Node Dev, Node Operator]
+  description: |-
+    cc https://github.com/paritytech/ci_cd/issues/1035
+
+    close https://github.com/paritytech/ci_cd/issues/1023
+crates:
+- name: pallet-xcm-bridge-hub
+  bump: patch
+- name: snowbridge-router-primitives
+  bump: patch
+- name: snowbridge-runtime-common
+  bump: patch
+- name: cumulus-pallet-parachain-system
+  bump: patch
+- name: asset-hub-rococo-runtime
+  bump: patch
+- name: asset-hub-westend-runtime
+  bump: patch
+- name: asset-test-utils
+  bump: patch
+- name: bridge-hub-test-utils
+  bump: patch
+- name: cumulus-primitives-utility
+  bump: patch
+- name: polkadot-node-core-approval-voting
+  bump: patch
+- name: polkadot-node-core-pvf-common
+  bump: patch
+- name: polkadot-approval-distribution
+  bump: patch
+- name: polkadot-availability-recovery
+  bump: patch
+- name: polkadot-node-subsystem-types
+  bump: patch
+- name: polkadot-runtime-parachains
+  bump: patch
+- name: westend-runtime
+  bump: patch
+- name: polkadot-statement-table
+  bump: patch
+- name: pallet-xcm-benchmarks
+  bump: patch
+- name: staging-xcm-builder
+  bump: patch
+- name: xcm-runtime-apis
+  bump: patch
+- name: sc-cli
+  bump: patch
+- name: sc-consensus-grandpa
+  bump: patch
+- name: sc-network
+  bump: patch
+- name: sc-network-sync
+  bump: patch
+- name: sc-rpc-spec-v2
+  bump: patch
+- name: pallet-bags-list
+  bump: patch
+- name: pallet-balances
+  bump: patch
+- name: pallet-bounties
+  bump: patch
+- name: pallet-child-bounties
+  bump: patch
+- name: pallet-nis
+  bump: patch
+- name: pallet-referenda
+  bump: patch
+- name: pallet-revive-proc-macro
+  bump: patch
+- name: pallet-society
+  bump: patch
+- name: pallet-staking
+  bump: patch
+- name: frame-support-procedural
+  bump: patch
+- name: frame-support
+  bump: patch
+- name: pallet-transaction-payment
+  bump: patch
+- name: pallet-utility
+  bump: patch
+- name: pallet-vesting
+  bump: patch
+- name: substrate-wasm-builder
+  bump: patch
+- name: snowbridge-outbound-queue-merkle-tree
+  bump: patch
+- name: shell-runtime
+  bump: patch
+- name: polkadot-parachain-lib
+  bump: patch
+- name: polkadot-cli
+  bump: patch
+- name: polkadot-node-core-pvf
+  bump: patch
+- name: polkadot-service
+  bump: patch
+- name: polkadot-primitives
+  bump: patch
+- name: staging-xcm-executor
+  bump: patch
+- name: sc-consensus-beefy
+  bump: patch
+- name: sc-consensus-slots
+  bump: patch
+- name: frame-benchmarking-pallet-pov
+  bump: patch
+- name: pallet-contracts
+  bump: patch
+- name: frame-election-provider-support
+  bump: patch
+- name: pallet-revive-mock-network
+  bump: patch
+- name: frame-benchmarking-cli
+  bump: patch
+- name: sc-utils
+  bump: patch
+- name: pallet-beefy-mmr
+  bump: patch
+- name: sp-state-machine
+  bump: patch
+- name: fork-tree
+  bump: patch
+- name: sc-transaction-pool
+  bump: patch
+- name: pallet-delegated-staking
+  bump: patch
+- name: sc-executor-wasmtime
+  bump: patch
+- name: cumulus-pallet-xcmp-queue
+  bump: patch
+- name: xcm-procedural
+  bump: patch
+- name: sp-application-crypto
+  bump: patch
+- name: sp-core
+  bump: patch
+- name: sp-keyring
+  bump: patch
+- name: polkadot-availability-distribution
+  bump: patch
+- name: sp-runtime
+  bump: patch
+- name: sc-authority-discovery
+  bump: patch
+- name: frame-system
+  bump: patch
+- name: sc-network-gossip
+  bump: patch
+- name: pallet-authorship
+  bump: patch
+- name: pallet-election-provider-multi-phase
+  bump: patch
+- name: sp-runtime-interface
+  bump: patch
+- name: pallet-bridge-grandpa
+  bump: patch
+- name: pallet-elections-phragmen
+  bump: patch
+- name: frame-executive
+  bump: patch
+- name: bp-header-chain
+  bump: patch
+- name: polkadot-overseer
+  bump: patch
+- name: polkadot
+  bump: patch
+- name: bridge-hub-westend-runtime
+  bump: major
+- name: bp-messages
+  bump: patch
diff --git a/prdoc/pr_5678.prdoc b/prdoc/pr_5678.prdoc
index af1fac31c56..ebb5e5a0d79 100644
--- a/prdoc/pr_5678.prdoc
+++ b/prdoc/pr_5678.prdoc
@@ -1,6 +1,6 @@
 title: 'rpc server: fix deny unsafe on RpcMethods::Auto'
 doc:
-- audience: Node User
+- audience: Node Operator
   description: |-
     Close #5677
 
diff --git a/prdoc/pr_5684.prdoc b/prdoc/pr_5684.prdoc
index a17bacd2fb9..9800c85de2a 100644
--- a/prdoc/pr_5684.prdoc
+++ b/prdoc/pr_5684.prdoc
@@ -4,7 +4,7 @@
 title: "[pallet-revive]"
 
 doc:
-  - audience: Runtime Devs
+  - audience: Runtime Dev
     description: |
       Update xcm runtime api, and fix pallet-revive xcm tests
 
diff --git a/scripts/update-ui-tests.sh b/scripts/update-ui-tests.sh
index a1f380c4712..c25b22fa7f7 100755
--- a/scripts/update-ui-tests.sh
+++ b/scripts/update-ui-tests.sh
@@ -32,10 +32,12 @@ export RUN_UI_TESTS=1
 export SKIP_WASM_BUILD=1
 # Let trybuild overwrite the .stderr files
 export TRYBUILD=overwrite
+# Warnings are part of our UI and the CI also sets this.
+export RUSTFLAGS="-C debug-assertions -D warnings"
 
 # ./substrate
-$RUSTUP_RUN cargo test --manifest-path substrate/primitives/runtime-interface/Cargo.toml ui
-$RUSTUP_RUN cargo test -p sp-api-test ui
-$RUSTUP_RUN cargo test -p frame-election-provider-solution-type ui
-$RUSTUP_RUN cargo test -p frame-support-test --features=no-metadata-docs,try-runtime,experimental ui
-$RUSTUP_RUN cargo test -p xcm-procedural ui
\ No newline at end of file
+$RUSTUP_RUN cargo test -q --locked --manifest-path substrate/primitives/runtime-interface/Cargo.toml ui
+$RUSTUP_RUN cargo test -q --locked -p sp-api-test ui
+$RUSTUP_RUN cargo test -q --locked -p frame-election-provider-solution-type ui
+$RUSTUP_RUN cargo test -q --locked -p frame-support-test --features=no-metadata-docs,try-runtime,experimental ui
+$RUSTUP_RUN cargo test -q --locked -p xcm-procedural ui
diff --git a/substrate/bin/node/cli/tests/fees.rs b/substrate/bin/node/cli/tests/fees.rs
index 9f82338b4fb..b49af4c1055 100644
--- a/substrate/bin/node/cli/tests/fees.rs
+++ b/substrate/bin/node/cli/tests/fees.rs
@@ -188,135 +188,3 @@ fn transaction_fee_is_correct() {
 		assert_eq!(Balances::total_balance(&alice()), balance_alice);
 	});
 }
-
-#[test]
-#[should_panic]
-#[cfg(feature = "stress-test")]
-fn block_weight_capacity_report() {
-	// Just report how many transfer calls you could fit into a block. The number should at least
-	// be a few hundred (250 at the time of writing but can change over time). Runs until panic.
-	use node_primitives::Nonce;
-
-	// execution ext.
-	let mut t = new_test_ext(compact_code_unwrap());
-	// setup ext.
-	let mut tt = new_test_ext(compact_code_unwrap());
-
-	let factor = 50;
-	let mut time = 10;
-	let mut nonce: Nonce = 0;
-	let mut block_number = 1;
-	let mut previous_hash: node_primitives::Hash = GENESIS_HASH.into();
-
-	loop {
-		let num_transfers = block_number * factor;
-		let mut xts = (0..num_transfers)
-			.map(|i| CheckedExtrinsic {
-				signed: Some((charlie(), signed_extra(nonce + i as Nonce, 0))),
-				function: RuntimeCall::Balances(pallet_balances::Call::transfer_allow_death {
-					dest: bob().into(),
-					value: 0,
-				}),
-			})
-			.collect::<Vec<CheckedExtrinsic>>();
-
-		xts.insert(
-			0,
-			CheckedExtrinsic {
-				signed: None,
-				function: RuntimeCall::Timestamp(pallet_timestamp::Call::set { now: time * 1000 }),
-			},
-		);
-
-		// NOTE: this is super slow. Can probably be improved.
-		let block = construct_block(
-			&mut tt,
-			block_number,
-			previous_hash,
-			xts,
-			(time * 1000 / SLOT_DURATION).into(),
-		);
-
-		let len = block.0.len();
-		print!(
-			"++ Executing block with {} transfers. Block size = {} bytes / {} kb / {} mb",
-			num_transfers,
-			len,
-			len / 1024,
-			len / 1024 / 1024,
-		);
-
-		let r = executor_call(&mut t, "Core_execute_block", &block.0).0;
-
-		println!(" || Result = {:?}", r);
-		assert!(r.is_ok());
-
-		previous_hash = block.1;
-		nonce += num_transfers;
-		time += 10;
-		block_number += 1;
-	}
-}
-
-#[test]
-#[should_panic]
-#[cfg(feature = "stress-test")]
-fn block_length_capacity_report() {
-	// Just report how big a block can get. Executes until panic. Should be ignored unless if
-	// manually inspected. The number should at least be a few megabytes (5 at the time of
-	// writing but can change over time).
-	use node_primitives::Nonce;
-
-	// execution ext.
-	let mut t = new_test_ext(compact_code_unwrap());
-	// setup ext.
-	let mut tt = new_test_ext(compact_code_unwrap());
-
-	let factor = 256 * 1024;
-	let mut time = 10;
-	let mut nonce: Nonce = 0;
-	let mut block_number = 1;
-	let mut previous_hash: node_primitives::Hash = GENESIS_HASH.into();
-
-	loop {
-		// NOTE: this is super slow. Can probably be improved.
-		let block = construct_block(
-			&mut tt,
-			block_number,
-			previous_hash,
-			vec![
-				CheckedExtrinsic {
-					signed: None,
-					function: RuntimeCall::Timestamp(pallet_timestamp::Call::set {
-						now: time * 1000,
-					}),
-				},
-				CheckedExtrinsic {
-					signed: Some((charlie(), signed_extra(nonce, 0))),
-					function: RuntimeCall::System(frame_system::Call::remark {
-						remark: vec![0u8; (block_number * factor) as usize],
-					}),
-				},
-			],
-			(time * 1000 / SLOT_DURATION).into(),
-		);
-
-		let len = block.0.len();
-		print!(
-			"++ Executing block with big remark. Block size = {} bytes / {} kb / {} mb",
-			len,
-			len / 1024,
-			len / 1024 / 1024,
-		);
-
-		let r = executor_call(&mut t, "Core_execute_block", &block.0).0;
-
-		println!(" || Result = {:?}", r);
-		assert!(r.is_ok());
-
-		previous_hash = block.1;
-		nonce += 1;
-		time += 10;
-		block_number += 1;
-	}
-}
diff --git a/substrate/client/authority-discovery/src/worker/tests.rs b/substrate/client/authority-discovery/src/worker/tests.rs
index b49615382b8..d71a85db8b8 100644
--- a/substrate/client/authority-discovery/src/worker/tests.rs
+++ b/substrate/client/authority-discovery/src/worker/tests.rs
@@ -117,10 +117,10 @@ sp_api::mock_impl_runtime_apis! {
 
 #[derive(Debug)]
 pub enum TestNetworkEvent {
-	GetCalled(KademliaKey),
-	PutCalled(KademliaKey, Vec<u8>),
-	PutToCalled(Record, HashSet<sc_network_types::PeerId>, bool),
-	StoreRecordCalled(KademliaKey, Vec<u8>, Option<sc_network_types::PeerId>, Option<Instant>),
+	GetCalled,
+	PutCalled,
+	PutToCalled,
+	StoreRecordCalled,
 }
 
 pub struct TestNetwork {
@@ -190,17 +190,11 @@ impl NetworkSigner for TestNetwork {
 impl NetworkDHTProvider for TestNetwork {
 	fn put_value(&self, key: KademliaKey, value: Vec<u8>) {
 		self.put_value_call.lock().unwrap().push((key.clone(), value.clone()));
-		self.event_sender
-			.clone()
-			.unbounded_send(TestNetworkEvent::PutCalled(key, value))
-			.unwrap();
+		self.event_sender.clone().unbounded_send(TestNetworkEvent::PutCalled).unwrap();
 	}
 	fn get_value(&self, key: &KademliaKey) {
 		self.get_value_call.lock().unwrap().push(key.clone());
-		self.event_sender
-			.clone()
-			.unbounded_send(TestNetworkEvent::GetCalled(key.clone()))
-			.unwrap();
+		self.event_sender.clone().unbounded_send(TestNetworkEvent::GetCalled).unwrap();
 	}
 
 	fn put_record_to(
@@ -214,10 +208,7 @@ impl NetworkDHTProvider for TestNetwork {
 			peers.clone(),
 			update_local_storage,
 		));
-		self.event_sender
-			.clone()
-			.unbounded_send(TestNetworkEvent::PutToCalled(record, peers, update_local_storage))
-			.unwrap();
+		self.event_sender.clone().unbounded_send(TestNetworkEvent::PutToCalled).unwrap();
 	}
 
 	fn store_record(
@@ -235,7 +226,7 @@ impl NetworkDHTProvider for TestNetwork {
 		));
 		self.event_sender
 			.clone()
-			.unbounded_send(TestNetworkEvent::StoreRecordCalled(key, value, publisher, expires))
+			.unbounded_send(TestNetworkEvent::StoreRecordCalled)
 			.unwrap();
 	}
 }
@@ -536,7 +527,7 @@ fn dont_stop_polling_dht_event_stream_after_bogus_event() {
 
 	pool.run_until(async {
 		// Assert worker to trigger a lookup for the one and only authority.
-		assert!(matches!(network_events.next().await, Some(TestNetworkEvent::GetCalled(_))));
+		assert!(matches!(network_events.next().await, Some(TestNetworkEvent::GetCalled)));
 
 		// Send an event that should generate an error
 		dht_event_tx
@@ -1137,7 +1128,7 @@ fn lookup_throttling() {
 		async {
 			// Assert worker to trigger MAX_IN_FLIGHT_LOOKUPS lookups.
 			for _ in 0..MAX_IN_FLIGHT_LOOKUPS {
-				assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled(_))));
+				assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled)));
 			}
 			assert_eq!(
 				metrics.requests_pending.get(),
@@ -1168,7 +1159,7 @@ fn lookup_throttling() {
 			}
 
 			// Assert worker to trigger another lookup.
-			assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled(_))));
+			assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled)));
 			assert_eq!(
 				metrics.requests_pending.get(),
 				(remote_public_keys.len() - MAX_IN_FLIGHT_LOOKUPS - 1) as u64
@@ -1181,7 +1172,7 @@ fn lookup_throttling() {
 			dht_event_tx.send(dht_event).await.expect("Channel has capacity of 1.");
 
 			// Assert worker to trigger another lookup.
-			assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled(_))));
+			assert!(matches!(receiver.next().await, Some(TestNetworkEvent::GetCalled)));
 			assert_eq!(
 				metrics.requests_pending.get(),
 				(remote_public_keys.len() - MAX_IN_FLIGHT_LOOKUPS - 2) as u64
diff --git a/substrate/client/cli/src/commands/import_blocks_cmd.rs b/substrate/client/cli/src/commands/import_blocks_cmd.rs
index 815c6ab18aa..6bd607901e3 100644
--- a/substrate/client/cli/src/commands/import_blocks_cmd.rs
+++ b/substrate/client/cli/src/commands/import_blocks_cmd.rs
@@ -28,7 +28,7 @@ use sp_runtime::traits::Block as BlockT;
 use std::{
 	fmt::Debug,
 	fs,
-	io::{self, Read, Seek},
+	io::{self, Read},
 	path::PathBuf,
 	sync::Arc,
 };
@@ -58,11 +58,6 @@ pub struct ImportBlocksCmd {
 	pub import_params: ImportParams,
 }
 
-/// Internal trait used to cast to a dynamic type that implements Read and Seek.
-trait ReadPlusSeek: Read + Seek {}
-
-impl<T: Read + Seek> ReadPlusSeek for T {}
-
 impl ImportBlocksCmd {
 	/// Run the import-blocks command
 	pub async fn run<B, C, IQ>(&self, client: Arc<C>, import_queue: IQ) -> error::Result<()>
diff --git a/substrate/client/cli/src/commands/vanity.rs b/substrate/client/cli/src/commands/vanity.rs
index 330a59493ef..9acacb4b15b 100644
--- a/substrate/client/cli/src/commands/vanity.rs
+++ b/substrate/client/cli/src/commands/vanity.rs
@@ -166,8 +166,6 @@ mod tests {
 		crypto::{default_ss58_version, Ss58AddressFormatRegistry, Ss58Codec},
 		sr25519, Pair,
 	};
-	#[cfg(feature = "bench")]
-	use test::Bencher;
 
 	#[test]
 	fn vanity() {
@@ -225,16 +223,4 @@ mod tests {
 			0
 		);
 	}
-
-	#[cfg(feature = "bench")]
-	#[bench]
-	fn bench_paranoiac(b: &mut Bencher) {
-		b.iter(|| generate_key("polk"));
-	}
-
-	#[cfg(feature = "bench")]
-	#[bench]
-	fn bench_not_paranoiac(b: &mut Bencher) {
-		b.iter(|| generate_key("polk"));
-	}
 }
diff --git a/substrate/client/cli/src/params/node_key_params.rs b/substrate/client/cli/src/params/node_key_params.rs
index cdd63788811..70671bff8c0 100644
--- a/substrate/client/cli/src/params/node_key_params.rs
+++ b/substrate/client/cli/src/params/node_key_params.rs
@@ -116,8 +116,8 @@ impl NodeKeyParams {
 						.clone()
 						.unwrap_or_else(|| net_config_dir.join(NODE_KEY_ED25519_FILE));
 					if !self.unsafe_force_node_key_generation &&
-						role.is_authority() && !is_dev &&
-						!key_path.exists()
+						role.is_authority() &&
+						!is_dev && !key_path.exists()
 					{
 						return Err(Error::NetworkKeyNotFound(key_path))
 					}
diff --git a/substrate/client/consensus/beefy/src/fisherman.rs b/substrate/client/consensus/beefy/src/fisherman.rs
index faa4d34eff5..2b2683b35f0 100644
--- a/substrate/client/consensus/beefy/src/fisherman.rs
+++ b/substrate/client/consensus/beefy/src/fisherman.rs
@@ -32,9 +32,8 @@ use sp_runtime::{
 };
 use std::{marker::PhantomData, sync::Arc};
 
-/// Helper struct containing the id and the key ownership proof for a validator.
-pub struct ProvedValidator<'a, AuthorityId: AuthorityIdBound> {
-	pub id: &'a AuthorityId,
+/// Helper struct containing the key ownership proof for a validator.
+pub struct ProvedValidator {
 	pub key_owner_proof: OpaqueKeyOwnershipProof,
 }
 
@@ -66,7 +65,7 @@ where
 		at: BlockId<B>,
 		offender_ids: impl Iterator<Item = &'a AuthorityId>,
 		validator_set_id: ValidatorSetId,
-	) -> Result<Vec<ProvedValidator<'a, AuthorityId>>, Error> {
+	) -> Result<Vec<ProvedValidator>, Error> {
 		let hash = match at {
 			BlockId::Hash(hash) => hash,
 			BlockId::Number(number) => self
@@ -91,7 +90,7 @@ where
 				offender_id.clone(),
 			) {
 				Ok(Some(key_owner_proof)) => {
-					proved_offenders.push(ProvedValidator { id: offender_id, key_owner_proof });
+					proved_offenders.push(ProvedValidator { key_owner_proof });
 				},
 				Ok(None) => {
 					debug!(
diff --git a/substrate/client/consensus/grandpa/src/aux_schema.rs b/substrate/client/consensus/grandpa/src/aux_schema.rs
index 8ec882591be..c42310dcd72 100644
--- a/substrate/client/consensus/grandpa/src/aux_schema.rs
+++ b/substrate/client/consensus/grandpa/src/aux_schema.rs
@@ -743,7 +743,9 @@ mod test {
 			substrate_test_runtime_client::runtime::Block,
 			_,
 			_,
-		>(&client, H256::random(), 0, || unreachable!())
+		>(
+			&client, H256::random(), 0, || unreachable!()
+		)
 		.unwrap();
 
 		assert_eq!(
diff --git a/substrate/client/consensus/grandpa/src/voting_rule.rs b/substrate/client/consensus/grandpa/src/voting_rule.rs
index c1d3cd2fbd6..6072f1895fd 100644
--- a/substrate/client/consensus/grandpa/src/voting_rule.rs
+++ b/substrate/client/consensus/grandpa/src/voting_rule.rs
@@ -82,7 +82,7 @@ where
 ///
 /// In the best case our vote is exactly N blocks
 /// behind the best block, but if there is a scenario where either
-/// >34% of validators run without this rule or the fork-choice rule
+/// \>34% of validators run without this rule or the fork-choice rule
 /// can prioritize shorter chains over longer ones, the vote may be
 /// closer to the best block than N.
 #[derive(Clone)]
diff --git a/substrate/client/consensus/slots/build.rs b/substrate/client/consensus/slots/build.rs
index a68cb706e8f..c63f0b8b667 100644
--- a/substrate/client/consensus/slots/build.rs
+++ b/substrate/client/consensus/slots/build.rs
@@ -20,6 +20,6 @@ use std::env;
 
 fn main() {
 	if let Ok(profile) = env::var("PROFILE") {
-		println!("cargo:rustc-cfg=build_type=\"{}\"", profile);
+		println!("cargo:rustc-cfg=build_profile=\"{}\"", profile);
 	}
 }
diff --git a/substrate/client/consensus/slots/src/lib.rs b/substrate/client/consensus/slots/src/lib.rs
index 06e0756fc96..4f7e8554177 100644
--- a/substrate/client/consensus/slots/src/lib.rs
+++ b/substrate/client/consensus/slots/src/lib.rs
@@ -227,7 +227,7 @@ pub trait SimpleSlotWorker<B: BlockT> {
 					"⌛️ Discarding proposal for slot {}; block production took too long", slot,
 				);
 				// If the node was compiled with debug, tell the user to use release optimizations.
-				#[cfg(build_type = "debug")]
+				#[cfg(build_profile = "debug")]
 				info!(
 					target: log_target,
 					"👉 Recompile your node in `--release` mode to mitigate this problem.",
diff --git a/substrate/client/executor/wasmtime/build.rs b/substrate/client/executor/wasmtime/build.rs
index a68cb706e8f..c63f0b8b667 100644
--- a/substrate/client/executor/wasmtime/build.rs
+++ b/substrate/client/executor/wasmtime/build.rs
@@ -20,6 +20,6 @@ use std::env;
 
 fn main() {
 	if let Ok(profile) = env::var("PROFILE") {
-		println!("cargo:rustc-cfg=build_type=\"{}\"", profile);
+		println!("cargo:rustc-cfg=build_profile=\"{}\"", profile);
 	}
 }
diff --git a/substrate/client/executor/wasmtime/src/tests.rs b/substrate/client/executor/wasmtime/src/tests.rs
index f86a4275769..abf2b9509c2 100644
--- a/substrate/client/executor/wasmtime/src/tests.rs
+++ b/substrate/client/executor/wasmtime/src/tests.rs
@@ -455,7 +455,7 @@ fn test_max_memory_pages(
 
 // This test takes quite a while to execute in a debug build (over 6 minutes on a TR 3970x)
 // so it's ignored by default unless it was compiled with `--release`.
-#[cfg_attr(build_type = "debug", ignore)]
+#[cfg_attr(build_profile = "debug", ignore)]
 #[test]
 fn test_instances_without_reuse_are_not_leaked() {
 	let runtime = crate::create_runtime::<HostFunctions>(
diff --git a/substrate/client/network-gossip/src/bridge.rs b/substrate/client/network-gossip/src/bridge.rs
index 414da9b2a58..a4bd922a76d 100644
--- a/substrate/client/network-gossip/src/bridge.rs
+++ b/substrate/client/network-gossip/src/bridge.rs
@@ -377,9 +377,6 @@ mod tests {
 	#[derive(Clone, Default)]
 	struct TestNetwork {}
 
-	#[derive(Clone, Default)]
-	struct TestNetworkInner {}
-
 	#[async_trait::async_trait]
 	impl NetworkPeers for TestNetwork {
 		fn set_authorized_peers(&self, _peers: HashSet<PeerId>) {
diff --git a/substrate/client/network/src/behaviour.rs b/substrate/client/network/src/behaviour.rs
index 9a6324dafd3..5ecbec52d50 100644
--- a/substrate/client/network/src/behaviour.rs
+++ b/substrate/client/network/src/behaviour.rs
@@ -76,8 +76,6 @@ pub enum BehaviourOut {
 	///
 	/// This event is generated for statistics purposes.
 	InboundRequest {
-		/// Peer which sent us a request.
-		peer: PeerId,
 		/// Protocol name of the request.
 		protocol: ProtocolName,
 		/// If `Ok`, contains the time elapsed between when we received the request and when we
@@ -89,8 +87,6 @@ pub enum BehaviourOut {
 	///
 	/// This event is generated for statistics purposes.
 	RequestFinished {
-		/// Peer that we send a request to.
-		peer: PeerId,
 		/// Name of the protocol in question.
 		protocol: ProtocolName,
 		/// Duration the request took.
@@ -350,10 +346,10 @@ impl From<CustomMessageOutcome> for BehaviourOut {
 impl From<request_responses::Event> for BehaviourOut {
 	fn from(event: request_responses::Event) -> Self {
 		match event {
-			request_responses::Event::InboundRequest { peer, protocol, result } =>
-				BehaviourOut::InboundRequest { peer, protocol, result },
-			request_responses::Event::RequestFinished { peer, protocol, duration, result } =>
-				BehaviourOut::RequestFinished { peer, protocol, duration, result },
+			request_responses::Event::InboundRequest { protocol, result, .. } =>
+				BehaviourOut::InboundRequest { protocol, result },
+			request_responses::Event::RequestFinished { protocol, duration, result, .. } =>
+				BehaviourOut::RequestFinished { protocol, duration, result },
 			request_responses::Event::ReputationChanges { peer, changes } =>
 				BehaviourOut::ReputationChanges { peer, changes },
 		}
diff --git a/substrate/client/network/src/litep2p/discovery.rs b/substrate/client/network/src/litep2p/discovery.rs
index bf2005df34d..5fe944cadc0 100644
--- a/substrate/client/network/src/litep2p/discovery.rs
+++ b/substrate/client/network/src/litep2p/discovery.rs
@@ -95,15 +95,6 @@ pub enum DiscoveryEvent {
 		/// Peer ID.
 		peer: PeerId,
 
-		/// Identify protocol version.
-		protocol_version: Option<String>,
-
-		/// Identify user agent version.
-		user_agent: Option<String>,
-
-		/// Observed address.
-		observed_address: Multiaddr,
-
 		/// Listen addresses.
 		listen_addresses: Vec<Multiaddr>,
 
@@ -561,11 +552,10 @@ impl Stream for Discovery {
 			Poll::Ready(None) => return Poll::Ready(None),
 			Poll::Ready(Some(IdentifyEvent::PeerIdentified {
 				peer,
-				protocol_version,
-				user_agent,
 				listen_addresses,
 				supported_protocols,
 				observed_address,
+				..
 			})) => {
 				if this.is_new_external_address(&observed_address, peer) {
 					this.pending_events.push_back(DiscoveryEvent::ExternalAddressDiscovered {
@@ -575,10 +565,7 @@ impl Stream for Discovery {
 
 				return Poll::Ready(Some(DiscoveryEvent::Identified {
 					peer,
-					protocol_version,
-					user_agent,
 					listen_addresses,
-					observed_address,
 					supported_protocols,
 				}));
 			},
diff --git a/substrate/client/network/src/protocol/notifications/behaviour.rs b/substrate/client/network/src/protocol/notifications/behaviour.rs
index cb4f089995e..a562546145c 100644
--- a/substrate/client/network/src/protocol/notifications/behaviour.rs
+++ b/substrate/client/network/src/protocol/notifications/behaviour.rs
@@ -33,7 +33,7 @@ use bytes::BytesMut;
 use fnv::FnvHashMap;
 use futures::{future::BoxFuture, prelude::*, stream::FuturesUnordered};
 use libp2p::{
-	core::{ConnectedPoint, Endpoint, Multiaddr},
+	core::{Endpoint, Multiaddr},
 	swarm::{
 		behaviour::{ConnectionClosed, ConnectionEstablished, DialFailure, FromSwarm},
 		ConnectionDenied, ConnectionId, DialError, NetworkBehaviour, NotifyHandler, PollParameters,
@@ -362,8 +362,6 @@ pub enum NotificationsOut {
 		received_handshake: Vec<u8>,
 		/// Object that permits sending notifications to the peer.
 		notifications_sink: NotificationsSink,
-		/// Is the connection inbound.
-		inbound: bool,
 	},
 
 	/// The [`NotificationsSink`] object used to send notifications with the given peer must be
@@ -1223,33 +1221,20 @@ impl NetworkBehaviour for Notifications {
 		&mut self,
 		_connection_id: ConnectionId,
 		peer: PeerId,
-		local_addr: &Multiaddr,
-		remote_addr: &Multiaddr,
+		_local_addr: &Multiaddr,
+		_remote_addr: &Multiaddr,
 	) -> Result<THandler<Self>, ConnectionDenied> {
-		Ok(NotifsHandler::new(
-			peer,
-			ConnectedPoint::Listener {
-				local_addr: local_addr.clone(),
-				send_back_addr: remote_addr.clone(),
-			},
-			self.notif_protocols.clone(),
-			Some(self.metrics.clone()),
-		))
+		Ok(NotifsHandler::new(peer, self.notif_protocols.clone(), Some(self.metrics.clone())))
 	}
 
 	fn handle_established_outbound_connection(
 		&mut self,
 		_connection_id: ConnectionId,
 		peer: PeerId,
-		addr: &Multiaddr,
-		role_override: Endpoint,
+		_addr: &Multiaddr,
+		_role_override: Endpoint,
 	) -> Result<THandler<Self>, ConnectionDenied> {
-		Ok(NotifsHandler::new(
-			peer,
-			ConnectedPoint::Dialer { address: addr.clone(), role_override },
-			self.notif_protocols.clone(),
-			Some(self.metrics.clone()),
-		))
+		Ok(NotifsHandler::new(peer, self.notif_protocols.clone(), Some(self.metrics.clone())))
 	}
 
 	fn on_swarm_event(&mut self, event: FromSwarm<Self::ConnectionHandler>) {
@@ -2061,7 +2046,6 @@ impl NetworkBehaviour for Notifications {
 								let event = NotificationsOut::CustomProtocolOpen {
 									peer_id,
 									set_id,
-									inbound,
 									direction: if inbound {
 										Direction::Inbound
 									} else {
@@ -2383,6 +2367,7 @@ mod tests {
 		protocol::notifications::handler::tests::*,
 		protocol_controller::{IncomingIndex, ProtoSetConfig, ProtocolController},
 	};
+	use libp2p::core::ConnectedPoint;
 	use sc_utils::mpsc::tracing_unbounded;
 	use std::{collections::HashSet, iter};
 
@@ -2413,7 +2398,8 @@ mod tests {
 	}
 
 	fn development_notifs(
-	) -> (Notifications, ProtocolController, Box<dyn crate::service::traits::NotificationService>) {
+	) -> (Notifications, ProtocolController, Box<dyn crate::service::traits::NotificationService>)
+	{
 		let (protocol_handle_pair, notif_service) =
 			crate::protocol::notifications::service::notification_service("/proto/1".into());
 		let (to_notifications, from_controller) =
@@ -2668,7 +2654,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -2868,7 +2854,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3021,7 +3007,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3065,7 +3051,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3135,7 +3121,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3188,7 +3174,7 @@ mod tests {
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
 
 		// open new substream
-		let event = conn_yielder.open_substream(peer, 0, connected, vec![1, 2, 3, 4]);
+		let event = conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]);
 
 		notif.on_connection_handler_event(peer, conn, event);
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
@@ -3261,7 +3247,7 @@ mod tests {
 			notif.on_connection_handler_event(
 				peer,
 				*conn,
-				conn_yielder.open_substream(peer, 0, connected.clone(), vec![1, 2, 3, 4]),
+				conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]),
 			);
 		}
 
@@ -3283,7 +3269,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn1,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3354,7 +3340,7 @@ mod tests {
 		notif.on_connection_handler_event(
 			peer,
 			conn,
-			conn_yielder.open_substream(peer, 0, connected, vec![1, 2, 3, 4]),
+			conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]),
 		);
 
 		if let Some(PeerState::Enabled { ref connections, .. }) = notif.peers.get(&(peer, set_id)) {
@@ -3409,7 +3395,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3483,7 +3469,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3546,7 +3532,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn1,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected.clone(), vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3560,7 +3546,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn2,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3614,7 +3600,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3672,7 +3658,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn2,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3733,7 +3719,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn1,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3786,7 +3772,7 @@ mod tests {
 		notif.on_connection_handler_event(
 			peer,
 			conn1,
-			conn_yielder.open_substream(peer, 0, connected.clone(), vec![1, 2, 3, 4]),
+			conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]),
 		);
 
 		if let Some(PeerState::Enabled { ref connections, .. }) = notif.peers.get(&(peer, set_id)) {
@@ -3802,7 +3788,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn1,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3843,7 +3829,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -3966,7 +3952,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4015,10 +4001,6 @@ mod tests {
 		let peer = PeerId::random();
 		let conn = ConnectionId::new_unchecked(0);
 		let set_id = SetId::from(0);
-		let connected = ConnectedPoint::Listener {
-			local_addr: Multiaddr::empty(),
-			send_back_addr: Multiaddr::empty(),
-		};
 		let mut conn_yielder = ConnectionYielder::new();
 
 		// move the peer to `Enabled` state
@@ -4052,7 +4034,7 @@ mod tests {
 		notif.protocol_report_accept(IncomingIndex(0));
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
 
-		let event = conn_yielder.open_substream(peer, 0, connected, vec![1, 2, 3, 4]);
+		let event = conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]);
 
 		notif.on_connection_handler_event(peer, conn, event);
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
@@ -4167,7 +4149,7 @@ mod tests {
 		notif.peerset_report_connect(peer, set_id);
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
 
-		let event = conn_yielder.open_substream(peer, 0, connected, vec![1, 2, 3, 4]);
+		let event = conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]);
 
 		notif.on_connection_handler_event(peer, conn, event);
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
@@ -4280,7 +4262,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4521,7 +4503,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(0),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4623,7 +4605,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(0),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4681,7 +4663,7 @@ mod tests {
 		notif.peerset_report_connect(peer, set_id);
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
 
-		let event = conn_yielder.open_substream(peer, 0, connected, vec![1, 2, 3, 4]);
+		let event = conn_yielder.open_substream(peer, 0, vec![1, 2, 3, 4]);
 		notif.on_connection_handler_event(peer, conn, event);
 
 		assert!(std::matches!(notif.peers.get(&(peer, set_id)), Some(&PeerState::Enabled { .. })));
@@ -4705,7 +4687,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(0),
 				endpoint: &endpoint.clone(),
-				handler: NotifsHandler::new(peer, endpoint, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4822,7 +4804,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(1337),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4857,7 +4839,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(1337),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4908,7 +4890,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(1337),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -4955,7 +4937,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -5005,7 +4987,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: ConnectionId::new_unchecked(1337),
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -5048,7 +5030,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected.clone(), vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -5059,7 +5041,7 @@ mod tests {
 				peer_id: peer,
 				connection_id: conn,
 				endpoint: &connected.clone(),
-				handler: NotifsHandler::new(peer, connected, vec![], None),
+				handler: NotifsHandler::new(peer, vec![], None),
 				remaining_established: 0usize,
 			},
 		));
@@ -5071,16 +5053,12 @@ mod tests {
 	fn open_result_ok_non_existent_peer() {
 		let (mut notif, _controller, _notif_service) = development_notifs();
 		let conn = ConnectionId::new_unchecked(0);
-		let connected = ConnectedPoint::Listener {
-			local_addr: Multiaddr::empty(),
-			send_back_addr: Multiaddr::empty(),
-		};
 		let mut conn_yielder = ConnectionYielder::new();
 
 		notif.on_connection_handler_event(
 			PeerId::random(),
 			conn,
-			conn_yielder.open_substream(PeerId::random(), 0, connected, vec![1, 2, 3, 4]),
+			conn_yielder.open_substream(PeerId::random(), 0, vec![1, 2, 3, 4]),
 		);
 	}
 }
diff --git a/substrate/client/network/src/protocol/notifications/handler.rs b/substrate/client/network/src/protocol/notifications/handler.rs
index 967ef614c55..bff60ba1125 100644
--- a/substrate/client/network/src/protocol/notifications/handler.rs
+++ b/substrate/client/network/src/protocol/notifications/handler.rs
@@ -73,7 +73,6 @@ use futures::{
 	prelude::*,
 };
 use libp2p::{
-	core::ConnectedPoint,
 	swarm::{
 		handler::ConnectionEvent, ConnectionHandler, ConnectionHandlerEvent, KeepAlive, Stream,
 		SubstreamProtocol,
@@ -117,9 +116,6 @@ pub struct NotifsHandler {
 	/// When the connection with the remote has been successfully established.
 	when_connection_open: Instant,
 
-	/// Whether we are the connection dialer or listener.
-	endpoint: ConnectedPoint,
-
 	/// Remote we are connected to.
 	peer_id: PeerId,
 
@@ -136,7 +132,6 @@ impl NotifsHandler {
 	/// Creates new [`NotifsHandler`].
 	pub fn new(
 		peer_id: PeerId,
-		endpoint: ConnectedPoint,
 		protocols: Vec<ProtocolConfig>,
 		metrics: Option<NotificationMetrics>,
 	) -> Self {
@@ -154,7 +149,6 @@ impl NotifsHandler {
 				})
 				.collect(),
 			peer_id,
-			endpoint,
 			when_connection_open: Instant::now(),
 			events_queue: VecDeque::with_capacity(16),
 			metrics: metrics.map_or(None, |metrics| Some(Arc::new(metrics))),
@@ -281,8 +275,6 @@ pub enum NotifsHandlerOut {
 		protocol_index: usize,
 		/// Name of the protocol that was actually negotiated, if the default one wasn't available.
 		negotiated_fallback: Option<ProtocolName>,
-		/// The endpoint of the connection that is open for custom protocols.
-		endpoint: ConnectedPoint,
 		/// Handshake that was sent to us.
 		/// This is normally a "Status" message, but this out of the concern of this code.
 		received_handshake: Vec<u8>,
@@ -590,7 +582,6 @@ impl ConnectionHandler for NotifsHandler {
 							NotifsHandlerOut::OpenResultOk {
 								protocol_index,
 								negotiated_fallback: new_open.negotiated_fallback,
-								endpoint: self.endpoint.clone(),
 								received_handshake: new_open.handshake,
 								notifications_sink,
 								inbound,
@@ -889,7 +880,6 @@ pub mod tests {
 	use libp2p::{
 		core::muxing::SubstreamBox,
 		swarm::handler::{self, StreamUpgradeError},
-		Multiaddr, Stream,
 	};
 	use multistream_select::{dialer_select_proto, listener_select_proto, Negotiated, Version};
 	use std::{
@@ -925,7 +915,6 @@ pub mod tests {
 			&mut self,
 			peer: PeerId,
 			protocol_index: usize,
-			endpoint: ConnectedPoint,
 			received_handshake: Vec<u8>,
 		) -> NotifsHandlerOut {
 			let (async_tx, async_rx) =
@@ -954,7 +943,6 @@ pub mod tests {
 			NotifsHandlerOut::OpenResultOk {
 				protocol_index,
 				negotiated_fallback: None,
-				endpoint,
 				received_handshake,
 				notifications_sink,
 				inbound: false,
@@ -1110,10 +1098,6 @@ pub mod tests {
 		NotifsHandler {
 			protocols: vec![proto],
 			when_connection_open: Instant::now(),
-			endpoint: ConnectedPoint::Listener {
-				local_addr: Multiaddr::empty(),
-				send_back_addr: Multiaddr::empty(),
-			},
 			peer_id: PeerId::random(),
 			events_queue: VecDeque::new(),
 			metrics: None,
@@ -1131,7 +1115,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1158,7 +1141,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1191,7 +1173,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1225,7 +1206,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1265,7 +1245,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1316,7 +1295,6 @@ pub mod tests {
 		codec.set_max_len(usize::MAX);
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1355,7 +1333,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1415,7 +1392,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1452,7 +1428,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1498,7 +1473,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1547,7 +1521,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1583,7 +1556,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::NotSent,
@@ -1658,7 +1630,6 @@ pub mod tests {
 
 		let notif_in = NotificationsInOpen {
 			handshake: b"hello, world".to_vec(),
-			negotiated_fallback: None,
 			substream: NotificationsInSubstream::new(
 				Framed::new(io, codec),
 				NotificationsInSubstreamHandshake::PendingSend(vec![1, 2, 3, 4]),
diff --git a/substrate/client/network/src/protocol/notifications/service/mod.rs b/substrate/client/network/src/protocol/notifications/service/mod.rs
index 4f6d32ae3b3..a7eb31fc579 100644
--- a/substrate/client/network/src/protocol/notifications/service/mod.rs
+++ b/substrate/client/network/src/protocol/notifications/service/mod.rs
@@ -89,9 +89,8 @@ impl MessageSink for NotificationSink {
 			.await
 			.map_err(|_| error::Error::ConnectionClosed)?;
 
-		permit.send(notification).map_err(|_| error::Error::ChannelClosed).map(|res| {
+		permit.send(notification).map_err(|_| error::Error::ChannelClosed).inspect(|_| {
 			metrics::register_notification_sent(sink.0.metrics(), &sink.1, notification_len);
-			res
 		})
 	}
 }
@@ -263,13 +262,12 @@ impl NotificationService for NotificationHandle {
 			.map_err(|_| error::Error::ConnectionClosed)?
 			.send(notification)
 			.map_err(|_| error::Error::ChannelClosed)
-			.map(|res| {
+			.inspect(|_| {
 				metrics::register_notification_sent(
 					sink.metrics(),
 					&self.protocol,
 					notification_len,
 				);
-				res
 			})
 	}
 
diff --git a/substrate/client/network/src/protocol/notifications/upgrade/notifications.rs b/substrate/client/network/src/protocol/notifications/upgrade/notifications.rs
index a8a9e453a7b..e01bcbe0bad 100644
--- a/substrate/client/network/src/protocol/notifications/upgrade/notifications.rs
+++ b/substrate/client/network/src/protocol/notifications/upgrade/notifications.rs
@@ -151,7 +151,7 @@ where
 	type Future = Pin<Box<dyn Future<Output = Result<Self::Output, Self::Error>> + Send>>;
 	type Error = NotificationsHandshakeError;
 
-	fn upgrade_inbound(self, mut socket: TSubstream, negotiated_name: Self::Info) -> Self::Future {
+	fn upgrade_inbound(self, mut socket: TSubstream, _negotiated_name: Self::Info) -> Self::Future {
 		Box::pin(async move {
 			let handshake_len = unsigned_varint::aio::read_usize(&mut socket).await?;
 			if handshake_len > MAX_HANDSHAKE_SIZE {
@@ -174,15 +174,7 @@ where
 				handshake: NotificationsInSubstreamHandshake::NotSent,
 			};
 
-			Ok(NotificationsInOpen {
-				handshake,
-				negotiated_fallback: if negotiated_name == self.protocol_names[0] {
-					None
-				} else {
-					Some(negotiated_name)
-				},
-				substream,
-			})
+			Ok(NotificationsInOpen { handshake, substream })
 		})
 	}
 }
@@ -191,9 +183,6 @@ where
 pub struct NotificationsInOpen<TSubstream> {
 	/// Handshake sent by the remote.
 	pub handshake: Vec<u8>,
-	/// If the negotiated name is not the "main" protocol name but a fallback, contains the
-	/// name of the negotiated fallback.
-	pub negotiated_fallback: Option<ProtocolName>,
 	/// Implementation of `Stream` that allows receives messages from the substream.
 	pub substream: NotificationsInSubstream<TSubstream>,
 }
diff --git a/substrate/client/network/src/service/metrics.rs b/substrate/client/network/src/service/metrics.rs
index 202dc7b2ed6..e48c53953ff 100644
--- a/substrate/client/network/src/service/metrics.rs
+++ b/substrate/client/network/src/service/metrics.rs
@@ -72,7 +72,6 @@ pub struct Metrics {
 	pub distinct_peers_connections_opened_total: Counter<U64>,
 	pub incoming_connections_errors_total: CounterVec<U64>,
 	pub incoming_connections_total: Counter<U64>,
-	pub issued_light_requests: Counter<U64>,
 	pub kademlia_query_duration: HistogramVec,
 	pub kademlia_random_queries_total: Counter<U64>,
 	pub kademlia_records_count: Gauge<U64>,
@@ -126,10 +125,6 @@ impl Metrics {
 				"substrate_sub_libp2p_incoming_connections_total",
 				"Total number of incoming connections on the listening sockets"
 			)?, registry)?,
-			issued_light_requests: prometheus::register(Counter::new(
-				"substrate_issued_light_requests",
-				"Number of light client requests that our node has issued.",
-			)?, registry)?,
 			kademlia_query_duration: prometheus::register(HistogramVec::new(
 				HistogramOpts {
 					common_opts: Opts::new(
diff --git a/substrate/client/network/sync/src/engine.rs b/substrate/client/network/sync/src/engine.rs
index 96c1750b311..dceea9954c6 100644
--- a/substrate/client/network/sync/src/engine.rs
+++ b/substrate/client/network/sync/src/engine.rs
@@ -812,7 +812,8 @@ where
 		}
 
 		if !self.default_peers_set_no_slot_connected_peers.remove(&peer_id) &&
-			info.inbound && info.info.roles.is_full()
+			info.inbound &&
+			info.info.roles.is_full()
 		{
 			match self.num_in_peers.checked_sub(1) {
 				Some(value) => {
diff --git a/substrate/client/network/sync/src/lib.rs b/substrate/client/network/sync/src/lib.rs
index ca7280edba5..c458c7a5da4 100644
--- a/substrate/client/network/sync/src/lib.rs
+++ b/substrate/client/network/sync/src/lib.rs
@@ -26,7 +26,6 @@ mod block_announce_validator;
 mod futures_stream;
 mod justification_requests;
 mod pending_responses;
-mod request_metrics;
 mod schema;
 pub mod types;
 
diff --git a/substrate/client/network/sync/src/request_metrics.rs b/substrate/client/network/sync/src/request_metrics.rs
deleted file mode 100644
index 455f57ec393..00000000000
--- a/substrate/client/network/sync/src/request_metrics.rs
+++ /dev/null
@@ -1,25 +0,0 @@
-// This file is part of Substrate.
-
-// Copyright (C) Parity Technologies (UK) Ltd.
-// SPDX-License-Identifier: GPL-3.0-or-later WITH Classpath-exception-2.0
-
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-#[derive(Debug)]
-pub struct Metrics {
-	pub pending_requests: u32,
-	pub active_requests: u32,
-	pub importing_requests: u32,
-	pub failed_requests: u32,
-}
diff --git a/substrate/client/network/test/src/lib.rs b/substrate/client/network/test/src/lib.rs
index 0f73e3194ba..06e243342fb 100644
--- a/substrate/client/network/test/src/lib.rs
+++ b/substrate/client/network/test/src/lib.rs
@@ -628,9 +628,8 @@ struct VerifierAdapter<B: BlockT> {
 impl<B: BlockT> Verifier<B> for VerifierAdapter<B> {
 	async fn verify(&self, block: BlockImportParams<B>) -> Result<BlockImportParams<B>, String> {
 		let hash = block.header.hash();
-		self.verifier.lock().await.verify(block).await.map_err(|e| {
+		self.verifier.lock().await.verify(block).await.inspect_err(|e| {
 			self.failed_verifications.lock().insert(hash, e.clone());
-			e
 		})
 	}
 }
diff --git a/substrate/client/network/test/src/sync.rs b/substrate/client/network/test/src/sync.rs
index 4244c49bf7f..91307d86928 100644
--- a/substrate/client/network/test/src/sync.rs
+++ b/substrate/client/network/test/src/sync.rs
@@ -749,24 +749,6 @@ async fn sync_blocks_when_block_announce_validator_says_it_is_new_best() {
 	}
 }
 
-/// Waits for some time until the validation is successful.
-struct DeferredBlockAnnounceValidator;
-
-impl BlockAnnounceValidator<Block> for DeferredBlockAnnounceValidator {
-	fn validate(
-		&mut self,
-		_: &Header,
-		_: &[u8],
-	) -> Pin<Box<dyn Future<Output = Result<Validation, Box<dyn std::error::Error + Send>>> + Send>>
-	{
-		async {
-			futures_timer::Delay::new(std::time::Duration::from_millis(500)).await;
-			Ok(Validation::Success { is_new_best: false })
-		}
-		.boxed()
-	}
-}
-
 #[tokio::test(flavor = "multi_thread", worker_threads = 2)]
 async fn wait_until_deferred_block_announce_validation_is_ready() {
 	sp_tracing::try_init_simple();
diff --git a/substrate/client/rpc-spec-v2/src/chain_head/test_utils.rs b/substrate/client/rpc-spec-v2/src/chain_head/test_utils.rs
index 073ee34a79f..fa10fde388f 100644
--- a/substrate/client/rpc-spec-v2/src/chain_head/test_utils.rs
+++ b/substrate/client/rpc-spec-v2/src/chain_head/test_utils.rs
@@ -343,7 +343,8 @@ where
 	fn number(
 		&self,
 		hash: Block::Hash,
-	) -> sc_client_api::blockchain::Result<Option<<<Block as BlockT>::Header as HeaderT>::Number>> {
+	) -> sc_client_api::blockchain::Result<Option<<<Block as BlockT>::Header as HeaderT>::Number>>
+	{
 		self.client.number(hash)
 	}
 
diff --git a/substrate/client/service/test/src/client/mod.rs b/substrate/client/service/test/src/client/mod.rs
index 13e63962fe8..55bbfcdd859 100644
--- a/substrate/client/service/test/src/client/mod.rs
+++ b/substrate/client/service/test/src/client/mod.rs
@@ -1748,11 +1748,9 @@ fn respects_block_rules() {
 }
 
 #[test]
-#[cfg(disable_flaky)]
-#[allow(dead_code)]
-// FIXME: https://github.com/paritytech/substrate/issues/11321
+// FIXME: https://github.com/paritytech/polkadot-sdk/issues/48
 fn returns_status_for_pruned_blocks() {
-	use sc_consensus::BlockStatus;
+	use sp_consensus::BlockStatus;
 	sp_tracing::try_init_simple();
 	let tmp = tempfile::tempdir().unwrap();
 
diff --git a/substrate/client/transaction-pool/src/graph/tracked_map.rs b/substrate/client/transaction-pool/src/graph/tracked_map.rs
index 47ad22603e4..44c2c738ab1 100644
--- a/substrate/client/transaction-pool/src/graph/tracked_map.rs
+++ b/substrate/client/transaction-pool/src/graph/tracked_map.rs
@@ -119,10 +119,9 @@ where
 		let new_bytes = val.size();
 		self.bytes.fetch_add(new_bytes as isize, AtomicOrdering::Relaxed);
 		self.length.fetch_add(1, AtomicOrdering::Relaxed);
-		self.inner_guard.insert(key, val).map(|old_val| {
+		self.inner_guard.insert(key, val).inspect(|old_val| {
 			self.bytes.fetch_sub(old_val.size() as isize, AtomicOrdering::Relaxed);
 			self.length.fetch_sub(1, AtomicOrdering::Relaxed);
-			old_val
 		})
 	}
 
diff --git a/substrate/client/utils/src/mpsc.rs b/substrate/client/utils/src/mpsc.rs
index 91db7e1e7b0..051cb5b387c 100644
--- a/substrate/client/utils/src/mpsc.rs
+++ b/substrate/client/utils/src/mpsc.rs
@@ -103,7 +103,7 @@ impl<T> TracingUnboundedSender<T> {
 
 	/// Proxy function to `async_channel::Sender::try_send`.
 	pub fn unbounded_send(&self, msg: T) -> Result<(), TrySendError<T>> {
-		self.inner.try_send(msg).map(|s| {
+		self.inner.try_send(msg).inspect(|_| {
 			UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.name, SENT_LABEL]).inc();
 			UNBOUNDED_CHANNELS_SIZE
 				.with_label_values(&[self.name])
@@ -124,8 +124,6 @@ impl<T> TracingUnboundedSender<T> {
 					Backtrace::force_capture(),
 				);
 			}
-
-			s
 		})
 	}
 
@@ -144,12 +142,11 @@ impl<T> TracingUnboundedReceiver<T> {
 	/// Proxy function to [`async_channel::Receiver`]
 	/// that discounts the messages taken out.
 	pub fn try_recv(&mut self) -> Result<T, TryRecvError> {
-		self.inner.try_recv().map(|s| {
+		self.inner.try_recv().inspect(|_| {
 			UNBOUNDED_CHANNELS_COUNTER.with_label_values(&[self.name, RECEIVED_LABEL]).inc();
 			UNBOUNDED_CHANNELS_SIZE
 				.with_label_values(&[self.name])
 				.set(self.inner.len().saturated_into());
-			s
 		})
 	}
 
diff --git a/substrate/frame/authorship/src/lib.rs b/substrate/frame/authorship/src/lib.rs
index a0cca806e78..1de2262a201 100644
--- a/substrate/frame/authorship/src/lib.rs
+++ b/substrate/frame/authorship/src/lib.rs
@@ -84,9 +84,8 @@ impl<T: Config> Pallet<T> {
 
 		let digest = <frame_system::Pallet<T>>::digest();
 		let pre_runtime_digests = digest.logs.iter().filter_map(|d| d.as_pre_runtime());
-		T::FindAuthor::find_author(pre_runtime_digests).map(|a| {
+		T::FindAuthor::find_author(pre_runtime_digests).inspect(|a| {
 			<Author<T>>::put(&a);
-			a
 		})
 	}
 }
diff --git a/substrate/frame/bags-list/src/lib.rs b/substrate/frame/bags-list/src/lib.rs
index f6af1da5e7b..ee36a3a3ebd 100644
--- a/substrate/frame/bags-list/src/lib.rs
+++ b/substrate/frame/bags-list/src/lib.rs
@@ -491,7 +491,7 @@ impl<T: Config<I>, I: 'static> ScoreProvider<T::AccountId> for Pallet<T, I> {
 		Node::<T, I>::get(id).map(|node| node.score()).unwrap_or_default()
 	}
 
-	frame_election_provider_support::runtime_benchmarks_fuzz_or_std_enabled! {
+	frame_election_provider_support::runtime_benchmarks_or_std_enabled! {
 		fn set_score_of(id: &T::AccountId, new_score: T::Score) {
 			ListNodes::<T, I>::mutate(id, |maybe_node| {
 				if let Some(node) = maybe_node.as_mut() {
diff --git a/substrate/frame/bags-list/src/list/tests.rs b/substrate/frame/bags-list/src/list/tests.rs
index e5fff76d75c..fc4c4fbd088 100644
--- a/substrate/frame/bags-list/src/list/tests.rs
+++ b/substrate/frame/bags-list/src/list/tests.rs
@@ -778,7 +778,7 @@ mod bags {
 			assert_eq!(bag_1000.iter().count(), 3);
 			bag_1000.insert_node_unchecked(node(4, None, None, bag_1000.bag_upper)); // panics in debug
 			assert_eq!(bag_1000.iter().count(), 3); // in release we expect it to silently ignore the
-			                            // request.
+			                               // request.
 		});
 	}
 
diff --git a/substrate/frame/bags-list/src/mock.rs b/substrate/frame/bags-list/src/mock.rs
index ea677cb9e73..3690a876f62 100644
--- a/substrate/frame/bags-list/src/mock.rs
+++ b/substrate/frame/bags-list/src/mock.rs
@@ -41,7 +41,7 @@ impl frame_election_provider_support::ScoreProvider<AccountId> for StakingMock {
 		*NextVoteWeightMap::get().get(id).unwrap_or(&NextVoteWeight::get())
 	}
 
-	frame_election_provider_support::runtime_benchmarks_fuzz_or_std_enabled! {
+	frame_election_provider_support::runtime_benchmarks_or_std_enabled! {
 		fn set_score_of(id: &AccountId, weight: Self::Score) {
 			NEXT_VOTE_WEIGHT_MAP.with(|m| m.borrow_mut().insert(*id, weight));
 		}
diff --git a/substrate/frame/balances/src/lib.rs b/substrate/frame/balances/src/lib.rs
index 87d2029d488..f6858347f24 100644
--- a/substrate/frame/balances/src/lib.rs
+++ b/substrate/frame/balances/src/lib.rs
@@ -1031,7 +1031,7 @@ pub mod pallet {
 				}
 				if did_provide && !does_provide {
 					// This could reap the account so must go last.
-					frame_system::Pallet::<T>::dec_providers(who).map_err(|r| {
+					frame_system::Pallet::<T>::dec_providers(who).inspect_err(|_| {
 						// best-effort revert consumer change.
 						if did_consume && !does_consume {
 							let _ = frame_system::Pallet::<T>::inc_consumers(who).defensive();
@@ -1039,7 +1039,6 @@ pub mod pallet {
 						if !did_consume && does_consume {
 							let _ = frame_system::Pallet::<T>::dec_consumers(who);
 						}
-						r
 					})?;
 				}
 
diff --git a/substrate/frame/balances/src/tests/currency_tests.rs b/substrate/frame/balances/src/tests/currency_tests.rs
index 2243859458b..a4984b34f6d 100644
--- a/substrate/frame/balances/src/tests/currency_tests.rs
+++ b/substrate/frame/balances/src/tests/currency_tests.rs
@@ -1017,7 +1017,7 @@ fn slash_consumed_slash_full_works() {
 	ExtBuilder::default().existential_deposit(100).build_and_execute_with(|| {
 		Balances::make_free_balance_be(&1, 1_000);
 		assert_ok!(System::inc_consumers(&1)); // <-- Reference counter added here is enough for all tests
-									   // Slashed completed in full
+										 // Slashed completed in full
 		assert_eq!(Balances::slash(&1, 900), (NegativeImbalance::new(900), 0));
 		// Account is still alive
 		assert!(System::account_exists(&1));
@@ -1029,7 +1029,7 @@ fn slash_consumed_slash_over_works() {
 	ExtBuilder::default().existential_deposit(100).build_and_execute_with(|| {
 		Balances::make_free_balance_be(&1, 1_000);
 		assert_ok!(System::inc_consumers(&1)); // <-- Reference counter added here is enough for all tests
-									   // Slashed completed in full
+										 // Slashed completed in full
 		assert_eq!(Balances::slash(&1, 1_000), (NegativeImbalance::new(900), 100));
 		// Account is still alive
 		assert!(System::account_exists(&1));
@@ -1041,7 +1041,7 @@ fn slash_consumed_slash_partial_works() {
 	ExtBuilder::default().existential_deposit(100).build_and_execute_with(|| {
 		Balances::make_free_balance_be(&1, 1_000);
 		assert_ok!(System::inc_consumers(&1)); // <-- Reference counter added here is enough for all tests
-									   // Slashed completed in full
+										 // Slashed completed in full
 		assert_eq!(Balances::slash(&1, 800), (NegativeImbalance::new(800), 0));
 		// Account is still alive
 		assert!(System::account_exists(&1));
diff --git a/substrate/frame/beefy-mmr/src/benchmarking.rs b/substrate/frame/beefy-mmr/src/benchmarking.rs
index 135f95eabb9..fea6a2078f0 100644
--- a/substrate/frame/beefy-mmr/src/benchmarking.rs
+++ b/substrate/frame/beefy-mmr/src/benchmarking.rs
@@ -51,9 +51,7 @@ mod benchmarks {
 
 	#[benchmark]
 	fn extract_validation_context() {
-		if !cfg!(feature = "test") {
-			pallet_mmr::UseLocalStorage::<T>::set(true);
-		}
+		pallet_mmr::UseLocalStorage::<T>::set(true);
 
 		init_block::<T>(1);
 		let header = System::<T>::finalize();
@@ -71,9 +69,7 @@ mod benchmarks {
 
 	#[benchmark]
 	fn read_peak() {
-		if !cfg!(feature = "test") {
-			pallet_mmr::UseLocalStorage::<T>::set(true);
-		}
+		pallet_mmr::UseLocalStorage::<T>::set(true);
 
 		init_block::<T>(1);
 
@@ -91,9 +87,7 @@ mod benchmarks {
 	/// the verification. We need to account for the peaks separately.
 	#[benchmark]
 	fn n_items_proof_is_non_canonical(n: Linear<2, 512>) {
-		if !cfg!(feature = "test") {
-			pallet_mmr::UseLocalStorage::<T>::set(true);
-		}
+		pallet_mmr::UseLocalStorage::<T>::set(true);
 
 		for block_num in 1..=n {
 			init_block::<T>(block_num);
diff --git a/substrate/frame/benchmarking/pov/src/weights.rs b/substrate/frame/benchmarking/pov/src/weights.rs
index c4fc03d1dd9..1f20d5f0b51 100644
--- a/substrate/frame/benchmarking/pov/src/weights.rs
+++ b/substrate/frame/benchmarking/pov/src/weights.rs
@@ -45,6 +45,7 @@ use frame_support::{traits::Get, weights::{Weight, constants::RocksDbWeight}};
 use core::marker::PhantomData;
 
 /// Weight functions needed for `frame_benchmarking_pallet_pov`.
+#[allow(dead_code)]
 pub trait WeightInfo {
 	fn storage_single_value_read() -> Weight;
 	fn storage_single_value_ignored_read() -> Weight;
@@ -79,6 +80,7 @@ pub trait WeightInfo {
 }
 
 /// Weights for `frame_benchmarking_pallet_pov` using the Substrate node and recommended hardware.
+#[allow(dead_code)]
 pub struct SubstrateWeight<T>(PhantomData<T>);
 impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Storage: `Pov::Value` (r:1 w:0)
diff --git a/substrate/frame/bounties/src/lib.rs b/substrate/frame/bounties/src/lib.rs
index 7b89a6e3e76..e30d6fa2d14 100644
--- a/substrate/frame/bounties/src/lib.rs
+++ b/substrate/frame/bounties/src/lib.rs
@@ -459,12 +459,12 @@ pub mod pallet {
 			Bounties::<T, I>::try_mutate_exists(bounty_id, |maybe_bounty| -> DispatchResult {
 				let bounty = maybe_bounty.as_mut().ok_or(Error::<T, I>::InvalidIndex)?;
 
-				let slash_curator = |curator: &T::AccountId,
-				                     curator_deposit: &mut BalanceOf<T, I>| {
-					let imbalance = T::Currency::slash_reserved(curator, *curator_deposit).0;
-					T::OnSlash::on_unbalanced(imbalance);
-					*curator_deposit = Zero::zero();
-				};
+				let slash_curator =
+					|curator: &T::AccountId, curator_deposit: &mut BalanceOf<T, I>| {
+						let imbalance = T::Currency::slash_reserved(curator, *curator_deposit).0;
+						T::OnSlash::on_unbalanced(imbalance);
+						*curator_deposit = Zero::zero();
+					};
 
 				match bounty.status {
 					BountyStatus::Proposed | BountyStatus::Approved | BountyStatus::Funded => {
diff --git a/substrate/frame/child-bounties/src/lib.rs b/substrate/frame/child-bounties/src/lib.rs
index 911fd4c4c49..660a30ca5d2 100644
--- a/substrate/frame/child-bounties/src/lib.rs
+++ b/substrate/frame/child-bounties/src/lib.rs
@@ -473,12 +473,13 @@ pub mod pallet {
 					let child_bounty =
 						maybe_child_bounty.as_mut().ok_or(BountiesError::<T>::InvalidIndex)?;
 
-					let slash_curator = |curator: &T::AccountId,
-					                     curator_deposit: &mut BalanceOf<T>| {
-						let imbalance = T::Currency::slash_reserved(curator, *curator_deposit).0;
-						T::OnSlash::on_unbalanced(imbalance);
-						*curator_deposit = Zero::zero();
-					};
+					let slash_curator =
+						|curator: &T::AccountId, curator_deposit: &mut BalanceOf<T>| {
+							let imbalance =
+								T::Currency::slash_reserved(curator, *curator_deposit).0;
+							T::OnSlash::on_unbalanced(imbalance);
+							*curator_deposit = Zero::zero();
+						};
 
 					match child_bounty.status {
 						ChildBountyStatus::Added => {
diff --git a/substrate/frame/contracts/src/benchmarking/code.rs b/substrate/frame/contracts/src/benchmarking/code.rs
index 1473022b553..b5918a5e182 100644
--- a/substrate/frame/contracts/src/benchmarking/code.rs
+++ b/substrate/frame/contracts/src/benchmarking/code.rs
@@ -114,7 +114,6 @@ pub struct ImportedFunction {
 pub struct WasmModule<T: Config> {
 	pub code: Vec<u8>,
 	pub hash: <T::Hashing as Hash>::Output,
-	pub memory: Option<ImportedMemory>,
 }
 
 impl<T: Config> From<ModuleDefinition> for WasmModule<T> {
@@ -233,7 +232,7 @@ impl<T: Config> From<ModuleDefinition> for WasmModule<T> {
 
 		let code = contract.build().into_bytes().unwrap();
 		let hash = T::Hashing::hash(&code);
-		Self { code: code.into(), hash, memory: def.memory }
+		Self { code: code.into(), hash }
 	}
 }
 
diff --git a/substrate/frame/contracts/src/exec.rs b/substrate/frame/contracts/src/exec.rs
index 31e0bf50b73..046affe32d9 100644
--- a/substrate/frame/contracts/src/exec.rs
+++ b/substrate/frame/contracts/src/exec.rs
@@ -454,9 +454,6 @@ pub trait Executable<T: Config>: Sized {
 	/// The code hash of the executable.
 	fn code_hash(&self) -> &CodeHash<T>;
 
-	/// Size of the contract code in bytes.
-	fn code_len(&self) -> u32;
-
 	/// The code does not contain any instructions which could lead to indeterminism.
 	fn is_deterministic(&self) -> bool;
 }
@@ -1838,10 +1835,6 @@ mod tests {
 			&self.code_info
 		}
 
-		fn code_len(&self) -> u32 {
-			0
-		}
-
 		fn is_deterministic(&self) -> bool {
 			true
 		}
diff --git a/substrate/frame/contracts/src/wasm/mod.rs b/substrate/frame/contracts/src/wasm/mod.rs
index f4ee76459c4..c9786fa1516 100644
--- a/substrate/frame/contracts/src/wasm/mod.rs
+++ b/substrate/frame/contracts/src/wasm/mod.rs
@@ -488,10 +488,6 @@ impl<T: Config> Executable<T> for WasmBlob<T> {
 		&self.code_info
 	}
 
-	fn code_len(&self) -> u32 {
-		self.code.len() as u32
-	}
-
 	fn is_deterministic(&self) -> bool {
 		matches!(self.code_info.determinism, Determinism::Enforced)
 	}
diff --git a/substrate/frame/delegated-staking/src/lib.rs b/substrate/frame/delegated-staking/src/lib.rs
index 7b8d14b0a61..1d181eb29ca 100644
--- a/substrate/frame/delegated-staking/src/lib.rs
+++ b/substrate/frame/delegated-staking/src/lib.rs
@@ -71,8 +71,8 @@
 //! - Migrate a `Nominator` account to an `agent` account. See [`Pallet::migrate_to_agent`].
 //!   Explained in more detail in the `Migration` section.
 //! - Migrate unclaimed delegated funds from `agent` to delegator. When a nominator migrates to an
-//! agent, the funds are held in a proxy account. This function allows the delegator to claim their
-//! share of the funds from the proxy account. See [`Pallet::migrate_delegation`].
+//!   agent, the funds are held in a proxy account. This function allows the delegator to claim
+//!   their share of the funds from the proxy account. See [`Pallet::migrate_delegation`].
 //!
 //! ## Lazy Slashing
 //! One of the reasons why direct nominators on staking pallet cannot scale well is because all
diff --git a/substrate/frame/election-provider-multi-phase/src/lib.rs b/substrate/frame/election-provider-multi-phase/src/lib.rs
index 09248e77848..072cfe176b6 100644
--- a/substrate/frame/election-provider-multi-phase/src/lib.rs
+++ b/substrate/frame/election-provider-multi-phase/src/lib.rs
@@ -1208,9 +1208,8 @@ pub mod pallet {
 				}
 
 				let _ = Self::unsigned_pre_dispatch_checks(raw_solution)
-					.map_err(|err| {
+					.inspect_err(|err| {
 						log!(debug, "unsigned transaction validation failed due to {:?}", err);
-						err
 					})
 					.map_err(dispatch_error_to_invalid)?;
 
diff --git a/substrate/frame/election-provider-support/src/lib.rs b/substrate/frame/election-provider-support/src/lib.rs
index 394f58a3844..cb3249e388a 100644
--- a/substrate/frame/election-provider-support/src/lib.rs
+++ b/substrate/frame/election-provider-support/src/lib.rs
@@ -687,7 +687,7 @@ sp_core::generate_feature_enabled_macro!(
 );
 
 sp_core::generate_feature_enabled_macro!(
-	runtime_benchmarks_fuzz_or_std_enabled,
-	any(feature = "runtime-benchmarks", feature = "fuzzing", feature = "std"),
+	runtime_benchmarks_or_std_enabled,
+	any(feature = "runtime-benchmarks", feature = "std"),
 	$
 );
diff --git a/substrate/frame/elections-phragmen/src/lib.rs b/substrate/frame/elections-phragmen/src/lib.rs
index 6d91448fd18..a1c5f69e1b6 100644
--- a/substrate/frame/elections-phragmen/src/lib.rs
+++ b/substrate/frame/elections-phragmen/src/lib.rs
@@ -829,7 +829,7 @@ impl<T: Config> Pallet<T> {
 				T::Currency::unreserve(who, removed.deposit);
 			}
 
-			let maybe_next_best = RunnersUp::<T>::mutate(|r| r.pop()).map(|next_best| {
+			let maybe_next_best = RunnersUp::<T>::mutate(|r| r.pop()).inspect(|next_best| {
 				// defensive-only: Members and runners-up are disjoint. This will always be err and
 				// give us an index to insert.
 				if let Err(index) = members.binary_search_by(|m| m.who.cmp(&next_best.who)) {
@@ -839,7 +839,6 @@ impl<T: Config> Pallet<T> {
 					// is already a member, so not much more to do.
 					log::error!(target: LOG_TARGET, "A member seems to also be a runner-up.");
 				}
-				next_best
 			});
 			Ok(maybe_next_best)
 		})?;
diff --git a/substrate/frame/examples/offchain-worker/src/tests.rs b/substrate/frame/examples/offchain-worker/src/tests.rs
index b665cbbb62a..741adbe6d26 100644
--- a/substrate/frame/examples/offchain-worker/src/tests.rs
+++ b/substrate/frame/examples/offchain-worker/src/tests.rs
@@ -266,11 +266,12 @@ fn should_submit_unsigned_transaction_on_chain_for_any_account() {
 		{
 			assert_eq!(body, price_payload);
 
-			let signature_valid =
-				<PricePayload<
-					<Test as SigningTypes>::Public,
-					frame_system::pallet_prelude::BlockNumberFor<Test>,
-				> as SignedPayload<Test>>::verify::<crypto::TestAuthId>(&price_payload, signature);
+			let signature_valid = <PricePayload<
+				<Test as SigningTypes>::Public,
+				frame_system::pallet_prelude::BlockNumberFor<Test>,
+			> as SignedPayload<Test>>::verify::<crypto::TestAuthId>(
+				&price_payload, signature
+			);
 
 			assert!(signature_valid);
 		}
@@ -320,11 +321,12 @@ fn should_submit_unsigned_transaction_on_chain_for_all_accounts() {
 		{
 			assert_eq!(body, price_payload);
 
-			let signature_valid =
-				<PricePayload<
-					<Test as SigningTypes>::Public,
-					frame_system::pallet_prelude::BlockNumberFor<Test>,
-				> as SignedPayload<Test>>::verify::<crypto::TestAuthId>(&price_payload, signature);
+			let signature_valid = <PricePayload<
+				<Test as SigningTypes>::Public,
+				frame_system::pallet_prelude::BlockNumberFor<Test>,
+			> as SignedPayload<Test>>::verify::<crypto::TestAuthId>(
+				&price_payload, signature
+			);
 
 			assert!(signature_valid);
 		}
diff --git a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs
index 55cf7cef9a7..922c03afdd1 100644
--- a/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs
+++ b/substrate/frame/examples/single-block-migrations/src/migrations/v1.rs
@@ -60,7 +60,7 @@ impl<T: crate::Config> UncheckedOnRuntimeUpgrade for InnerMigrateV0ToV1<T> {
 	///
 	/// - If the value doesn't exist, there is nothing to do.
 	/// - If the value exists, it is read and then written back to storage inside a
-	/// [`crate::CurrentAndPreviousValue`].
+	///   [`crate::CurrentAndPreviousValue`].
 	fn on_runtime_upgrade() -> frame_support::weights::Weight {
 		// Read the old value from storage
 		if let Some(old_value) = v0::Value::<T>::take() {
diff --git a/substrate/frame/executive/src/lib.rs b/substrate/frame/executive/src/lib.rs
index 1e7bac64e18..fe702e1fc39 100644
--- a/substrate/frame/executive/src/lib.rs
+++ b/substrate/frame/executive/src/lib.rs
@@ -382,9 +382,8 @@ where
 		<AllPalletsWithSystem as frame_support::traits::TryState<
 			BlockNumberFor<System>,
 		>>::try_state(*header.number(), select.clone())
-		.map_err(|e| {
+		.inspect_err(|e| {
 			log::error!(target: LOG_TARGET, "failure: {:?}", e);
-			e
 		})?;
 		if select.any() {
 			let res = AllPalletsWithSystem::try_decode_entire_state();
diff --git a/substrate/frame/nis/src/lib.rs b/substrate/frame/nis/src/lib.rs
index 016daa4cb78..87e2276e768 100644
--- a/substrate/frame/nis/src/lib.rs
+++ b/substrate/frame/nis/src/lib.rs
@@ -756,15 +756,13 @@ pub mod pallet {
 					.map(|_| ())
 					// We ignore this error as it just means the amount we're trying to deposit is
 					// dust and the beneficiary account doesn't exist.
-					.or_else(
-						|e| {
-							if e == TokenError::CannotCreate.into() {
-								Ok(())
-							} else {
-								Err(e)
-							}
-						},
-					)?;
+					.or_else(|e| {
+						if e == TokenError::CannotCreate.into() {
+							Ok(())
+						} else {
+							Err(e)
+						}
+					})?;
 					summary.receipts_on_hold.saturating_reduce(on_hold);
 				}
 				T::Currency::release(&HoldReason::NftReceipt.into(), &who, amount, Exact)?;
diff --git a/substrate/frame/referenda/src/mock.rs b/substrate/frame/referenda/src/mock.rs
index bf0fa4e1a12..c96a50af865 100644
--- a/substrate/frame/referenda/src/mock.rs
+++ b/substrate/frame/referenda/src/mock.rs
@@ -24,7 +24,6 @@ use frame_support::{
 	assert_ok, derive_impl, ord_parameter_types, parameter_types,
 	traits::{
 		ConstU32, ConstU64, Contains, EqualPrivilegeOnly, OnInitialize, OriginTrait, Polling,
-		SortedMembers,
 	},
 	weights::Weight,
 };
@@ -98,14 +97,6 @@ ord_parameter_types! {
 	pub const Five: u64 = 5;
 	pub const Six: u64 = 6;
 }
-pub struct OneToFive;
-impl SortedMembers<u64> for OneToFive {
-	fn sorted_members() -> Vec<u64> {
-		vec![1, 2, 3, 4, 5]
-	}
-	#[cfg(feature = "runtime-benchmarks")]
-	fn add(_m: &u64) {}
-}
 
 pub struct TestTracksInfo;
 impl TracksInfo<u64, u64> for TestTracksInfo {
diff --git a/substrate/frame/referenda/src/types.rs b/substrate/frame/referenda/src/types.rs
index 1039b288b2a..e83f28b472c 100644
--- a/substrate/frame/referenda/src/types.rs
+++ b/substrate/frame/referenda/src/types.rs
@@ -258,7 +258,8 @@ impl<
 		Tally: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone,
 		AccountId: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone,
 		ScheduleAddress: Eq + PartialEq + Debug + Encode + Decode + TypeInfo + Clone,
-	> ReferendumInfo<TrackId, RuntimeOrigin, Moment, Call, Balance, Tally, AccountId, ScheduleAddress>
+	>
+	ReferendumInfo<TrackId, RuntimeOrigin, Moment, Call, Balance, Tally, AccountId, ScheduleAddress>
 {
 	/// Take the Decision Deposit from `self`, if there is one. Returns an `Err` if `self` is not
 	/// in a valid state for the Decision Deposit to be refunded.
diff --git a/substrate/frame/revive/proc-macro/src/lib.rs b/substrate/frame/revive/proc-macro/src/lib.rs
index 95f4110a2d7..012b4bfab9a 100644
--- a/substrate/frame/revive/proc-macro/src/lib.rs
+++ b/substrate/frame/revive/proc-macro/src/lib.rs
@@ -349,18 +349,19 @@ where
 		let Some(ident) = path.path.get_ident() else {
 			panic!("Type needs to be ident");
 		};
-		let size =
-			if ident == "i8" ||
-				ident == "i16" || ident == "i32" ||
-				ident == "u8" || ident == "u16" ||
-				ident == "u32"
-			{
-				1
-			} else if ident == "i64" || ident == "u64" {
-				2
-			} else {
-				panic!("Pass by value only supports primitives");
-			};
+		let size = if ident == "i8" ||
+			ident == "i16" ||
+			ident == "i32" ||
+			ident == "u8" ||
+			ident == "u16" ||
+			ident == "u32"
+		{
+			1
+		} else if ident == "i64" || ident == "u64" {
+			2
+		} else {
+			panic!("Pass by value only supports primitives");
+		};
 		registers_used += size;
 		if registers_used > ALLOWED_REGISTERS {
 			return quote! {
diff --git a/substrate/frame/society/src/lib.rs b/substrate/frame/society/src/lib.rs
index b4c5c88af3d..04879cd8709 100644
--- a/substrate/frame/society/src/lib.rs
+++ b/substrate/frame/society/src/lib.rs
@@ -1387,18 +1387,6 @@ impl_ensure_origin_with_arg_ignoring_arg! {
 	{}
 }
 
-struct InputFromRng<'a, T>(&'a mut T);
-impl<'a, T: RngCore> codec::Input for InputFromRng<'a, T> {
-	fn remaining_len(&mut self) -> Result<Option<usize>, codec::Error> {
-		return Ok(None)
-	}
-
-	fn read(&mut self, into: &mut [u8]) -> Result<(), codec::Error> {
-		self.0.fill_bytes(into);
-		Ok(())
-	}
-}
-
 pub enum Period<BlockNumber> {
 	Voting { elapsed: BlockNumber, more: BlockNumber },
 	Claim { elapsed: BlockNumber, more: BlockNumber },
diff --git a/substrate/frame/society/src/tests.rs b/substrate/frame/society/src/tests.rs
index df8e844cdad..2a13f99855b 100644
--- a/substrate/frame/society/src/tests.rs
+++ b/substrate/frame/society/src/tests.rs
@@ -281,7 +281,7 @@ fn bidding_works() {
 		// No more candidates satisfy the requirements
 		assert_eq!(candidacies(), vec![]);
 		assert_ok!(Society::defender_vote(Origin::signed(10), true)); // Keep defender around
-															  // Next period
+																// Next period
 		run_to_block(16);
 		// Same members
 		assert_eq!(members(), vec![10, 30, 40, 50]);
diff --git a/substrate/frame/staking/src/tests.rs b/substrate/frame/staking/src/tests.rs
index ab2c00ca9cc..dd178a95bec 100644
--- a/substrate/frame/staking/src/tests.rs
+++ b/substrate/frame/staking/src/tests.rs
@@ -7995,7 +7995,7 @@ mod ledger_recovery {
 			assert_eq!(Balances::balance_locked(crate::STAKING_ID, &333), lock_333_before); // OK
 			assert_eq!(Bonded::<Test>::get(&333), Some(444)); // OK
 			assert!(Payee::<Test>::get(&333).is_some()); // OK
-											 // however, ledger associated with its controller was killed.
+												// however, ledger associated with its controller was killed.
 			assert!(Ledger::<Test>::get(&444).is_none()); // NOK
 
 			// side effects on 444 - ledger, bonded, payee, lock should be completely removed.
diff --git a/substrate/frame/support/procedural/src/construct_runtime/parse.rs b/substrate/frame/support/procedural/src/construct_runtime/parse.rs
index 3e38adcc3c5..729a803a302 100644
--- a/substrate/frame/support/procedural/src/construct_runtime/parse.rs
+++ b/substrate/frame/support/procedural/src/construct_runtime/parse.rs
@@ -592,8 +592,6 @@ pub struct Pallet {
 	pub cfg_pattern: Vec<cfg_expr::Expression>,
 	/// The doc literals
 	pub docs: Vec<syn::Expr>,
-	/// attributes
-	pub attrs: Vec<syn::Attribute>,
 }
 
 impl Pallet {
@@ -764,7 +762,6 @@ fn convert_pallets(pallets: Vec<PalletDeclaration>) -> syn::Result<PalletsConver
 				cfg_pattern,
 				pallet_parts,
 				docs: vec![],
-				attrs: pallet.attrs.clone(),
 			})
 		})
 		.collect::<Result<Vec<_>>>()?;
diff --git a/substrate/frame/support/procedural/src/derive_impl.rs b/substrate/frame/support/procedural/src/derive_impl.rs
index 69117c02681..5d39c2707de 100644
--- a/substrate/frame/support/procedural/src/derive_impl.rs
+++ b/substrate/frame/support/procedural/src/derive_impl.rs
@@ -304,6 +304,7 @@ fn test_derive_impl_attr_args_parsing() {
 
 #[test]
 fn test_runtime_type_with_doc() {
+	#[allow(dead_code)]
 	trait TestTrait {
 		type Test;
 	}
diff --git a/substrate/frame/support/procedural/src/lib.rs b/substrate/frame/support/procedural/src/lib.rs
index d40a571c9ea..a2c1e6eec7f 100644
--- a/substrate/frame/support/procedural/src/lib.rs
+++ b/substrate/frame/support/procedural/src/lib.rs
@@ -321,9 +321,10 @@ pub fn derive_debug_no_bound(input: TokenStream) -> TokenStream {
 /// This behaviour is useful to prevent bloating the runtime WASM blob from unneeded code.
 #[proc_macro_derive(RuntimeDebugNoBound)]
 pub fn derive_runtime_debug_no_bound(input: TokenStream) -> TokenStream {
-	if cfg!(any(feature = "std", feature = "try-runtime")) {
-		no_bound::debug::derive_debug_no_bound(input)
-	} else {
+	let try_runtime_or_std_impl: proc_macro2::TokenStream =
+		no_bound::debug::derive_debug_no_bound(input.clone()).into();
+
+	let stripped_impl = {
 		let input = syn::parse_macro_input!(input as syn::DeriveInput);
 
 		let name = &input.ident;
@@ -338,8 +339,22 @@ pub fn derive_runtime_debug_no_bound(input: TokenStream) -> TokenStream {
 				}
 			};
 		)
-		.into()
-	}
+	};
+
+	let frame_support = match generate_access_from_frame_or_crate("frame-support") {
+		Ok(frame_support) => frame_support,
+		Err(e) => return e.to_compile_error().into(),
+	};
+
+	quote::quote!(
+		#frame_support::try_runtime_or_std_enabled! {
+			#try_runtime_or_std_impl
+		}
+		#frame_support::try_runtime_and_std_not_enabled! {
+			#stripped_impl
+		}
+	)
+	.into()
 }
 
 /// Derive [`PartialEq`] but do not bound any generic.
diff --git a/substrate/frame/support/procedural/src/pallet/expand/genesis_build.rs b/substrate/frame/support/procedural/src/pallet/expand/genesis_build.rs
index 248e8346943..b71aed680dc 100644
--- a/substrate/frame/support/procedural/src/pallet/expand/genesis_build.rs
+++ b/substrate/frame/support/procedural/src/pallet/expand/genesis_build.rs
@@ -35,7 +35,7 @@ pub fn expand_genesis_build(def: &mut Def) -> proc_macro2::TokenStream {
 	let where_clause = &genesis_build.where_clause;
 
 	quote::quote_spanned!(genesis_build.attr_span =>
-		#[cfg(feature = "std")]
+		#frame_support::std_enabled! {
 			impl<#type_impl_gen> #frame_support::sp_runtime::BuildStorage for #gen_cfg_ident<#gen_cfg_use_gen> #where_clause
 			{
 				fn assimilate_storage(&self, storage: &mut #frame_support::sp_runtime::Storage) -> std::result::Result<(), std::string::String> {
@@ -45,5 +45,6 @@ pub fn expand_genesis_build(def: &mut Def) -> proc_macro2::TokenStream {
 					})
 				}
 			}
+		}
 	)
 }
diff --git a/substrate/frame/support/procedural/src/pallet/expand/hooks.rs b/substrate/frame/support/procedural/src/pallet/expand/hooks.rs
index 1b0c09c4e36..c31ddd8a47b 100644
--- a/substrate/frame/support/procedural/src/pallet/expand/hooks.rs
+++ b/substrate/frame/support/procedural/src/pallet/expand/hooks.rs
@@ -324,15 +324,13 @@ pub fn expand_hooks(def: &mut Def) -> proc_macro2::TokenStream {
 						Self as #frame_support::traits::Hooks<
 							#frame_system::pallet_prelude::BlockNumberFor::<T>
 						>
-					>::try_state(n).map_err(|err| {
+					>::try_state(n).inspect_err(|err| {
 						#frame_support::__private::log::error!(
 							target: #frame_support::LOG_TARGET,
 							"❌ {:?} try_state checks failed: {:?}",
 							#pallet_name,
 							err
 						);
-
-						err
 					})
 				}
 			}
diff --git a/substrate/frame/support/procedural/src/pallet/parse/call.rs b/substrate/frame/support/procedural/src/pallet/parse/call.rs
index 346dff46f12..68ced1bc0ed 100644
--- a/substrate/frame/support/procedural/src/pallet/parse/call.rs
+++ b/substrate/frame/support/procedural/src/pallet/parse/call.rs
@@ -400,18 +400,19 @@ impl CallDef {
 					}
 
 					for (feeless_arg, arg) in feeless_check.inputs.iter().skip(1).zip(args.iter()) {
-						let feeless_arg_type =
-							if let syn::Pat::Type(syn::PatType { ty, .. }) = feeless_arg.clone() {
-								if let syn::Type::Reference(pat) = *ty {
-									pat.elem.clone()
-								} else {
-									let msg = "Invalid pallet::call, feeless_if closure argument must be a reference";
-									return Err(syn::Error::new(ty.span(), msg));
-								}
+						let feeless_arg_type = if let syn::Pat::Type(syn::PatType { ty, .. }) =
+							feeless_arg.clone()
+						{
+							if let syn::Type::Reference(pat) = *ty {
+								pat.elem.clone()
 							} else {
-								let msg = "Invalid pallet::call, feeless_if closure argument must be a type ascription pattern";
-								return Err(syn::Error::new(feeless_arg.span(), msg));
-							};
+								let msg = "Invalid pallet::call, feeless_if closure argument must be a reference";
+								return Err(syn::Error::new(ty.span(), msg));
+							}
+						} else {
+							let msg = "Invalid pallet::call, feeless_if closure argument must be a type ascription pattern";
+							return Err(syn::Error::new(feeless_arg.span(), msg));
+						};
 
 						if feeless_arg_type != arg.2 {
 							let msg =
diff --git a/substrate/frame/support/procedural/src/runtime/parse/pallet.rs b/substrate/frame/support/procedural/src/runtime/parse/pallet.rs
index de1efa267c8..52f57cd2cd8 100644
--- a/substrate/frame/support/procedural/src/runtime/parse/pallet.rs
+++ b/substrate/frame/support/procedural/src/runtime/parse/pallet.rs
@@ -91,7 +91,6 @@ impl Pallet {
 			cfg_pattern,
 			pallet_parts,
 			docs,
-			attrs: item.attrs.clone(),
 		})
 	}
 }
diff --git a/substrate/frame/support/src/lib.rs b/substrate/frame/support/src/lib.rs
index 28283f2a5a0..269867e38c5 100644
--- a/substrate/frame/support/src/lib.rs
+++ b/substrate/frame/support/src/lib.rs
@@ -2523,6 +2523,8 @@ pub use frame_support_procedural::register_default_impl;
 sp_core::generate_feature_enabled_macro!(std_enabled, feature = "std", $);
 // Generate a macro that will enable/disable code based on `try-runtime` feature being active.
 sp_core::generate_feature_enabled_macro!(try_runtime_enabled, feature = "try-runtime", $);
+sp_core::generate_feature_enabled_macro!(try_runtime_or_std_enabled, any(feature = "try-runtime", feature = "std"), $);
+sp_core::generate_feature_enabled_macro!(try_runtime_and_std_not_enabled, all(not(feature = "try-runtime"), not(feature = "std")), $);
 
 // Helper for implementing GenesisBuilder runtime API
 pub mod genesis_builder_helper;
diff --git a/substrate/frame/support/src/storage/generator/double_map.rs b/substrate/frame/support/src/storage/generator/double_map.rs
index b68f3fa495f..a9116f1f66b 100644
--- a/substrate/frame/support/src/storage/generator/double_map.rs
+++ b/substrate/frame/support/src/storage/generator/double_map.rs
@@ -346,9 +346,8 @@ where
 
 			final_key
 		};
-		unhashed::take(old_key.as_ref()).map(|value| {
+		unhashed::take(old_key.as_ref()).inspect(|value| {
 			unhashed::put(Self::storage_double_map_final_key(key1, key2).as_ref(), &value);
-			value
 		})
 	}
 }
diff --git a/substrate/frame/support/src/storage/generator/map.rs b/substrate/frame/support/src/storage/generator/map.rs
index e905df41a5a..2d1f6c9f73a 100644
--- a/substrate/frame/support/src/storage/generator/map.rs
+++ b/substrate/frame/support/src/storage/generator/map.rs
@@ -311,9 +311,8 @@ impl<K: FullEncode, V: FullCodec, G: StorageMap<K, V>> storage::StorageMap<K, V>
 
 			final_key
 		};
-		unhashed::take(old_key.as_ref()).map(|value| {
+		unhashed::take(old_key.as_ref()).inspect(|value| {
 			unhashed::put(Self::storage_map_final_key(key).as_ref(), &value);
-			value
 		})
 	}
 }
diff --git a/substrate/frame/support/src/storage/generator/nmap.rs b/substrate/frame/support/src/storage/generator/nmap.rs
index 0466583a279..9083aba9d32 100755
--- a/substrate/frame/support/src/storage/generator/nmap.rs
+++ b/substrate/frame/support/src/storage/generator/nmap.rs
@@ -305,9 +305,8 @@ where
 
 			final_key
 		};
-		unhashed::take(old_key.as_ref()).map(|value| {
+		unhashed::take(old_key.as_ref()).inspect(|value| {
 			unhashed::put(Self::storage_n_map_final_key::<K, _>(key).as_ref(), &value);
-			value
 		})
 	}
 }
diff --git a/substrate/frame/support/src/storage/types/double_map.rs b/substrate/frame/support/src/storage/types/double_map.rs
index c70d9de5446..24aad3de0b3 100644
--- a/substrate/frame/support/src/storage/types/double_map.rs
+++ b/substrate/frame/support/src/storage/types/double_map.rs
@@ -129,7 +129,8 @@ impl<Prefix, Hasher1, Key1, Hasher2, Key2, Value, QueryKind, OnEmpty, MaxValues>
 			OnEmpty,
 			MaxValues,
 		>,
-	> where
+	>
+where
 	Prefix: StorageInstance,
 	Hasher1: crate::hash::StorageHasher,
 	Hasher2: crate::hash::StorageHasher,
diff --git a/substrate/frame/support/src/tests/mod.rs b/substrate/frame/support/src/tests/mod.rs
index 5e1bcc777df..7c90a12d416 100644
--- a/substrate/frame/support/src/tests/mod.rs
+++ b/substrate/frame/support/src/tests/mod.rs
@@ -769,5 +769,6 @@ fn derive_partial_eq_no_bound_core_mod() {
 		crate::DefaultNoBound,
 		crate::EqNoBound,
 	)]
+	#[allow(dead_code)]
 	struct Test;
 }
diff --git a/substrate/frame/support/src/traits/misc.rs b/substrate/frame/support/src/traits/misc.rs
index 492475d6f63..4d3b122daf6 100644
--- a/substrate/frame/support/src/traits/misc.rs
+++ b/substrate/frame/support/src/traits/misc.rs
@@ -488,7 +488,7 @@ pub trait DefensiveMin<T> {
 	/// assert_eq!(4, 4_u32.defensive_min(4_u32));
 	/// ```
 	///
-	/// ```#[cfg_attr(debug_assertions, should_panic)]
+	/// ```should_panic
 	/// use frame_support::traits::DefensiveMin;
 	/// // min(4, 3) panics.
 	/// 4_u32.defensive_min(3_u32);
@@ -505,7 +505,7 @@ pub trait DefensiveMin<T> {
 	/// assert_eq!(3, 3_u32.defensive_strict_min(4_u32));
 	/// ```
 	///
-	/// ```#[cfg_attr(debug_assertions, should_panic)]
+	/// ```should_panic
 	/// use frame_support::traits::DefensiveMin;
 	/// // min(4, 4) panics.
 	/// 4_u32.defensive_strict_min(4_u32);
@@ -552,7 +552,7 @@ pub trait DefensiveMax<T> {
 	/// assert_eq!(4, 4_u32.defensive_max(4_u32));
 	/// ```
 	///
-	/// ```#[cfg_attr(debug_assertions, should_panic)]
+	/// ```should_panic
 	/// use frame_support::traits::DefensiveMax;
 	/// // max(4, 5) panics.
 	/// 4_u32.defensive_max(5_u32);
@@ -569,7 +569,7 @@ pub trait DefensiveMax<T> {
 	/// assert_eq!(4, 4_u32.defensive_strict_max(3_u32));
 	/// ```
 	///
-	/// ```#[cfg_attr(debug_assertions, should_panic)]
+	/// ```should_panic
 	/// use frame_support::traits::DefensiveMax;
 	/// // max(4, 4) panics.
 	/// 4_u32.defensive_strict_max(4_u32);
diff --git a/substrate/frame/support/src/traits/try_runtime/decode_entire_state.rs b/substrate/frame/support/src/traits/try_runtime/decode_entire_state.rs
index 8dbeecd8e86..a7465c87fb2 100644
--- a/substrate/frame/support/src/traits/try_runtime/decode_entire_state.rs
+++ b/substrate/frame/support/src/traits/try_runtime/decode_entire_state.rs
@@ -197,7 +197,8 @@ impl<Prefix, Hasher, Key, Value, QueryKind, OnEmpty, MaxValues> TryDecodeEntireS
 		QueryKind,
 		OnEmpty,
 		MaxValues,
-	> where
+	>
+where
 	Prefix: CountedStorageMapInstance,
 	Hasher: StorageHasher,
 	Key: FullCodec,
@@ -229,7 +230,8 @@ impl<Prefix, Hasher1, Key1, Hasher2, Key2, Value, QueryKind, OnEmpty, MaxValues>
 		QueryKind,
 		OnEmpty,
 		MaxValues,
-	> where
+	>
+where
 	Prefix: StorageInstance,
 	Hasher1: StorageHasher,
 	Key1: FullCodec,
diff --git a/substrate/frame/support/test/tests/benchmark_ui/bad_return_type_blank_with_question.stderr b/substrate/frame/support/test/tests/benchmark_ui/bad_return_type_blank_with_question.stderr
index 7e0a02be649..04203e4b684 100644
--- a/substrate/frame/support/test/tests/benchmark_ui/bad_return_type_blank_with_question.stderr
+++ b/substrate/frame/support/test/tests/benchmark_ui/bad_return_type_blank_with_question.stderr
@@ -8,3 +8,7 @@ error[E0277]: the `?` operator can only be used in a function that returns `Resu
    |                    ^ cannot use the `?` operator in a function that returns `()`
    |
    = help: the trait `FromResidual<Result<Infallible, frame_benchmarking::BenchmarkError>>` is not implemented for `()`
+help: consider adding return type
+   |
+31 |     fn bench() -> Result<(), Box<dyn std::error::Error>> {
+   |                +++++++++++++++++++++++++++++++++++++++++
diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr
index b28cae2ddef..59e36775d46 100644
--- a/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr
+++ b/substrate/frame/support/test/tests/construct_runtime_ui/deprecated_where_block.stderr
@@ -53,7 +53,15 @@ note: required by a bound in `frame_system::Event`
    |                       ^^^^^^ required by this bound in `Event`
    = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEvent`
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 | construct_runtime! {
+   | ^ the trait `Config` is not implemented for `Runtime`
+   |
+   = note: this error originates in the macro `frame_support::construct_runtime` which comes from the expansion of the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `RawOrigin<_>: TryFrom<OriginCaller>` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -63,9 +71,12 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEven
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `RuntimeEvent`, the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeEvent: Sized`
+   | |_^ the trait `TryFrom<OriginCaller>` is not implemented for `RawOrigin<_>`
    |
-note: required because it appears within the type `RuntimeEvent`
+   = help: the trait `TryFrom<OriginCaller>` is implemented for `RawOrigin<<Runtime as Config>::AccountId>`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -75,15 +86,25 @@ note: required because it appears within the type `RuntimeEvent`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Clone`
-  --> $RUST/core/src/clone.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: Callable<Runtime>`
    |
-   | pub trait Clone: Sized {
-   |                  ^^^^^ required by this bound in `Clone`
-   = note: this error originates in the derive macro `Clone` which comes from the expansion of the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `Callable<T>` is implemented for `Pallet<T>`
+   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:26:3
+   |
+26 |         System: frame_system::{Pallet, Call, Storage, Config<T>, Event<T>},
+   |         ^^^^^^ the trait `Config` is not implemented for `Runtime`
+   |
+note: required by a bound in `GenesisConfig`
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub struct GenesisConfig<T: Config> {
+   |                                 ^^^^^^ required by this bound in `GenesisConfig`
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEvent`
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -93,9 +114,16 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEven
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `RuntimeEvent`, the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeEvent: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-note: required because it appears within the type `RuntimeEvent`
+note: required by a bound in `frame_system::Event`
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub enum Event<T: Config> {
+   |                       ^^^^^^ required by this bound in `Event`
+   = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0369]: binary operation `==` cannot be applied to type `&frame_system::Event<Runtime>`
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -106,14 +134,21 @@ note: required because it appears within the type `RuntimeEvent`
 27 | |     }
 28 | | }
    | |_^
-note: required by a bound in `EncodeLike`
-  --> $CARGO/parity-scale-codec-3.6.12/src/encode_like.rs
    |
-   | pub trait EncodeLike<T: Encode = Self>: Sized + Encode {}
-   |                                         ^^^^^ required by this bound in `EncodeLike`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: an implementation of `Config` might be missing for `Runtime`
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 | / construct_runtime! {
+21 | |     pub struct Runtime where
+   | |______________________^ must implement `Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the derive macro `PartialEq` which comes from the expansion of the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEvent`
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -123,9 +158,16 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEven
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `RuntimeEvent`, the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeEvent: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-note: required because it appears within the type `RuntimeEvent`
+note: required by a bound in `frame_system::Event`
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub enum Event<T: Config> {
+   |                       ^^^^^^ required by this bound in `Event`
+   = note: this error originates in the derive macro `Eq` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `frame_system::Event<Runtime>: Encode` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -135,15 +177,12 @@ note: required because it appears within the type `RuntimeEvent`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Decode`
-  --> $CARGO/parity-scale-codec-3.6.12/src/codec.rs
+   | |_^ the trait `Encode` is not implemented for `frame_system::Event<Runtime>`
    |
-   | pub trait Decode: Sized {
-   |                   ^^^^^ required by this bound in `Decode`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `Encode` is implemented for `frame_system::Event<T>`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Encode` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `frame_system::Event<Runtime>`
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -153,21 +192,16 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `frame_syste
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `frame_system::Event<Runtime>`, the trait `Config` is not implemented for `Runtime`, which is required by `frame_system::Event<Runtime>: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-note: required because it appears within the type `frame_system::Event<Runtime>`
+note: required by a bound in `frame_system::Event`
   --> $WORKSPACE/substrate/frame/system/src/lib.rs
    |
    |     pub enum Event<T: Config> {
-   |              ^^^^^
-note: required by a bound in `From`
-  --> $RUST/core/src/convert/mod.rs
-   |
-   | pub trait From<T>: Sized {
-   |                ^ required by this bound in `From`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   |                       ^^^^^^ required by this bound in `Event`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Encode` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `frame_system::Event<Runtime>`
+error[E0277]: the trait bound `frame_system::Event<Runtime>: Decode` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -177,29 +211,40 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `frame_syste
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `frame_system::Event<Runtime>`, the trait `Config` is not implemented for `Runtime`, which is required by `frame_system::Event<Runtime>: Sized`
+   | |_^ the trait `Decode` is not implemented for `frame_system::Event<Runtime>`
    |
-note: required because it appears within the type `frame_system::Event<Runtime>`
+   = help: the trait `Decode` is implemented for `frame_system::Event<T>`
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:26:11
+   |
+26 |         System: frame_system::{Pallet, Call, Storage, Config<T>, Event<T>},
+   |                 ^^^^^^^^^^^^ the trait `Config` is not implemented for `Runtime`
+   |
+note: required by a bound in `frame_system::Event`
   --> $WORKSPACE/substrate/frame/system/src/lib.rs
    |
    |     pub enum Event<T: Config> {
-   |              ^^^^^
-note: required by a bound in `TryInto`
-  --> $RUST/core/src/convert/mod.rs
-   |
-   | pub trait TryInto<T>: Sized {
-   |                   ^ required by this bound in `TryInto`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   |                       ^^^^^^ required by this bound in `Event`
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
-20 | construct_runtime! {
-   | ^ the trait `Config` is not implemented for `Runtime`
+20 | / construct_runtime! {
+21 | |     pub struct Runtime where
+22 | |         Block = Block,
+23 | |         NodeBlock = Block,
+...  |
+27 | |     }
+28 | | }
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `frame_system::Event<Runtime>: std::fmt::Debug`
    |
-   = note: this error originates in the macro `frame_support::construct_runtime` which comes from the expansion of the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `std::fmt::Debug` is implemented for `frame_system::Event<T>`
+   = note: required for `frame_system::Event<Runtime>` to implement `std::fmt::Debug`
+   = note: required for the cast from `&frame_system::Event<Runtime>` to `&dyn std::fmt::Debug`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::RuntimeDebug` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `RawOrigin<_>: TryFrom<OriginCaller>` is not satisfied
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -209,10 +254,12 @@ error[E0277]: the trait bound `RawOrigin<_>: TryFrom<OriginCaller>` is not satis
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `TryFrom<OriginCaller>` is not implemented for `RawOrigin<_>`
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `frame_system::Error<Runtime>: std::fmt::Debug`
    |
-   = help: the trait `TryFrom<OriginCaller>` is implemented for `RawOrigin<<Runtime as Config>::AccountId>`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `std::fmt::Debug` is implemented for `frame_system::Error<T>`
+   = note: required for `frame_system::Error<Runtime>` to implement `std::fmt::Debug`
+   = note: required for the cast from `&frame_system::Error<Runtime>` to `&dyn std::fmt::Debug`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::RuntimeDebug` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
@@ -224,11 +271,15 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: Callable<Runtime>`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-   = help: the trait `Callable<T>` is implemented for `Pallet<T>`
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:21:13
+   |
+21 |     pub struct Runtime where
+   |                ^^^^^^^ the trait `Config` is not implemented for `Runtime`
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
@@ -240,10 +291,12 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RawOrigin<_>: Into<_>`
    |
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+   = note: required for `RawOrigin<_>` to implement `Into<RuntimeOrigin>`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -253,13 +306,9 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Clone`
-  --> $RUST/core/src/clone.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-   | pub trait Clone: Sized {
-   |                  ^^^^^ required by this bound in `Clone`
-   = note: this error originates in the derive macro `Clone` which comes from the expansion of the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
@@ -271,10 +320,17 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::RuntimeDebug` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:26:11
+   |
+26 |         System: frame_system::{Pallet, Call, Storage, Config<T>, Event<T>},
+   |                 ^^^^^^^^^^^^ the trait `Config` is not implemented for `Runtime`
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -284,12 +340,10 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `EncodeLike`
-  --> $CARGO/parity-scale-codec-3.6.12/src/encode_like.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: PalletInfoAccess`
    |
-   | pub trait EncodeLike<T: Encode = Self>: Sized + Encode {}
-   |                                         ^^^^^ required by this bound in `EncodeLike`
+   = help: the trait `PalletInfoAccess` is implemented for `Pallet<T>`
+   = note: required for `Pallet<Runtime>` to implement `PalletInfoAccess`
    = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
@@ -302,10 +356,13 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: Callable<Runtime>`
    |
+   = help: the trait `Callable<T>` is implemented for `Pallet<T>`
    = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+   = note: this error originates in the derive macro `Clone` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -315,15 +372,13 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Decode`
-  --> $CARGO/parity-scale-codec-3.6.12/src/codec.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: Callable<Runtime>`
    |
-   | pub trait Decode: Sized {
-   |                   ^^^^^ required by this bound in `Decode`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `Callable<T>` is implemented for `Pallet<T>`
+   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
+   = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied
+error[E0369]: binary operation `==` cannot be applied to type `&frame_system::Call<Runtime>`
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -333,10 +388,22 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
+   | |_^
    |
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+note: an implementation of `Config` might be missing for `Runtime`
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 | / construct_runtime! {
+21 | |     pub struct Runtime where
+   | |______________________^ must implement `Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the derive macro `PartialEq` which comes from the expansion of the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `frame_system::Call<Runtime>: Encode` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -346,27 +413,31 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `frame_support::sp_runtime::traits::Dispatchable::Config`
-  --> $WORKSPACE/substrate/primitives/runtime/src/traits.rs
+   | |_^ the trait `Encode` is not implemented for `frame_system::Call<Runtime>`
    |
-   |     type Config;
-   |     ^^^^^^^^^^^^ required by this bound in `Dispatchable::Config`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `Encode` is implemented for `frame_system::Call<T>`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Encode` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
-  --> tests/construct_runtime_ui/deprecated_where_block.rs:26:3
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
-26 |         System: frame_system::{Pallet, Call, Storage, Config<T>, Event<T>},
-   |         ^^^^^^ the trait `Config` is not implemented for `Runtime`
+20 | / construct_runtime! {
+21 | |     pub struct Runtime where
+22 | |         Block = Block,
+23 | |         NodeBlock = Block,
+...  |
+27 | |     }
+28 | | }
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-note: required by a bound in `GenesisConfig`
+note: required by a bound in `frame_system::Call`
   --> $WORKSPACE/substrate/frame/system/src/lib.rs
    |
-   |     pub struct GenesisConfig<T: Config> {
-   |                                 ^^^^^^ required by this bound in `GenesisConfig`
+   |     #[pallet::call]
+   |               ^^^^ required by this bound in `Call`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Encode` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied
+error[E0277]: the trait bound `frame_system::Call<Runtime>: Decode` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -376,10 +447,12 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
+   | |_^ the trait `Decode` is not implemented for `frame_system::Call<Runtime>`
    |
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+   = help: the trait `Decode` is implemented for `frame_system::Call<T>`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -389,15 +462,256 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `frame_support::pallet_prelude::ValidateUnsigned::Call`
-  --> $WORKSPACE/substrate/primitives/runtime/src/traits.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `Pallet<Runtime>: Callable<Runtime>`
+   |
+   = help: the trait `Callable<T>` is implemented for `Pallet<T>`
+   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::RuntimeDebug` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the method `get_dispatch_info` exists for reference `&Call<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ method cannot be called on `&Call<Runtime>` due to unsatisfied trait bounds
+   |
+  ::: $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |        #[pallet::call]
+   |                  ---- doesn't satisfy `frame_system::Call<Runtime>: GetDispatchInfo`
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+           which is required by `frame_system::Call<Runtime>: GetDispatchInfo`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the method `is_feeless` exists for reference `&Call<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ method cannot be called on `&Call<Runtime>` due to unsatisfied trait bounds
+   |
+  ::: $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |        #[pallet::call]
+   |                  ---- doesn't satisfy `frame_system::Call<Runtime>: CheckIfFeeless`
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+           which is required by `frame_system::Call<Runtime>: CheckIfFeeless`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
    |
-   |     type Call;
-   |     ^^^^^^^^^^ required by this bound in `ValidateUnsigned::Call`
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEvent`
+error[E0599]: the method `get_call_name` exists for reference `&Call<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ method cannot be called on `&Call<Runtime>` due to unsatisfied trait bounds
+   |
+  ::: $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |        #[pallet::call]
+   |                  ---- doesn't satisfy `frame_system::Call<Runtime>: GetCallName`
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+           which is required by `frame_system::Call<Runtime>: GetCallName`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the function or associated item `storage_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the function or associated item `call_functions` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the variant or associated item `event_metadata` exists for enum `Event<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ variant or associated item cannot be called on `Event<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the function or associated item `pallet_constants_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the function or associated item `error_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0599]: the function or associated item `pallet_documentation_metadata` exists for struct `Pallet<Runtime>`, but its trait bounds were not satisfied
+  --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
+   |
+20 |    construct_runtime! {
+   |  __^
+   | | _|
+   | ||
+21 | ||     pub struct Runtime where
+   | ||______________________- doesn't satisfy `Runtime: Config`
+22 | |          Block = Block,
+23 | |          NodeBlock = Block,
+...  |
+27 | |      }
+28 | |  }
+   | |__^ function or associated item cannot be called on `Pallet<Runtime>` due to unsatisfied trait bounds
+   |
+   = note: the following trait bounds were not satisfied:
+           `Runtime: Config`
+note: the trait `Config` must be implemented
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub trait Config: 'static + Eq + Clone {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -407,9 +721,21 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEven
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `RuntimeEvent`, the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeEvent: Sized`
-   |
-note: required because it appears within the type `RuntimeEvent`
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `GenesisConfig<Runtime>: Serialize`
+   |
+   = help: the trait `Serialize` is implemented for `GenesisConfig<T>`
+   = note: required for `GenesisConfig<Runtime>` to implement `Serialize`
+note: required by a bound in `frame_support::sp_runtime::serde::ser::SerializeStruct::serialize_field`
+  --> $CARGO/serde-1.0.210/src/ser/mod.rs
+   |
+   |     fn serialize_field<T>(&mut self, key: &'static str, value: &T) -> Result<(), Self::Error>
+   |        --------------- required by a bound in this associated function
+   |     where
+   |         T: ?Sized + Serialize;
+   |                     ^^^^^^^^^ required by this bound in `SerializeStruct::serialize_field`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -419,15 +745,16 @@ note: required because it appears within the type `RuntimeEvent`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Result`
-  --> $RUST/core/src/result.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-   | pub enum Result<T, E> {
-   |                 ^ required by this bound in `Result`
-   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Decode` which comes from the expansion of the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+note: required by a bound in `GenesisConfig`
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub struct GenesisConfig<T: Config> {
+   |                                 ^^^^^^ required by this bound in `GenesisConfig`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEvent`
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -437,9 +764,16 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied in `RuntimeEven
 ...  |
 27 | |     }
 28 | | }
-   | |_^ within `RuntimeEvent`, the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeEvent: Sized`
+   | |_^ the trait `Config` is not implemented for `Runtime`
    |
-note: required because it appears within the type `RuntimeEvent`
+note: required by a bound in `GenesisConfig`
+  --> $WORKSPACE/substrate/frame/system/src/lib.rs
+   |
+   |     pub struct GenesisConfig<T: Config> {
+   |                                 ^^^^^^ required by this bound in `GenesisConfig`
+   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::serde::Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -449,13 +783,11 @@ note: required because it appears within the type `RuntimeEvent`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `TryInto`
-  --> $RUST/core/src/convert/mod.rs
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `GenesisConfig<Runtime>: std::default::Default`
    |
-   | pub trait TryInto<T>: Sized {
-   |                       ^^^^^ required by this bound in `TryInto`
-   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = help: the trait `std::default::Default` is implemented for `GenesisConfig<T>`
+   = note: required for `GenesisConfig<Runtime>` to implement `std::default::Default`
+   = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0277]: the trait bound `Runtime: Config` is not satisfied
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
@@ -467,10 +799,24 @@ error[E0277]: the trait bound `Runtime: Config` is not satisfied
 ...  |
 27 | |     }
 28 | | }
-   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `RuntimeCall: Sized`
-   |
-   = note: required for `Pallet<Runtime>` to implement `Callable<Runtime>`
-note: required because it appears within the type `RuntimeCall`
+   | |_^ the trait `Config` is not implemented for `Runtime`, which is required by `(Pallet<Runtime>,): OnGenesis`
+   |
+   = help: the following other types implement trait `OnGenesis`:
+             ()
+             (TupleElement0, TupleElement1)
+             (TupleElement0, TupleElement1, TupleElement2)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)
+           and $N others
+   = note: required for `Pallet<Runtime>` to implement `OnGenesis`
+   = note: 1 redundant requirement hidden
+   = note: required for `(Pallet<Runtime>,)` to implement `OnGenesis`
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0282]: type annotations needed
   --> tests/construct_runtime_ui/deprecated_where_block.rs:20:1
    |
 20 | / construct_runtime! {
@@ -480,10 +826,8 @@ note: required because it appears within the type `RuntimeCall`
 ...  |
 27 | |     }
 28 | | }
-   | |_^
-note: required by a bound in `Result`
-  --> $RUST/core/src/result.rs
+   | |_^ cannot infer type
    |
-   | pub enum Result<T, E> {
-   |                 ^ required by this bound in `Result`
-   = note: this error originates in the derive macro `self::sp_api_hidden_includes_construct_runtime::hidden_include::__private::codec::Decode` which comes from the expansion of the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+   = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: internal compiler error: compiler/rustc_middle/src/ty/normalize_erasing_regions.rs:168:90: Failed to normalize std::rc::Rc<std::boxed::Box<dyn [Binder { value: Trait(std::ops::Fn<(&<Runtime as frame_system::Config>::RuntimeCall,)>), bound_vars: [Region(BrAnon)] }, Binder { value: Projection(Output = bool), bound_vars: [Region(BrAnon)] }] + '{erased}, std::alloc::Global>, std::alloc::Global>, maybe try to call `try_normalize_erasing_regions` instead
diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_event_part.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_event_part.stderr
index 0f7afb2b990..c50cba71d4e 100644
--- a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_event_part.stderr
+++ b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_event_part.stderr
@@ -28,7 +28,7 @@ error[E0412]: cannot find type `Event` in module `pallet`
    | |_^ not found in `pallet`
    |
    = note: this error originates in the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing one of these items
+help: consider importing one of these enums
    |
 18 + use frame_support_test::Event;
    |
@@ -48,7 +48,7 @@ error[E0433]: failed to resolve: could not find `Event` in `pallet`
    | |_^ could not find `Event` in `pallet`
    |
    = note: this error originates in the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing one of these items
+help: consider importing one of these enums
    |
 18 + use frame_support_test::Event;
    |
diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_genesis_config_part.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_genesis_config_part.stderr
index 10093b26f5a..2aa794edc3c 100644
--- a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_genesis_config_part.stderr
+++ b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_genesis_config_part.stderr
@@ -28,7 +28,7 @@ error[E0412]: cannot find type `GenesisConfig` in module `pallet`
    | |_^ not found in `pallet`
    |
    = note: this error originates in the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing one of these items
+help: consider importing one of these structs
    |
 18 + use frame_system::GenesisConfig;
    |
diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_inherent_part.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_inherent_part.stderr
index 30005c07cb6..d8dc7bd45bc 100644
--- a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_inherent_part.stderr
+++ b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_inherent_part.stderr
@@ -54,8 +54,8 @@ error[E0599]: no function or associated item named `is_inherent` found for struc
    |
    = help: items from traits can only be used if the trait is implemented and in scope
    = note: the following traits define an item `is_inherent`, perhaps you need to implement one of them:
-           candidate #1: `ProvideInherent`
-           candidate #2: `IsInherent`
+           candidate #1: `IsInherent`
+           candidate #2: `ProvideInherent`
    = note: this error originates in the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error[E0599]: no function or associated item named `check_inherent` found for struct `pallet::Pallet` in the current scope
diff --git a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_origin_part.stderr b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_origin_part.stderr
index d0f4b44ab0d..58c42311b87 100644
--- a/substrate/frame/support/test/tests/construct_runtime_ui/undefined_origin_part.stderr
+++ b/substrate/frame/support/test/tests/construct_runtime_ui/undefined_origin_part.stderr
@@ -28,7 +28,7 @@ error[E0412]: cannot find type `Origin` in module `pallet`
    | |_^ not found in `pallet`
    |
    = note: this error originates in the macro `construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
-help: consider importing one of these items
+help: consider importing one of these type aliases
    |
 18 + use frame_support_test::Origin;
    |
diff --git a/substrate/frame/support/test/tests/derive_impl.rs b/substrate/frame/support/test/tests/derive_impl.rs
index 675e85f4bfc..3514593c856 100644
--- a/substrate/frame/support/test/tests/derive_impl.rs
+++ b/substrate/frame/support/test/tests/derive_impl.rs
@@ -25,15 +25,9 @@ struct SomeRectangle {}
 
 #[frame_support::register_default_impl(SomeRectangle)]
 impl Shape for SomeRectangle {
-	#[cfg(not(feature = "feature-frame-testing"))]
 	fn area(&self) -> u32 {
 		10
 	}
-
-	#[cfg(feature = "feature-frame-testing")]
-	fn area(&self) -> u32 {
-		0
-	}
 }
 
 struct SomeSquare {}
@@ -44,9 +38,5 @@ impl Shape for SomeSquare {}
 #[test]
 fn test_feature_parsing() {
 	let square = SomeSquare {};
-	#[cfg(not(feature = "feature-frame-testing"))]
 	assert_eq!(square.area(), 10);
-
-	#[cfg(feature = "feature-frame-testing")]
-	assert_eq!(square.area(), 0);
 }
diff --git a/substrate/frame/support/test/tests/derive_no_bound.rs b/substrate/frame/support/test/tests/derive_no_bound.rs
index b1914707805..6fc4ea12c51 100644
--- a/substrate/frame/support/test/tests/derive_no_bound.rs
+++ b/substrate/frame/support/test/tests/derive_no_bound.rs
@@ -159,6 +159,7 @@ fn test_struct_unnamed() {
 	PartialOrdNoBound,
 	OrdNoBound,
 )]
+#[allow(dead_code)]
 struct StructNoGenerics {
 	field1: u32,
 	field2: u64,
diff --git a/substrate/frame/support/test/tests/derive_no_bound_ui/ord.stderr b/substrate/frame/support/test/tests/derive_no_bound_ui/ord.stderr
index db8a5079607..8bf82bff780 100644
--- a/substrate/frame/support/test/tests/derive_no_bound_ui/ord.stderr
+++ b/substrate/frame/support/test/tests/derive_no_bound_ui/ord.stderr
@@ -23,3 +23,13 @@ note: required by a bound in `std::cmp::Eq`
    |
    | pub trait Eq: PartialEq<Self> {
    |               ^^^^^^^^^^^^^^^ required by this bound in `Eq`
+
+error[E0599]: `<T as Config>::C` is not an iterator
+  --> tests/derive_no_bound_ui/ord.rs:24:2
+   |
+24 |     c: T::C,
+   |     ^ `<T as Config>::C` is not an iterator
+   |
+   = note: the following trait bounds were not satisfied:
+           `<T as Config>::C: Iterator`
+           which is required by `&mut <T as Config>::C: Iterator`
diff --git a/substrate/frame/support/test/tests/pallet.rs b/substrate/frame/support/test/tests/pallet.rs
index 7f1ce0556ea..3d6aa1d8374 100644
--- a/substrate/frame/support/test/tests/pallet.rs
+++ b/substrate/frame/support/test/tests/pallet.rs
@@ -2431,9 +2431,10 @@ fn post_runtime_upgrade_detects_storage_version_issues() {
 		// any storage version "enabled".
 		assert!(
 			ExecutiveWithUpgradePallet4::try_runtime_upgrade(UpgradeCheckSelect::PreAndPost)
-				.unwrap_err() == "On chain storage version set, while the pallet \
+				.unwrap_err() ==
+				"On chain storage version set, while the pallet \
 				doesn't have the `#[pallet::storage_version(VERSION)]` attribute."
-				.into()
+					.into()
 		);
 	});
 }
diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
index 2a4ceecd8fa..1f91f774023 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound.stderr
@@ -33,3 +33,12 @@ error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Co
    |
 38 |         pub fn foo(origin: OriginFor<T>, _bar: T::Bar) -> DispatchResultWithPostInfo {
    |                                          ^^^^
+
+error: unused variable: `origin`
+  --> tests/pallet_ui/call_argument_invalid_bound.rs:38:14
+   |
+38 |         pub fn foo(origin: OriginFor<T>, _bar: T::Bar) -> DispatchResultWithPostInfo {
+   |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin`
+   |
+   = note: `-D unused-variables` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unused_variables)]`
diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
index fc993e9ff68..4657c0a0c60 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_2.stderr
@@ -34,7 +34,7 @@ error[E0369]: binary operation `==` cannot be applied to type `&<T as pallet::Co
 38 |         pub fn foo(origin: OriginFor<T>, _bar: T::Bar) -> DispatchResultWithPostInfo {
    |                                          ^^^^
 
-error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeEncode` is not satisfied
+error[E0277]: the trait bound `<T as pallet::Config>::Bar: Encode` is not satisfied
   --> tests/pallet_ui/call_argument_invalid_bound_2.rs:38:36
    |
 18 | #[frame_support::pallet]
@@ -45,10 +45,19 @@ error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeEncode` is
    |
    = note: required for `<T as pallet::Config>::Bar` to implement `Encode`
 
-error[E0277]: the trait bound `<T as pallet::Config>::Bar: WrapperTypeDecode` is not satisfied
+error[E0277]: the trait bound `<T as pallet::Config>::Bar: Decode` is not satisfied
   --> tests/pallet_ui/call_argument_invalid_bound_2.rs:38:42
    |
 38 |         pub fn foo(origin: OriginFor<T>, _bar: T::Bar) -> DispatchResultWithPostInfo {
    |                                                ^^^^^^ the trait `WrapperTypeDecode` is not implemented for `<T as pallet::Config>::Bar`, which is required by `<T as pallet::Config>::Bar: Decode`
    |
    = note: required for `<T as pallet::Config>::Bar` to implement `Decode`
+
+error: unused variable: `origin`
+  --> tests/pallet_ui/call_argument_invalid_bound_2.rs:38:14
+   |
+38 |         pub fn foo(origin: OriginFor<T>, _bar: T::Bar) -> DispatchResultWithPostInfo {
+   |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin`
+   |
+   = note: `-D unused-variables` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unused_variables)]`
diff --git a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
index d6486a49079..f829baeb4c1 100644
--- a/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/call_argument_invalid_bound_3.stderr
@@ -27,3 +27,12 @@ help: consider annotating `Bar` with `#[derive(Debug)]`
 34 +     #[derive(Debug)]
 35 |     struct Bar;
    |
+
+error: unused variable: `origin`
+  --> tests/pallet_ui/call_argument_invalid_bound_3.rs:40:14
+   |
+40 |         pub fn foo(origin: OriginFor<T>, _bar: Bar) -> DispatchResultWithPostInfo {
+   |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin`
+   |
+   = note: `-D unused-variables` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unused_variables)]`
diff --git a/substrate/frame/support/test/tests/pallet_ui/compare_unset_storage_version.stderr b/substrate/frame/support/test/tests/pallet_ui/compare_unset_storage_version.stderr
index 3256e69528a..8049c07648c 100644
--- a/substrate/frame/support/test/tests/pallet_ui/compare_unset_storage_version.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/compare_unset_storage_version.stderr
@@ -5,3 +5,9 @@ error[E0369]: binary operation `!=` cannot be applied to type `NoStorageVersionS
    |                ------------------------------- ^^ -------------------------------- StorageVersion
    |                |
    |                NoStorageVersionSet
+   |
+note: the foreign item type `NoStorageVersionSet` doesn't implement `PartialEq<StorageVersion>`
+  --> $WORKSPACE/substrate/frame/support/src/traits/metadata.rs
+   |
+   | pub struct NoStorageVersionSet;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not implement `PartialEq<StorageVersion>`
diff --git a/substrate/frame/support/test/tests/pallet_ui/dev_mode_without_arg_max_encoded_len.stderr b/substrate/frame/support/test/tests/pallet_ui/dev_mode_without_arg_max_encoded_len.stderr
index 629fefebbe2..2fcc3328214 100644
--- a/substrate/frame/support/test/tests/pallet_ui/dev_mode_without_arg_max_encoded_len.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/dev_mode_without_arg_max_encoded_len.stderr
@@ -38,13 +38,13 @@ error[E0277]: the trait bound `Vec<u8>: MaxEncodedLen` is not satisfied
    | |__________________^ the trait `MaxEncodedLen` is not implemented for `Vec<u8>`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageMyStorage<T>, Vec<u8>>: StorageInfoTrait`
    |
    = help: the following other types implement trait `MaxEncodedLen`:
-             bool
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
-             u16
+             ()
+             (TupleElement0, TupleElement1)
+             (TupleElement0, TupleElement1, TupleElement2)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)
            and $N others
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageMyStorage<T>, Vec<u8>>` to implement `StorageInfoTrait`
diff --git a/substrate/frame/support/test/tests/pallet_ui/error_does_not_derive_pallet_error.stderr b/substrate/frame/support/test/tests/pallet_ui/error_does_not_derive_pallet_error.stderr
index 44d8d3fcadb..92fb5b9cb38 100644
--- a/substrate/frame/support/test/tests/pallet_ui/error_does_not_derive_pallet_error.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/error_does_not_derive_pallet_error.stderr
@@ -5,12 +5,12 @@ error[E0277]: the trait bound `MyError: PalletError` is not satisfied
    |                     ^^^^^^^^^^^^^^ the trait `PalletError` is not implemented for `MyError`
    |
    = help: the following other types implement trait `PalletError`:
-             bool
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
-             u16
+             ()
+             (TupleElement0, TupleElement1)
+             (TupleElement0, TupleElement1, TupleElement2)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)
            and $N others
diff --git a/substrate/frame/support/test/tests/pallet_ui/hooks_invalid_item.stderr b/substrate/frame/support/test/tests/pallet_ui/hooks_invalid_item.stderr
index b7327943ee2..c04499dbbd1 100644
--- a/substrate/frame/support/test/tests/pallet_ui/hooks_invalid_item.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/hooks_invalid_item.stderr
@@ -13,3 +13,9 @@ help: add missing generic argument
    |
 29 |     impl<T: Config> Hooks<BlockNumber> for Pallet<T> {}
    |                          +++++++++++++
+
+error[E0277]: the trait bound `pallet::Pallet<T>: Hooks<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not satisfied
+  --> tests/pallet_ui/hooks_invalid_item.rs:28:12
+   |
+28 |     #[pallet::hooks]
+   |               ^^^^^ the trait `Hooks<<<<T as frame_system::Config>::Block as frame_support::sp_runtime::traits::Block>::Header as frame_support::sp_runtime::traits::Header>::Number>` is not implemented for `pallet::Pallet<T>`
diff --git a/substrate/frame/support/test/tests/pallet_ui/inherent_check_inner_span.stderr b/substrate/frame/support/test/tests/pallet_ui/inherent_check_inner_span.stderr
index 5ea3be470a0..516bddd2c61 100644
--- a/substrate/frame/support/test/tests/pallet_ui/inherent_check_inner_span.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/inherent_check_inner_span.stderr
@@ -6,6 +6,6 @@ error[E0046]: not all trait items implemented, missing: `Call`, `Error`, `INHERE
    |
    = help: implement the missing item: `type Call = /* Type */;`
    = help: implement the missing item: `type Error = /* Type */;`
-   = help: implement the missing item: `const INHERENT_IDENTIFIER: [u8; 8] = value;`
+   = help: implement the missing item: `const INHERENT_IDENTIFIER: [u8; 8] = [42; 8];`
    = help: implement the missing item: `fn create_inherent(_: &InherentData) -> std::option::Option<<Self as ProvideInherent>::Call> { todo!() }`
    = help: implement the missing item: `fn is_inherent(_: &<Self as ProvideInherent>::Call) -> bool { todo!() }`
diff --git a/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr b/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr
index c8c41e80501..fa6b7284d88 100644
--- a/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr
@@ -12,10 +12,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `PartialStorageInfoTrait`
@@ -34,14 +34,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -61,14 +61,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
@@ -84,14 +84,14 @@ error[E0277]: the trait bound `Bar: TypeInfo` is not satisfied
    | |____________^ the trait `TypeInfo` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `TypeInfo`:
-             bool
-             char
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
+             &T
+             &mut T
+             ()
+             (A, B)
+             (A, B, C)
+             (A, B, C, D)
+             (A, B, C, D, E)
+             (A, B, C, D, E, F)
            and $N others
    = note: required for `Bar` to implement `StaticTypeInfo`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `StorageEntryMetadataBuilder`
@@ -105,10 +105,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `StorageEntryMetadataBuilder`
@@ -122,14 +122,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -144,14 +144,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
@@ -167,10 +167,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `TryDecodeEntireStorage`
@@ -184,14 +184,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -206,14 +206,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
diff --git a/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr b/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr
index 08b35eb8ed1..944b194b7bc 100644
--- a/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr
@@ -12,10 +12,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `PartialStorageInfoTrait`
@@ -34,14 +34,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -61,14 +61,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: PartialStorageInfoTrait`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
@@ -84,14 +84,14 @@ error[E0277]: the trait bound `Bar: TypeInfo` is not satisfied
    | |____________^ the trait `TypeInfo` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `TypeInfo`:
-             bool
-             char
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
+             &T
+             &mut T
+             ()
+             (A, B)
+             (A, B, C)
+             (A, B, C, D)
+             (A, B, C, D, E)
+             (A, B, C, D, E, F)
            and $N others
    = note: required for `Bar` to implement `StaticTypeInfo`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `StorageEntryMetadataBuilder`
@@ -105,10 +105,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `StorageEntryMetadataBuilder`
@@ -122,14 +122,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -144,14 +144,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageEntryMetadataBuilder`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
@@ -167,10 +167,10 @@ error[E0277]: the trait bound `Bar: WrapperTypeDecode` is not satisfied
    | |____________^ the trait `WrapperTypeDecode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `WrapperTypeDecode`:
+             Arc<T>
              Box<T>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
+             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
    = note: required for `Bar` to implement `Decode`
    = note: required for `Bar` to implement `FullCodec`
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `TryDecodeEntireStorage`
@@ -184,14 +184,14 @@ error[E0277]: the trait bound `Bar: EncodeLike` is not satisfied
    | |____________^ the trait `EncodeLike` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `EncodeLike<T>`:
-             <bool as EncodeLike>
-             <i8 as EncodeLike>
-             <i16 as EncodeLike>
-             <i32 as EncodeLike>
-             <i64 as EncodeLike>
-             <i128 as EncodeLike>
-             <u8 as EncodeLike>
-             <u16 as EncodeLike>
+             `&&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike<T>`
+             `&T` implements `EncodeLike`
+             `&[(K, V)]` implements `EncodeLike<BTreeMap<LikeK, LikeV>>`
+             `&[(T,)]` implements `EncodeLike<BTreeSet<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<BinaryHeap<LikeT>>`
+             `&[(T,)]` implements `EncodeLike<LinkedList<LikeT>>`
+             `&[T]` implements `EncodeLike<Vec<U>>`
            and $N others
    = note: required for `Bar` to implement `FullEncode`
    = note: required for `Bar` to implement `FullCodec`
@@ -206,14 +206,14 @@ error[E0277]: the trait bound `Bar: WrapperTypeEncode` is not satisfied
    | |____________^ the trait `WrapperTypeEncode` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: TryDecodeEntireStorage`
    |
    = help: the following other types implement trait `WrapperTypeEncode`:
+             &T
+             &mut T
+             Arc<T>
              Box<T>
-             bytes::bytes::Bytes
              Cow<'a, T>
-             parity_scale_codec::Ref<'a, T, U>
-             frame_support::sp_runtime::sp_application_crypto::sp_core::Bytes
              Rc<T>
-             Arc<T>
              Vec<T>
+             bytes::bytes::Bytes
            and $N others
    = note: required for `Bar` to implement `Encode`
    = note: required for `Bar` to implement `FullEncode`
diff --git a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied.stderr b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied.stderr
index 042a6f67fd3..95ec76e29c0 100644
--- a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied.stderr
@@ -12,13 +12,13 @@ error[E0277]: the trait bound `Bar: MaxEncodedLen` is not satisfied
    | |____________^ the trait `MaxEncodedLen` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>: StorageInfoTrait`
    |
    = help: the following other types implement trait `MaxEncodedLen`:
-             bool
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
-             u16
+             ()
+             (TupleElement0, TupleElement1)
+             (TupleElement0, TupleElement1, TupleElement2)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)
            and $N others
    = note: required for `frame_support::pallet_prelude::StorageValue<_GeneratedPrefixForStorageFoo<T>, Bar>` to implement `StorageInfoTrait`
diff --git a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
index 9f57b85f3a8..8351dd92d59 100644
--- a/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/storage_info_unsatisfied_nmap.stderr
@@ -12,14 +12,14 @@ error[E0277]: the trait bound `Bar: MaxEncodedLen` is not satisfied
    | |____________^ the trait `MaxEncodedLen` is not implemented for `Bar`, which is required by `frame_support::pallet_prelude::StorageNMap<_GeneratedPrefixForStorageFoo<T>, NMapKey<frame_support::Twox64Concat, Bar>, u32>: StorageInfoTrait`
    |
    = help: the following other types implement trait `MaxEncodedLen`:
-             bool
-             i8
-             i16
-             i32
-             i64
-             i128
-             u8
-             u16
+             ()
+             (TupleElement0, TupleElement1)
+             (TupleElement0, TupleElement1, TupleElement2)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6)
+             (TupleElement0, TupleElement1, TupleElement2, TupleElement3, TupleElement4, TupleElement5, TupleElement6, TupleElement7)
            and $N others
    = note: required for `NMapKey<frame_support::Twox64Concat, Bar>` to implement `KeyGeneratorMaxEncodedLen`
    = note: required for `frame_support::pallet_prelude::StorageNMap<_GeneratedPrefixForStorageFoo<T>, NMapKey<frame_support::Twox64Concat, Bar>, u32>` to implement `StorageInfoTrait`
diff --git a/substrate/frame/support/test/tests/pallet_ui/type_value_error_in_block.stderr b/substrate/frame/support/test/tests/pallet_ui/type_value_error_in_block.stderr
index 41dcd273d96..0b13dcff90c 100644
--- a/substrate/frame/support/test/tests/pallet_ui/type_value_error_in_block.stderr
+++ b/substrate/frame/support/test/tests/pallet_ui/type_value_error_in_block.stderr
@@ -3,3 +3,9 @@ error[E0599]: no function or associated item named `new` found for type `u32` in
    |
 37 |         u32::new()
    |              ^^^ function or associated item not found in `u32`
+   |
+help: there is a method `ne` with a similar name, but with different arguments
+  --> $RUST/core/src/cmp.rs
+   |
+   |     fn ne(&self, other: &Rhs) -> bool {
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/substrate/frame/system/src/tests.rs b/substrate/frame/system/src/tests.rs
index 534ba1e863f..aa1094e3fe4 100644
--- a/substrate/frame/system/src/tests.rs
+++ b/substrate/frame/system/src/tests.rs
@@ -848,6 +848,7 @@ pub fn from_post_weight_info(ref_time: Option<u64>, pays_fee: Pays) -> PostDispa
 #[docify::export]
 #[test]
 fn last_runtime_upgrade_spec_version_usage() {
+	#[allow(dead_code)]
 	struct Migration;
 
 	impl OnRuntimeUpgrade for Migration {
diff --git a/substrate/frame/transaction-payment/src/tests.rs b/substrate/frame/transaction-payment/src/tests.rs
index 35d5322a6f3..bac89967d6a 100644
--- a/substrate/frame/transaction-payment/src/tests.rs
+++ b/substrate/frame/transaction-payment/src/tests.rs
@@ -273,8 +273,10 @@ fn signed_ext_length_fee_is_also_updated_per_congestion() {
 			NextFeeMultiplier::<Runtime>::put(Multiplier::saturating_from_rational(3, 2));
 			let len = 10;
 
-			assert_ok!(ChargeTransactionPayment::<Runtime>::from(10) // tipped
-				.pre_dispatch(&1, CALL, &info_from_weight(Weight::from_parts(3, 0)), len));
+			assert_ok!(
+				ChargeTransactionPayment::<Runtime>::from(10) // tipped
+					.pre_dispatch(&1, CALL, &info_from_weight(Weight::from_parts(3, 0)), len)
+			);
 			assert_eq!(
 				Balances::free_balance(1),
 				100 // original
diff --git a/substrate/frame/utility/src/lib.rs b/substrate/frame/utility/src/lib.rs
index ed5544fe55c..a4f66298f3f 100644
--- a/substrate/frame/utility/src/lib.rs
+++ b/substrate/frame/utility/src/lib.rs
@@ -134,8 +134,8 @@ pub mod pallet {
 		fn batched_calls_limit() -> u32 {
 			let allocator_limit = sp_core::MAX_POSSIBLE_ALLOCATION;
 			let call_size = ((core::mem::size_of::<<T as Config>::RuntimeCall>() as u32 +
-				CALL_ALIGN - 1) / CALL_ALIGN) *
-				CALL_ALIGN;
+				CALL_ALIGN - 1) /
+				CALL_ALIGN) * CALL_ALIGN;
 			// The margin to take into account vec doubling capacity.
 			let margin_factor = 3;
 
diff --git a/substrate/frame/vesting/src/tests.rs b/substrate/frame/vesting/src/tests.rs
index 004da0dfbfa..57cb59f27a4 100644
--- a/substrate/frame/vesting/src/tests.rs
+++ b/substrate/frame/vesting/src/tests.rs
@@ -182,7 +182,7 @@ fn unvested_balance_should_not_transfer() {
 	ExtBuilder::default().existential_deposit(10).build().execute_with(|| {
 		let user1_free_balance = Balances::free_balance(&1);
 		assert_eq!(user1_free_balance, 100); // Account 1 has free balance
-									 // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
+									   // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
 		assert_eq!(Vesting::vesting_balance(&1), Some(45));
 		// Account 1 cannot send more than vested amount...
 		assert_noop!(Balances::transfer_allow_death(Some(1).into(), 2, 56), TokenError::Frozen);
@@ -194,7 +194,7 @@ fn vested_balance_should_transfer() {
 	ExtBuilder::default().existential_deposit(10).build().execute_with(|| {
 		let user1_free_balance = Balances::free_balance(&1);
 		assert_eq!(user1_free_balance, 100); // Account 1 has free balance
-									 // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
+									   // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
 		assert_eq!(Vesting::vesting_balance(&1), Some(45));
 		assert_ok!(Vesting::vest(Some(1).into()));
 		assert_ok!(Balances::transfer_allow_death(Some(1).into(), 2, 55));
@@ -232,7 +232,7 @@ fn vested_balance_should_transfer_using_vest_other() {
 	ExtBuilder::default().existential_deposit(10).build().execute_with(|| {
 		let user1_free_balance = Balances::free_balance(&1);
 		assert_eq!(user1_free_balance, 100); // Account 1 has free balance
-									 // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
+									   // Account 1 has only 5 units vested at block 1 (plus 50 unvested)
 		assert_eq!(Vesting::vesting_balance(&1), Some(45));
 		assert_ok!(Vesting::vest_other(Some(2).into(), 1));
 		assert_ok!(Balances::transfer_allow_death(Some(1).into(), 2, 55));
@@ -286,7 +286,7 @@ fn extra_balance_should_transfer() {
 		assert_eq!(Vesting::vesting_balance(&2), Some(200));
 		assert_ok!(Vesting::vest(Some(2).into()));
 		assert_ok!(Balances::transfer_allow_death(Some(2).into(), 3, 100)); // Account 2 can send extra
-		                                                            // units gained
+		                                                              // units gained
 	});
 }
 
@@ -296,7 +296,7 @@ fn liquid_funds_should_transfer_with_delayed_vesting() {
 		let user12_free_balance = Balances::free_balance(&12);
 
 		assert_eq!(user12_free_balance, 2560); // Account 12 has free balance
-									   // Account 12 has liquid funds
+										 // Account 12 has liquid funds
 		assert_eq!(Vesting::vesting_balance(&12), Some(user12_free_balance - 256 * 5));
 
 		// Account 12 has delayed vesting
diff --git a/substrate/primitives/api/test/Cargo.toml b/substrate/primitives/api/test/Cargo.toml
index 121ce6b9993..1d21f23eb80 100644
--- a/substrate/primitives/api/test/Cargo.toml
+++ b/substrate/primitives/api/test/Cargo.toml
@@ -41,3 +41,4 @@ harness = false
 
 [features]
 "enable-staging-api" = []
+disable-ui-tests = []
diff --git a/substrate/primitives/api/test/tests/trybuild.rs b/substrate/primitives/api/test/tests/trybuild.rs
index b0a334eb7a2..b13e5df9d6f 100644
--- a/substrate/primitives/api/test/tests/trybuild.rs
+++ b/substrate/primitives/api/test/tests/trybuild.rs
@@ -15,18 +15,20 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use std::env;
-
 #[rustversion::attr(not(stable), ignore)]
+#[cfg(not(feature = "disable-ui-tests"))]
 #[test]
 fn ui() {
 	// Only run the ui tests when `RUN_UI_TESTS` is set.
-	if env::var("RUN_UI_TESTS").is_err() {
+	if std::env::var("RUN_UI_TESTS").is_err() {
 		return
 	}
 
 	// As trybuild is using `cargo check`, we don't need the real WASM binaries.
-	env::set_var("SKIP_WASM_BUILD", "1");
+	std::env::set_var("SKIP_WASM_BUILD", "1");
+
+	// Warnings are part of our UI.
+	std::env::set_var("RUSTFLAGS", "--deny warnings");
 
 	let t = trybuild::TestCases::new();
 	t.compile_fail("tests/ui/*.rs");
diff --git a/substrate/primitives/api/test/tests/ui/deprecation_info.stderr b/substrate/primitives/api/test/tests/ui/deprecation_info.stderr
index 2466c3ea5d5..78c687e876d 100644
--- a/substrate/primitives/api/test/tests/ui/deprecation_info.stderr
+++ b/substrate/primitives/api/test/tests/ui/deprecation_info.stderr
@@ -12,6 +12,21 @@ error: Invalid deprecation attribute: missing `note`
 20 |         #[deprecated(unknown_kw = "test")]
    |         ^
 
+error: malformed `deprecated` attribute input
+  --> tests/ui/deprecation_info.rs:24:3
+   |
+24 |         #[deprecated = 5]
+   |         ^^^^^^^^^^^^^^^^^
+   |
+help: the following are the possible correct uses
+   |
+24 |         #[deprecated = "reason"]
+   |
+24 |         #[deprecated(/*opt*/ since = "version", /*opt*/ note = "reason")]
+   |
+24 |         #[deprecated]
+   |
+
 error[E0541]: unknown meta item 'unknown_kw'
   --> tests/ui/deprecation_info.rs:20:16
    |
diff --git a/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr b/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
index 535bbb178d5..d625020fe4d 100644
--- a/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
+++ b/substrate/primitives/api/test/tests/ui/impl_incorrect_method_signature.stderr
@@ -22,10 +22,7 @@ error[E0053]: method `test` has an incompatible type for trait
   --> tests/ui/impl_incorrect_method_signature.rs:33:17
    |
 33 |         fn test(data: String) {}
-   |                       ^^^^^^
-   |                       |
-   |                       expected `u64`, found `std::string::String`
-   |                       help: change the parameter type to match the trait: `u64`
+   |                       ^^^^^^ expected `u64`, found `std::string::String`
    |
 note: type in trait
   --> tests/ui/impl_incorrect_method_signature.rs:27:17
@@ -34,6 +31,10 @@ note: type in trait
    |                       ^^^
    = note: expected signature `fn(u64)`
               found signature `fn(std::string::String)`
+help: change the parameter type to match the trait
+   |
+33 |         fn test(data: u64) {}
+   |                       ~~~
 
 error[E0308]: mismatched types
   --> tests/ui/impl_incorrect_method_signature.rs:33:11
@@ -53,3 +54,12 @@ note: associated function defined here
    |
 27 |         fn test(data: u64);
    |            ^^^^
+
+error: unused variable: `data`
+  --> tests/ui/impl_incorrect_method_signature.rs:33:11
+   |
+33 |         fn test(data: String) {}
+   |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
+   |
+   = note: `-D unused-variables` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unused_variables)]`
diff --git a/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr b/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
index 84575577187..764a0bafaa4 100644
--- a/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
+++ b/substrate/primitives/api/test/tests/ui/mock_only_self_reference.stderr
@@ -21,8 +21,7 @@ error[E0050]: method `test` has 2 parameters but the declaration in trait `Api::
 29 | / sp_api::mock_impl_runtime_apis! {
 30 | |     impl Api<Block> for MockApi {
 31 | |         fn test(self, data: u64) {}
-32 | |
-33 | |         fn test2(&mut self, data: u64) {}
+...  |
 34 | |     }
 35 | | }
    | |_^ expected 3 parameters, found 2
@@ -41,8 +40,7 @@ error[E0050]: method `test2` has 2 parameters but the declaration in trait `Api:
 29 | / sp_api::mock_impl_runtime_apis! {
 30 | |     impl Api<Block> for MockApi {
 31 | |         fn test(self, data: u64) {}
-32 | |
-33 | |         fn test2(&mut self, data: u64) {}
+...  |
 34 | |     }
 35 | | }
    | |_^ expected 3 parameters, found 2
diff --git a/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr b/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
index f4e0f3b0afb..26be311c02f 100644
--- a/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
+++ b/substrate/primitives/api/test/tests/ui/type_reference_in_impl_runtime_apis_call.stderr
@@ -22,10 +22,7 @@ error[E0053]: method `test` has an incompatible type for trait
   --> tests/ui/type_reference_in_impl_runtime_apis_call.rs:33:17
    |
 33 |         fn test(data: &u64) {
-   |                       ^^^^
-   |                       |
-   |                       expected `u64`, found `&u64`
-   |                       help: change the parameter type to match the trait: `u64`
+   |                       ^^^^ expected `u64`, found `&u64`
    |
 note: type in trait
   --> tests/ui/type_reference_in_impl_runtime_apis_call.rs:27:17
@@ -34,6 +31,10 @@ note: type in trait
    |                       ^^^
    = note: expected signature `fn(_)`
               found signature `fn(&_)`
+help: change the parameter type to match the trait
+   |
+33 |         fn test(data: u64) {
+   |                       ~~~
 
 error[E0308]: mismatched types
   --> tests/ui/type_reference_in_impl_runtime_apis_call.rs:33:11
@@ -57,3 +58,12 @@ help: consider removing the borrow
    |
 33 |         fn test(data: &u64) {
    |
+
+error: unused variable: `data`
+  --> tests/ui/type_reference_in_impl_runtime_apis_call.rs:33:11
+   |
+33 |         fn test(data: &u64) {
+   |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
+   |
+   = note: `-D unused-variables` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unused_variables)]`
diff --git a/substrate/primitives/runtime-interface/tests/ui.rs b/substrate/primitives/runtime-interface/tests/ui.rs
index 821d0b73f26..408ddbc981e 100644
--- a/substrate/primitives/runtime-interface/tests/ui.rs
+++ b/substrate/primitives/runtime-interface/tests/ui.rs
@@ -15,18 +15,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use std::env;
-
 #[rustversion::attr(not(stable), ignore)]
 #[test]
 fn ui() {
 	// Only run the ui tests when `RUN_UI_TESTS` is set.
-	if env::var("RUN_UI_TESTS").is_err() {
+	if std::env::var("RUN_UI_TESTS").is_err() {
 		return
 	}
 
 	// As trybuild is using `cargo check`, we don't need the real WASM binaries.
-	env::set_var("SKIP_WASM_BUILD", "1");
+	std::env::set_var("SKIP_WASM_BUILD", "1");
 
 	let t = trybuild::TestCases::new();
 	t.compile_fail("tests/ui/*.rs");
diff --git a/substrate/primitives/runtime-interface/tests/ui/no_feature_gated_method.stderr b/substrate/primitives/runtime-interface/tests/ui/no_feature_gated_method.stderr
index 10012ede793..1c1649d011e 100644
--- a/substrate/primitives/runtime-interface/tests/ui/no_feature_gated_method.stderr
+++ b/substrate/primitives/runtime-interface/tests/ui/no_feature_gated_method.stderr
@@ -9,9 +9,41 @@ note: found an item that was configured out
    |
 25 |     fn bar() {}
    |        ^^^
-   = note: the item is gated behind the `bar-feature` feature
+note: the item is gated behind the `bar-feature` feature
+  --> tests/ui/no_feature_gated_method.rs:24:8
+   |
+24 |     #[cfg(feature = "bar-feature")]
+   |           ^^^^^^^^^^^^^^^^^^^^^^^
 note: found an item that was configured out
   --> tests/ui/no_feature_gated_method.rs:25:5
    |
 25 |     fn bar() {}
    |        ^^^
+note: the item is gated here
+  --> tests/ui/no_feature_gated_method.rs:20:1
+   |
+20 | #[runtime_interface]
+   | ^^^^^^^^^^^^^^^^^^^^
+   = note: this error originates in the attribute macro `runtime_interface` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: unexpected `cfg` condition value: `bar-feature`
+  --> tests/ui/no_feature_gated_method.rs:24:8
+   |
+24 |     #[cfg(feature = "bar-feature")]
+   |           ^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: expected values for `feature` are: `default`, `disable_target_static_assertions`, and `std`
+   = help: consider adding `bar-feature` as a feature in `Cargo.toml`
+   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
+   = note: `-D unexpected-cfgs` implied by `-D warnings`
+   = help: to override `-D warnings` add `#[allow(unexpected_cfgs)]`
+
+error: unexpected `cfg` condition value: `bar-feature`
+  --> tests/ui/no_feature_gated_method.rs:27:12
+   |
+27 |     #[cfg(not(feature = "bar-feature"))]
+   |               ^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: expected values for `feature` are: `default`, `disable_target_static_assertions`, and `std`
+   = help: consider adding `bar-feature` as a feature in `Cargo.toml`
+   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
diff --git a/substrate/primitives/runtime/src/traits.rs b/substrate/primitives/runtime/src/traits.rs
index 25ef15eaf56..fc63bc76dec 100644
--- a/substrate/primitives/runtime/src/traits.rs
+++ b/substrate/primitives/runtime/src/traits.rs
@@ -2342,8 +2342,6 @@ impl BlockNumberProvider for () {
 mod tests {
 	use super::*;
 	use crate::codec::{Decode, Encode, Input};
-	#[cfg(feature = "bls-experimental")]
-	use sp_core::{bls377, bls381};
 	use sp_core::{
 		crypto::{Pair, UncheckedFrom},
 		ecdsa, ed25519, sr25519,
@@ -2486,14 +2484,4 @@ mod tests {
 	fn ecdsa_verify_works() {
 		signature_verify_test!(ecdsa);
 	}
-
-	#[cfg(feature = "bls-experimental")]
-	fn bls377_verify_works() {
-		signature_verify_test!(bls377)
-	}
-
-	#[cfg(feature = "bls-experimental")]
-	fn bls381_verify_works() {
-		signature_verify_test!(bls381)
-	}
 }
diff --git a/substrate/primitives/state-machine/src/ext.rs b/substrate/primitives/state-machine/src/ext.rs
index 7a79c4e8a1f..baad7e621be 100644
--- a/substrate/primitives/state-machine/src/ext.rs
+++ b/substrate/primitives/state-machine/src/ext.rs
@@ -713,6 +713,7 @@ where
 }
 
 /// Implement `Encode` by forwarding the stored raw vec.
+#[allow(dead_code)]
 struct EncodeOpaqueValue(Vec<u8>);
 
 impl Encode for EncodeOpaqueValue {
diff --git a/substrate/test-utils/cli/build.rs b/substrate/test-utils/cli/build.rs
index a68cb706e8f..c63f0b8b667 100644
--- a/substrate/test-utils/cli/build.rs
+++ b/substrate/test-utils/cli/build.rs
@@ -20,6 +20,6 @@ use std::env;
 
 fn main() {
 	if let Ok(profile) = env::var("PROFILE") {
-		println!("cargo:rustc-cfg=build_type=\"{}\"", profile);
+		println!("cargo:rustc-cfg=build_profile=\"{}\"", profile);
 	}
 }
diff --git a/substrate/test-utils/cli/src/lib.rs b/substrate/test-utils/cli/src/lib.rs
index d77a89b4dbf..70d68f6f183 100644
--- a/substrate/test-utils/cli/src/lib.rs
+++ b/substrate/test-utils/cli/src/lib.rs
@@ -130,7 +130,7 @@ pub fn start_node() -> Child {
 /// build_substrate(&["--features=try-runtime"]);
 /// ```
 pub fn build_substrate(args: &[&str]) {
-	let is_release_build = !cfg!(build_type = "debug");
+	let is_release_build = !cfg!(build_profile = "debug");
 
 	// Get the root workspace directory from the CARGO_MANIFEST_DIR environment variable
 	let mut cmd = Command::new("cargo");
diff --git a/substrate/utils/fork-tree/src/lib.rs b/substrate/utils/fork-tree/src/lib.rs
index ff86467c85d..fe349b6c29a 100644
--- a/substrate/utils/fork-tree/src/lib.rs
+++ b/substrate/utils/fork-tree/src/lib.rs
@@ -810,12 +810,11 @@ impl<'a, H, N, V> Iterator for ForkTreeIterator<'a, H, N, V> {
 	type Item = &'a Node<H, N, V>;
 
 	fn next(&mut self) -> Option<Self::Item> {
-		self.stack.pop().map(|node| {
+		self.stack.pop().inspect(|node| {
 			// child nodes are stored ordered by max branch height (decreasing),
 			// we want to keep this ordering while iterating but since we're
 			// using a stack for iterator state we need to reverse it.
 			self.stack.extend(node.children.iter().rev());
-			node
 		})
 	}
 }
diff --git a/substrate/utils/frame/benchmarking-cli/build.rs b/substrate/utils/frame/benchmarking-cli/build.rs
index 1545d1e0c21..06cdb7973ab 100644
--- a/substrate/utils/frame/benchmarking-cli/build.rs
+++ b/substrate/utils/frame/benchmarking-cli/build.rs
@@ -24,8 +24,12 @@ use std::env;
 pub fn main() {
 	if let Ok(opt_level) = env::var("OPT_LEVEL") {
 		println!("cargo:rustc-cfg=build_opt_level={:?}", opt_level);
+	} else {
+		println!("cargo:rustc-cfg=build_opt_level={:?}", "unknown");
 	}
 	if let Ok(profile) = env::var("PROFILE") {
 		println!("cargo:rustc-cfg=build_profile={:?}", profile);
+	} else {
+		println!("cargo:rustc-cfg=build_profile={:?}", "unknown");
 	}
 }
diff --git a/substrate/utils/wasm-builder/src/wasm_project.rs b/substrate/utils/wasm-builder/src/wasm_project.rs
index a6eda078fde..dcd5e6f1ade 100644
--- a/substrate/utils/wasm-builder/src/wasm_project.rs
+++ b/substrate/utils/wasm-builder/src/wasm_project.rs
@@ -601,9 +601,10 @@ fn project_enabled_features(
 			// We don't want to enable the `std`/`default` feature for the wasm build and
 			// we need to check if the feature is enabled by checking the env variable.
 			*f != "std" &&
-				*f != "default" && env::var(format!("CARGO_FEATURE_{}", feature_env))
-				.map(|v| v == "1")
-				.unwrap_or_default()
+				*f != "default" &&
+				env::var(format!("CARGO_FEATURE_{feature_env}"))
+					.map(|v| v == "1")
+					.unwrap_or_default()
 		})
 		.map(|d| d.0.clone())
 		.collect::<Vec<_>>();
diff --git a/templates/parachain/pallets/template/src/benchmarking.rs b/templates/parachain/pallets/template/src/benchmarking.rs
index 5acad6e60de..29572c3ff60 100644
--- a/templates/parachain/pallets/template/src/benchmarking.rs
+++ b/templates/parachain/pallets/template/src/benchmarking.rs
@@ -1,5 +1,4 @@
 //! Benchmarking setup for pallet-template
-#![cfg(feature = "runtime-benchmarks")]
 
 use super::*;
 use frame_benchmarking::v2::*;
diff --git a/templates/solochain/pallets/template/src/benchmarking.rs b/templates/solochain/pallets/template/src/benchmarking.rs
index d1a9554aed6..8af5d246f76 100644
--- a/templates/solochain/pallets/template/src/benchmarking.rs
+++ b/templates/solochain/pallets/template/src/benchmarking.rs
@@ -1,5 +1,5 @@
 //! Benchmarking setup for pallet-template
-#![cfg(feature = "runtime-benchmarks")]
+
 use super::*;
 
 #[allow(unused)]
-- 
GitLab