Skip to content

Conversation

@ggwpez
Copy link
Member

@ggwpez ggwpez commented Jul 1, 2025

No description provided.

bkchr and others added 30 commits January 20, 2025 11:39
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [x] Does not require a CHANGELOG entry
Upgrading PAPI inside review-bot

- [x] Does not require a CHANGELOG entry
This will activate 10 Mb PoVs on Kusama as soon as the runtime is
upgraded.
The point is that we want to activate it anyway, and we better have it
activated sooner rather than later to allow more time for testing before
proposing that for Polkadot.

CC @eskimor @sandreim

---------

Co-authored-by: Bastian Köcher <[email protected]>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [x] Does not require a CHANGELOG entry
One last staking ledger that due to the bug found last year is in an
inconsistent state.

The Support team is in touch with the owner, and force_staking them is
the preferred way.

Note that this is only an action that we are doing because the root
cause of the inconsistent stake was buggy code in the polkadot runtime,
not any user interaction.

See:
https://forum.polkadot.network/t/recover-corrupted-staking-ledgers-in-polkadot-and-kusama/9796

---------

Co-authored-by: Bastian Köcher <[email protected]>
Closes: paritytech/polkadot-sdk#2904
Closes: #446
Continuation: paritytech/polkadot-sdk#6820

The `collectives-polkadot` uses `FixedWeightBounds`. This PR introduces
a properly measured XCM benchmarking setup and updates the weights with
fresh data.


## TODO
- [x] check if we use somewhere some hard-coded weights for `Transact`
that goes to the `collectives-polkadot`

---------

Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Muharem <[email protected]>
The `XcmPaymentApi` has two functions, `query_acceptable_payment_assets`
and `query_weight_to_asset_fee`, which allow clients to know which
assets can be used to pay for fees.

On the asset hubs fees can be paid both with the native asset (DOT, KSM)
and with any asset in a liquidity pool with the native asset. However,
these functions were only returning the native asset.

This PR adds all other assets that can be used for fee payment to this
API.

Also fixed an issue where these APIs wouldn't accept any version other
than latest.

---------

Co-authored-by: Bastian Köcher <[email protected]>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [x] Does not require a CHANGELOG entry
This fixes `try-runtime` migration validation for the
`restore_corrupt_ledger_2` migration.

🚨 This fix is required to unblock CI for all other PRs, which are
currently incorrectly failing migration CI checks.

