Update-testing-rollback has a bug with runAlways Changesets?

Disclaimer: As a new user I am allowed to upload only 1 attachment. I skipped those of the Liquibase DB changelog.

When using update-testing-rollback, I expect all changesets with runAlways=true as well as those without this setting to be rolled back.

I have the assumption that update-testing-rollback only rolls back the number of changesets that are runAlways=false.
If the first and last changeset in the changelog is one with runAlways=true and an update only contains one new functional statement, then only 1 statement is rolled back during the rollback phase and this is the statement with runAlways=true. So the new functional Statement “in the middle” is not tested for rollback.

Setup:
There is a “global” changelog in yml format. The first and last changeset in this is the one that changes the DB user used and is marked as runAlways=true:

databaseChangeLog:
- include:
    file: rolle_zu_fachlich_wechseln.sql
    relativeToChangelogFile: true

- include:
    file: release-1/product-release-1.yml
    relativeToChangelogFile: true
< n more releases >

- include:
    file: rolle_zu_liquibase_wechseln.sql
    relativeToChangelogFile: true

The changesets for changing the user look like this:
file: rolle_zu_fachlich_wechseln.sql

-- liquibase formatted sql

-- changeset Christian:rolle_zu_fachlich_wechseln runAlways:true
SET ROLE fachlich
;
--rollback SET ROLE fachlich

file: rolle_zu_liquibase_wechseln.sql

-- liquibase formatted sql

-- changeset Christian:rolle_zu_liquibase_wechseln runAlways:true
SET ROLE liquibase
;
--rollback SET ROLE fachlich

In the Liquibase change log in the database, you can see that the runAlways changesets are executed even if there are no new functional changes. This is as expected.

If a release 9 is added in this state and executed with update-testing-rollback, it can be seen in the log that only 1 changeset is rolled back.

You can then also see in the Liquibase changelog on the database that the last runAlways statement was updated as “EXECUTED” and not as “RERUN”. (Edit: “EXECUTED” is expected, since the runAlways statement was rolled back, the DB Changelog entry deleted, thus it was executed and not rerun)

I suspect that the runAlways ChangeSets are not taken into account in the rollback phase when calculating the number of changesets, which in my case means that the functional changeset is not tested.

Edit: Additional Analysis
If the runAlways statements are deleted from the Liquibase DB Changelog and I rerun release 9, the correct number of 3 changesets is rolled back when using update-testing-rollback.
The bug comes into play, if liquibase was last run without any new functional change resulting in a Liquibase DB changelog with the 2 runAlways Changets as the last 2 items with exectype “RERAN”. If update-testing-rollback is executed now, the bug is appearing.

If the 2 runAlways entries are deleted from the Liquibase DB Changelog before executing update-testing-rollback, there are 3 statements rolled back. If they have been executed before, they are not regarded during rollback phase.