- [x] Does not require a CHANGELOG entry
This adds the new `AssetExchanger` introduced in
paritytech/polkadot-sdk#5130 to asset hubs.
This exchanger is necessary to enable [delivery fees to be paid in
assets other than
DOT/KSM](paritytech/polkadot-sdk#5131), for
example, it will enable cross-chain transfers from one parachain to
another, going through Asset Hub, using only USDT, no DOT/KSM involved.

---------

Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com>
## Description

Addressing @ordian's
[comment](#522 (review)):
> Previously, the weight of `enact_candidate` was included in the weight
of availability bitfields, but this was a bug, because the number of
bitfields depends on number of validators, whereas number of enacted
candidates depends on the number of cores. This was later (accidentally)
fixed, but the `enact_candidate` weight was unaccounted for.
[paritytech/polkadot-sdk#5270](paritytech/polkadot-sdk#5270)
was supposed to fix that.
> 
> The base weight of `enact_candidate` still looks excessive and it was
fixed in
[paritytech/polkadot-sdk#5526](paritytech/polkadot-sdk#5526),
but looks like it didn't make into the same release.
> 
> That being said, even with 1.5ms of enactment weight per candidate,
this shouldn't be a blocker to scale to 200 parachains weight-wise. So
I'm fine with having these excessive weights for now.

Addressing @bkontur's
[comment](#522 (comment)):
> @ordian The next patch, **stable2409-4**, is planned for this week. I
have backported your fix here:
[paritytech/polkadot-sdk#7145](paritytech/polkadot-sdk#7145).
Once it is released, I will re-run the benchmarks for this within
another PR.


## Weights diff

### Kusama

`--method asymptotic` does not work:
```
subweight compare commits          --path-pattern "./relay/kusama/**/weights/**/*.rs"          --format markdown --no-color           --change added changed          --method asymptotic --ignore-errors --strip-path-prefix="relay/kusama/src/weights/"          remotes/polkadot-fellows/main          origin/bko-patch-parachains-inclusion
```
| File | Extrinsic | Old | New | Change [%] |

|---------------------------------|-----------------|-----|-----|------------|
| runtime_parachains_inclusion.rs | enact_candidate | - | - | ERROR |

but `--method base` works:
```
subweight compare commits          --path-pattern "./relay/kusama/**/weights/**/*.rs"          --format markdown --no-color           --change added changed          --method base --ignore-errors --strip-path-prefix="relay/kusama/src/weights/"          remotes/polkadot-fellows/main          origin/bko-patch-parachains-inclusion
```
| File | Extrinsic | Old | New | Change [%] |

|---------------------------------|-----------------|--------|----------|------------|
| runtime_parachains_inclusion.rs | enact_candidate | 2.97ms | 939.10us
| -68.35 |

### Polkadot

`--method asymptotic` does not work:
```
subweight compare commits          --path-pattern "./relay/polkadot/**/weights/**/*.rs"          --format markdown --no-color           --change added changed          --method asymptotic --ignore-errors --strip-path-prefix="relay/polkadot/src/weights/"          remotes/polkadot-fellows/main          origin/bko-patch-parachains-inclusion
```
| File | Extrinsic | Old | New | Change [%] |

|---------------------------------|-----------------|-----|-----|------------|
| runtime_parachains_inclusion.rs | enact_candidate | - | - | ERROR |

but `--method base` works:
```
subweight compare commits          --path-pattern "./relay/polkadot/**/weights/**/*.rs"          --format markdown --no-color           --change added changed          --method base --ignore-errors --strip-path-prefix="relay/polkadot/src/weights/"          remotes/polkadot-fellows/main          origin/bko-patch-parachains-inclusion
```
| File | Extrinsic | Old | New | Change [%] |

|---------------------------------|-----------------|--------|----------|------------|
| runtime_parachains_inclusion.rs | enact_candidate | 2.92ms | 974.24us
| -66.60 |


<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [X] Does not require a CHANGELOG entry

---------

Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com>
This Pull Request updates the remaining dependencies from `stable2409-4`
into the repo dependencies, ensuring every runtime enjoys the latest
fixes and stability improvements available.

- [ ] Does not require a CHANGELOG entry

---------

Co-authored-by: ordian <[email protected]>
Adds support for the bridging Ether.

TODO
- [x] Update snowbridge-router-primitives crate `2409-1` `0.16.1`
- [x] Add a test to test round trip of Ether.

---------

Co-authored-by: Adrian Catangiu <[email protected]>
The benchmark code was left blank even though the Region transactor is
included in both Polkadot and Kusama:
[link](https://github.com/Szegoo/runtimes/blob/b483d370034fbdc6a2c5978e7ba5ea55fcb2defb/system-parachains/coretime/coretime-kusama/src/xcm_config.rs#L97).

Because of this, it is not possible to perform cross-chain transfers of
regions since the weight is set to the maximum value:
[weight](https://github.com/Szegoo/runtimes/blob/b483d370034fbdc6a2c5978e7ba5ea55fcb2defb/system-parachains/coretime/coretime-kusama/src/weights/pallet_xcm.rs#L100)

---------

Co-authored-by: Bastian Köcher <[email protected]>
This adds the [ecosystem
tests](https://github.com/open-web3-stack/polkadot-ecosystem-tests) as a
CI job.

- [x] Does not require a CHANGELOG entry

---------

Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com>
The `XcmRecorder` config item is necessary for the `DryRunApi` to return
the `local_xcm`.
`pallet-xcm` can be used as the implementation.
Added it to all runtimes.

---------

Co-authored-by: Bastian Köcher <[email protected]>
Context: #575

Nobody has used vested transfers on Polkadot or Kusama Asset Hub so far
and disabling it until the Migration would avoid insertion conflicts.

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [ ] Does not require a CHANGELOG entry

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [x] Does not require a CHANGELOG entry
Use `rpc_port` instead of `ws_port` in bridge tests since `ws_port` was
deprecated in zombienet `1.3.120`.

- [x] Does not require a CHANGELOG entry
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [x] Does not require a CHANGELOG entry

We are trying to get the command bot working. However, right now it is
timing out when trying to build the runtimes plus the omni bencher after
6 hours. This should not take 6 hours ;) So, one guess is that maybe the
nightly is doing something that takes quite long to build. We want to
try the stable compiler and see if that fixes the issue.

---------

Co-authored-by: GitHub Action <[email protected]>
There was a bug found in the staking system which needs to be fixed
ASAP. This release pulls in changes directly from a custom
`Polkadot-SDK` branch. The changes can be reviewed
[here](paritytech/polkadot-sdk@stable2409...bkchr-fix-the-thing).

After approval, this will go out as a release immediately. A full
disclosure of the impact of this issue will be released after it was
applied on chain.
This adds remote proxy support to AssetHub on Polkadot and Kusama.
Currently it is configured only to support using proxies registered on
the relay chain to work on AssetHub. In the future this can be expanded.

---------

Co-authored-by: Xiliang Chen <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
- **Add test to collectives pallet**
- **Manually edit scheduler weight**

## Investigation

The Rust compiler changed how the `stringify!` macro formats paths on
[Aug 12th
'24](rust-lang/rust#128992 (comment)).
I assume that this broke the V1 benchmarking
[here](https://github.com/paritytech/polkadot-sdk/blob/7ecf3f757a5d6f622309cea7f788e8a547a5dce8/substrate/frame/benchmarking/src/v1.rs#L1011).
We had updated the scheduler pallet to V2 syntax (which is [not
affected](https://github.com/paritytech/polkadot-sdk/blob/df99fb9431a579589c1c87832222c9551b5c4f7c/substrate/frame/support/procedural/src/benchmark.rs#L565))
on [Nov 20th '24](paritytech/polkadot-sdk#6292).
We did not back-port this since there was no apparent reason for it.
The is why it seemingly fixed it self on SDK master but not in the
runtimes repo (since that is using V1 scheduler benchmarking).
Another indication for this is the fact that it did work on the
[whitelist
pallet](https://github.com/polkadot-fellows/runtimes/blob/6b85bf6adb427942976648e6d235e0169dfced16/relay/polkadot/src/weights/pallet_whitelist.rs#L85),
which is on V2 much longer but used the same [custom pov
mode](https://github.com/paritytech/polkadot-sdk/blob/b76e91acc953e682b3ddcfc45ecacaaf26c694a1/substrate/frame/whitelist/src/benchmarking.rs#L68).

Adding some sanity checks to prevent this in the future here
paritytech/polkadot-sdk#7785

- [ ] Does not require a CHANGELOG entry

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [ ] Does not require a CHANGELOG entry

Co-authored-by: Oliver Tale-Yazdi <[email protected]>
<!-- Remember that you can run `/merge` to enable auto-merge in the PR
-->

<!-- Remember to modify the changelog. If you don't need to modify it,
you can check the following box.
Instead, if you have already modified it, simply delete the following
line. -->

- [ ] Does not require a CHANGELOG entry

---------

Co-authored-by: nkprt <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Release 1.4.2 for:
- #535 (PAH and KAH)
- #614 (P Collectives)
- #604 (PAH and KAH)

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
This PR includes:
- Feature-gated compilation for `chain-spec-generator` per runtime. Use
`--features <runtime1>,<runtimeN>`, `--features all-runtimes`,
`--features all-polkadot`, or `--features all-kusama`.
- The main motivation here is to save CI time and speed up the process,
as we don't need all runtimes at once.
- Various improvements to the `zombienet-smote` test:
   - Fixed nits and made small adjustments to reduce flakiness.
   - CI build speed-up by optimizing `chain-spec-generator`.
   - Dumped Docker and Polkadot/Parachain versions.
   - Improved subxt client usage.
- Updated CI to use `ubuntu::latest` everywhere.

---------

Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: ordian <[email protected]>
This PR contains:
- removed deps (bp-polkadot, bp-kusama) from polkadot-sdk and placed
them directly here as a leftover
paritytech/parity-bridges-common#2950
- bridges zombienet test nits

## TODO
- [x] run Bridges tests
- [x] Does not require a CHANGELOG entry

---------

Co-authored-by: GitHub Action <[email protected]>
…s for check-migrations CI (#590)

This PR:  
- Removes previously executed migrations based on the v1.4.2 (and older)
tag –
[remove-migrations.patch.txt](https://github.com/user-attachments/files/19587122/remove-migrations.patch.txt).
- Disables MBM migrations for all runtimes in the check-migrations CI.  
- MBM migrations are not set up for any runtimes, but only Encointer had
disabled checks for them.
- Related issue:
[paritytech/try-runtime-cli#109](paritytech/try-runtime-cli#109).

---------

Co-authored-by: GitHub Action <[email protected]>
ggwpez added 8 commits July 2, 2025 15:42
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
ggwpez added 14 commits July 2, 2025 23:34
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
@ggwpez ggwpez marked this pull request as ready for review July 3, 2025 19:46
@ggwpez ggwpez merged commit bfb1c0a into dev-asset-hub-migration Jul 3, 2025
17 of 21 checks passed
@github-actions
Copy link

github-actions bot commented Jul 3, 2025

Review required! Latest push from author must always be reviewed

@ggwpez ggwpez deleted the oty-rebase-dev branch September 19, 2025 10:36
fellowship-merge-bot bot added a commit that referenced this pull request Sep 24, 2025
A high-level look of the migration is this:

<img width="1204" height="745" alt="Screenshot 2025-09-17 at 18 23 57"
src="https://github.com/user-attachments/assets/1fb39ef8-5efa-4db2-81db-6dd775af3a39"
/>

You can see the main components being the `pallet_rc_migrator` and
`pallet_ah_migrator`. The RC migrator pallet takes data out of the RC
storage and enqueues it for AH through XCM::Transact calls to the AH
migrator pallet.
Each pallet on the RC side has a migrator module that handles the
removal of the old data and creation of the messages for AH. AH then
processes these messages through the MQ pallet and acknowledges back to
RC that they were processed (not shown in the graphic).

There is rate-limiting code in place to prevent it from overloading the
DMP queue or Asset Hub.

## For Reviewers

The review comments are being addressed in
#915.
We need eyes on the Core part that is described below.

## Core STM

The main stage transitions look like this. The only manual part is the
scheduling call by the fellowship that kicks off the procedure:

* `Pending` wait for Fellowship to call `schedule_migration(when)` ->
Scheduled
* `Scheduled` waiting for scheduled block -> `WaitingForAH`
* `WaitingForAH` AH replies that it is ready -> `WarmUp`
* `WarmUp`  waiting for warm-up end -> `Starting`
* `Starting` doing some startup initialization -> `DataMigration`
* `DataMigration` MAIN PART **all pallet migrations finish** ->
`CoolOff`
* `CoolOff` waiting for cool-off to end -> `SignalMigrationFinish`
* `SignalMigrationFinish` send signal to AH that we are done ->
`MigrationDone`
* `MigrationDone` finished, unlock all Pallets.

### State Machine

The core State Machine lives in the `RcMigrator` pallet in its
`on_initialize`:


https://github.com/polkadot-fellows/runtimes/blob/8ef1cc739d756b109dc93eaf3b9da00e3dcf1383/pallets/rc-migrator/src/lib.rs#L1338-L1342

On each block the Rc Migrator checks the current state and possibly
progresses to the next one. It will only do a single state transition
per block to reduce complexity of the code. Generally, there are three
states per pallet (called
[*stages*](https://github.com/polkadot-fellows/runtimes/blob/8ef1cc739d756b109dc93eaf3b9da00e3dcf1383/pallets/rc-migrator/src/lib.rs#L190-L389)
in the code). Some pallets have more then three, but it is generally
still a multiple of three and always follows the pattern of
`PalletInit`, `PalletOngoing { cursor }`, `PalletDone`:


https://github.com/polkadot-fellows/runtimes/blob/8ef1cc739d756b109dc93eaf3b9da00e3dcf1383/pallets/rc-migrator/src/lib.rs#L239-L244

Each pallet then has one migrator struct (eg. `MultisigMigrator<T>`)
that migrates the storage items from the Relay side. It lives in the
module of its name `rc-migrator/src/multisig.rs` respectively.
Taking Multisigs as an example; you can find two functions in the
migrator struct: `migrate_many` and `migrate_single`. The former one is
from the [`PalletMigration`
trait](https://github.com/polkadot-fellows/runtimes/blob/715dbb4455a127066d0118ce7a096c72200e1126/pallets/rc-migrator/src/types.rs#L209-L221).
The `migrate_single` function is done by convention to keep the code
readable. The `migrate_many` does the following:
- Weight accounting for the RC side: Normal weight tracking to not have
overtime RC blocks
- Weight accounting for the AH side: Ensuring to not send messages that
would take up too much weight on AH processing
- Ensure that DMP messages are sensibly sized by using the
`XcmBatchAndMeter`
- Taking the data out from the Relay chain (deleting it)
- Including the data into a DMP message and sending it towards AH

### AH Side

The main logic on Asset Hub lives in the `AhMigrator` pallet. It
contains at least one extrinsic per pallet to receive the incoming data
from the RC. We are using extrinsics since RC is wrapping the data into
XCM::Transacts:


https://github.com/polkadot-fellows/runtimes/blob/9a20b12e22b019c1c0b15b9af897567a559e424c/pallets/ah-migrator/src/lib.rs#L650-L653

This calls into the [`multisig`
module](https://github.com/polkadot-fellows/runtimes/blob/6b603ca47e5c49b3a898be3f8f6b078c424f42a0/pallets/ah-migrator/src/multisig.rs#L37)
to integrate the data into the storage. Per convention we are emitting
events for each item and the whole batch.
The main task of the AH side is to integrate the data. In the example of
the multisig it is special since we do not migrate the multisig, but
only the reserved account which will be unreserved on AH.

## Messaging Logic

The messaging is ACK based. The Relay sends message to Asset Hub up to a
specified limit (50). The limit can be adjusted on the fly through a
dedicated dispatchable call, restricted to Admin and Manager roles. The
limit may be overstepped by the configured batch-size (10), so in total
there should never be more than 60 DMPs queued. Each DMP is set to at
most
[50KB](https://github.com/polkadot-fellows/runtimes/blob/8ef1cc739d756b109dc93eaf3b9da00e3dcf1383/pallets/rc-migrator/src/lib.rs#L131).

The Relay Chain migrator creates a query for each XCM data message using
the XCM query–response primitives and attaches a response status request
from Asset Hub to the message. The XCM executor on Asset Hub then sends
back the response status for every message with such a request.

The Relay migrator stores each data message sent to Asset Hub until it
receives confirmation of successful processing. It also provides a
dispatchable call, available only to Admin and Manager roles, to resend
any unconfirmed messages.

A bug that prevented certain messages from being accounted for during a
particulat pallet migration caused the Westend AHM stall. The system was
queuing too many DMPs, which forced WAH to author an overweight block
while attempting to process them all at once.

## Call Filtering

Pallet calls are filtered during the migration for three reasons:
- prevent malicious users from spamming the chain with cheap TX and
slowing down the migration
- prevent users from sending many UMPs out of AH to clog up the UMP
queue
- prevent interference with pallets that are being migrated to avoid
messing up their storage invariants

Both RC and AH provide call filters for `Before`, `During` and `After`
the migration. As you can see, most things are disabled during the
migration on both chains. After the migration, Relay chain keeps pretty
much everything disabled since it was now enabled on AH:
- Before: RC everything enabled, AH all new pallets disabled (staking,
gov etc)
- During: RC mostly everything disabled, AH mostly everything disabled
- After: RC mostly everything disabled (staking, gov etc), AH everything
enabled (staking, gov etc)

This is implemented  by returning three bools, one for each phase:  

https://github.com/polkadot-fellows/runtimes/blob/88f4aaf62236fbee9cfb9183e44333bac45b1371/system-parachains/asset-hubs/asset-hub-polkadot/src/ah_migration/call_filter.rs#L81-L83

## Testing and Dry-Runs

https://github.com/paritytech/ahm-dryrun is the repository for testing
infrastructure for AHM. As of now, the following is being tested there
(as a part of "[AHM Flow (all
steps)](https://github.com/paritytech/ahm-dryrun/actions/workflows/zombie-bite.yml)"
nightly action):
* Dry-running a migration on a fork of Kusama
* Re-running the rust unit tests introduced in this branch
* Re-running a subset of the same tests, re-written in TS
* Re-running PET tests.

Each action produces a table with the summary of the test results: 

<img width="682" height="357" alt="Screenshot 2025-09-19 at 09 03 20"
src="https://github.com/user-attachments/assets/69c1e37d-6f8f-4b57-b97f-75781a1e1a3a"
/>

And 4 snapshot files (2 real databases, 2 try-runtime snapshots) which
can be used to re-run any of the tests, or run the pre/post migration
chain, locally.

<img width="1347" height="476" alt="Screenshot 2025-09-19 at 09 03 40"
src="https://github.com/user-attachments/assets/127cbf76-b2fb-467f-8fef-3e93a9a709f6"
/>


<details><summary>Full Changelog</summary>
<p>

- **[AHM] OpenGov for Kusama AH (#877)**
- **Relay Chain Accounts to Asset Hub Migration (#515)**
- **Test Relay<->AH migration through DMP messages (#528)**
- **[AHM] Improve account migration (#532)**
- **[AHM] Add multisig migration (#534)**
- **[AHM] Proxy migration (#542)**
- **[AHM] Cleanup and add Preimage doc (#543)**
- **[AHM] Improve accounts migration (#550)**
- **[AHM] Preimage migration (#545)**
- **[AHM] Add Polkadot call filtering (#559)**
- **[AHM] Nomination pools (#562)**
- **[AHM] referenda pallet (#558)**
- **[AHM] Cleanup (#565)**
- **[AHM] Scheduler Pallet (#569)**
- **[AHM] Fast unstake and Bags list (#563)**
- **[AHM] Pallet claims (#570)**
- **[AHM] Conviction Voting Pallet (#578)**
- **[AHM] Pallet Indices (#577)**
- **[AHM] pause scheduler during migration (#580)**
- **[AHM] Asset rate pallet migration (#581)**
- **[AHM] Bounties data migration (#585)**
- **[AHM] Vesting (#575)**
- **[AHM] fix the rc-migrator call filter (#598)**
- **[AHM] Sovereign Account Translation (#594)**
- **[AHM] Crowdloans (#592)**
- **[AHM] Set up AH migration testing framework for single pallets
(#597)**
- **[AHM] Stage management (#584)**
- **[AHM] Do not pause inherents 🙈 (#609)**
- **[AHM] Relay Chain accounts' reserves (#602)**
- **[AHM] Benchmarks (#589)**
- **[AHM] Pallet testing framework (#612)**
- **[AHM] fix xcm weight at most (#617)**
- **[AHM] Improve weight accounting for accounts migration  (#618)**
- **[AHM] AH acks messages from RC (#620)**
- **[AHM] Pure Proxy Investigation (#621)**
- **[AHM] Remove migrated items for pallet preimage and improve testing
(#619)**
- **[AHM] Referenda metadata (#633)**
- **[AHM] Fix accounts migration failures (#628)**
- **[AHM] refactor events and enable scheduled migration start (#634)**
- **[AHM] Migrating DOT total issuance tracking from RC to AH (#607)**
- **[AHM] Comment faulty checks out (#640)**
- **Account migrator refactor (#639)**
- **[AHM] Rebase (#641)**
- **[AHM] Run AHM test in CI (#642)**
- **[AHM] Vesting test (#615)**
- **[AHM] bags_list and conviction_voting tests  (#632)**
- **[AHM] Treasury pallet migration (#624)**
- **[AHM] Fix tests for pallet preimage (#643)**
- **[AHM] Test Coverage Report (#650)**
- **[AHM] deactivate/reactivate total issuance & weights (#648)**
- **[AHM] add sudo behind feature flag (#657)**
- **[AHM] fast_unstake tests (#658)**
- **[AHM] asset_rate test (#660)**
- **[AHM] Pallet treasury tests (#664)**
- **[AHM] Improve account balances integration tests (#655)**
- **[AHM] Integrate AH migrator weights to RC (#665)**
- **Testing for bounties migration (#669)**
- **[AHM] Westend port adapters (#652)**
- **[AHM] fix checking account and total issuance migration (#636)**
- **[AHM] Bump polkadot relay and AH versions (#667)**
- **[AHM] Fix tests for pallet treasury (#671)**
- **[AHM] Claims and Crowdloan tests (#622)**
- **[AHM] Benchmarks (#663)**
- **[AHM] Add Asset Hub CallFilter (#670)**
- **[AHM] Westend staking migration (#689)**
- **[AHM] Referenda migration storage checks (#672)**
- **[AHM] AH benchmarks cleanup (#690)**
- **[AHM] Westend Async Staking Migration (#691)**
- **[AHM] Relay Chain migrator benchmarks (#692)**
- **[AHM] Asset Hub ops pallet benchmarks (#693)**
- **[AHM] Xcm send weights and Batch helper types (#694)**
- **Finish staking Westend (#695)**
- **[AHM] Account provider/consumer references (#702)**
- **[AHM] Fix westend builds (#704)**
- **[AHM] Generate weights (#706)**
- **[AHM] Proxy fixes and more tests (#707)**
- **[AHM] Docs and simpler events (#699)**
- **[AHM] Test call decoding (#710)**
- **[AHM] Emulated test for migration with async backing (#717)**
- **[AHM] Increase test coverage (#720)**
- **[AHM] Add referenda checks to Westend migration (#713)**
- **[AHM] Nom_pools test (#677)**
- **[AHM] Scheduler storage item checks (#680)**
- **[AHM] Update Polkadot Snapshot (#725)**
- **[AHM] Pallet multisig tests (#666)**
- **[AHM] Adapt XCM configuration to account for changes before and
after migration (#722)**
- **[AHM] document checking account migration (#716)**
- **[AHM] Dependency fixes for integration tests and the Polkadot
runtime (#751)**
- **[AHM] Remove empty conviction voting filter (#750)**
- **[AHM] Missing TODOs and `AccountState` type update (#742)**
- **[AHM] DMP prioritization on AH (#772)**
- **[AHM] Disable #[pallet::hooks] for migrating pallets during
migration (#784)**
- **[AHM] AH messages prioritization on RC (#787)**
- **[AHM] Cache test snapshots and include more tests into CI job
(#788)**
- **[AHM] Cleanup Westend feature (#789)**
- **[AHM] Introducing the Cool-Off stage (#786)**
- **[AHM]  Flow Control System (#780)**
- **[AHM] Migrate pallet delegated-staking to AH (#791)**
- **[AHM] Merge master into dev branch (#793)**
- **[AHM] Disable indirect XCMs from RC to AH and vice versa during
migration (#774)**
- **Rebase**
- **bring back RelayTreasuryLocation to make old tests compiole**
- **[AHM] Missing `RootLocation` for WaivedLocation for AHP (#798)**
- **[AHM] Missing `SecretaryEntities` for AHP (#797)**
- **[AHM] Migration idempotency (#808)**
- **[AHM] Block number providers for migrating pallets (#809)**
- **[AHM] Copy latest ah-ops pallet from the SDK (#810)**
- **[AHM / ah-migrator]: Implement RC->AH account translation `mocked`
migration across all involved pallets (#807)**
- **[AHM] Complete account balances tests (#674)**
- **[AHM] Address TODOs (#815)**
- **[AHM] Async staking config (#812)**
- **[AHM] Optional migration manager account id (#818)**
- **[AHM] Type safe Hold and Freeze-Reason translation (#819)**
- **[AHM] Create new response query on resend and tests (#816)**
- **PolkadotAssetHub: Enable Async Backing (#763)**
- **Ensure no era planned when migration starts (#728)**
- **[AHM] with async backing (#822)**
- **[AHM] Staking migration (#821)**
- **identify with only validator account**
- **[AHM] Tests work for Paseo (#827)**
- **[AHM] Child bounties (#613)**
- **[AHM] Cleanup and linter fixes (#828)**
- **[AHM] Fix snowbridge test - wrong import of
`RelayTreasuryPalletAccount` (instead of AH, it should be BH) (#831)**
- **[AHM] Account Translation mapping (#829)**
- **Fast unstake: remove alias**
- **fmt**
- **[AHM] Max migrated items per block (#834)**
- **[AHM] Record migration timings (#835)**
- **[AHM] Remove storage aliases and cleanup (#832)**
- **[AHM] fix Kusama bags list pallet benchmarks (#836)**
- **[AHM] Unprocessed msg buffer size 50 (#839)**
- **[AHM] Post migration cool off stage (#841)**
- **[AHM] Multisig test and storage_alias cleanup (#842)**
- **[AHM] Remove fast-unstake and test fixes (#846)**
- **Run try-state check for all pallets post AHM rust tests (#833)**
- **[AHM] Preserve on RC manager' account (#843)**
- **[AHM] Filter staking calls before migration starts (#847)**
- **[AHM] State Decode Tests (#848)**
- **[AHM] Send xcm extrinsic within migrator pallets (#851)**
- **Merge and cleanup merge commit**
- #845
- #852
- #862
- #875
- #872
- #877
- #626
- #879
- #885
- #886
- #882
- #883
- #854
- #888
- #895
- #892
- #896
- #889

</p>
</details> 

// only to let all CIs to execute for now
- [ ] Does not require a CHANGELOG entry

---------

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Adrian Catangiu <[email protected]>
Signed-off-by: Andrei Sandu <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Co-authored-by: Muharem <[email protected]>
Co-authored-by: Dónal Murray <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Giuseppe Re <[email protected]>
Co-authored-by: Andrii <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Yuri Volkov <[email protected]>
Co-authored-by: s0me0ne-unkn0wn <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: fellowship-merge-bot[bot] <151052383+fellowship-merge-bot[bot]@users.noreply.github.com>
Co-authored-by: Pablo Andrés Dorado Suárez <[email protected]>
Co-authored-by: ordian <[email protected]>
Co-authored-by: Alistair Singh <[email protected]>
Co-authored-by: Sergej Sakac <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Serban Iorga <[email protected]>
Co-authored-by: Xiliang Chen <[email protected]>
Co-authored-by: Nikolai Kozlov <[email protected]>
Co-authored-by: nkprt <[email protected]>
Co-authored-by: Eugenio Paluello <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: polka.dom <[email protected]>
Co-authored-by: Dónal Murray <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: joe petrowski <[email protected]>
Co-authored-by: Clara van Staden <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: clangenb <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Alexandre Baldé <[email protected]>
Co-authored-by: Maksym H <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Alexander Theißen <[email protected]>
Co-authored-by: Christian Langenbacher <[email protected]>
Co-authored-by: Ankan <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: brenzi <[email protected]>
Co-authored-by: Doordashcon <[email protected]>
Co-authored-by: eskimor <[email protected]>
Co-authored-by: Robert <[email protected]>
Co-authored-by: Raymond Cheung <[email protected]>
Co-authored-by: Maciej <[email protected]>
Co-authored-by: Paolo La Camera <[email protected]>
Co-authored-by: kianenigma <[email protected]>
Co-authored-by: Alexandru Vasile <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.