Repository: microsoft/openvmm
Pull request #1130: petri: hyper-v vbs and tdx tests
Author: login: tjones60
Created: 2025-04-02T23:06:17Z | Merged: 2025-04-04T17:38:20Z

Adds basic VBS and TDX tests on Hyper-V using Petri. Currently only works with Windows Server 2025. Further investigation is needed to get Ubuntu / other versions of Windows working.


Diff:
diff --git a/.github/workflows/openvmm-ci.yaml b/.github/workflows/openvmm-ci.yaml
index ef7a0bc67a..4bb275a50e 100644
--- a/.github/workflows/openvmm-ci.yaml
+++ b/.github/workflows/openvmm-ci.yaml
@@ -3081,11 +3081,13 @@ jobs:
       run: flowey.exe e 18 flowey_lib_common::cache 11
       shell: bash
   job19:
-    name: run vmm-tests [x64-windows-amd]
+    name: run vmm-tests [x64-windows-intel-tdx]
     runs-on:
     - self-hosted
-    - 1ES.Pool=OpenVMM-GitHub-Win-Pool-WestUS3
-    - 1ES.ImageOverride=HvLite-CI-Win-Ge-Image-256GB
+    - Windows
+    - X64
+    - TDX
+    - Baremetal
     permissions:
       contents: read
       id-token: write
@@ -3294,9 +3296,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-crash-dumps
+        name: x64-windows-intel-tdx-vmm-tests-crash-dumps
         path: ${{ env.floweyvar2 }}
-      name: 'publish test results: crash-dumps (x64-windows-amd-vmm-tests)'
+      name: 'publish test results: crash-dumps (x64-windows-intel-tdx-vmm-tests)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
@@ -3308,9 +3310,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-logs
+        name: x64-windows-intel-tdx-vmm-tests-logs
         path: ${{ env.floweyvar3 }}
-      name: 'publish test results: logs (x64-windows-amd-vmm-tests)'
+      name: 'publish test results: logs (x64-windows-intel-tdx-vmm-tests)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
@@ -3324,9 +3326,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-junit-xml
+        name: x64-windows-intel-tdx-vmm-tests-junit-xml
         path: ${{ env.floweyvar1 }}
-      name: 'publish test results: x64-windows-amd-vmm-tests (JUnit XML)'
+      name: 'publish test results: x64-windows-intel-tdx-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
       run: flowey.exe e 19 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
@@ -3528,6 +3530,266 @@ jobs:
         name: _internal-flowey-bootstrap-x86_64-linux-uid-17
         path: ${{ runner.temp }}/bootstrapped-flowey
   job20:
+    name: run vmm-tests [x64-windows-amd]
+    runs-on:
+    - self-hosted
+    - 1ES.Pool=OpenVMM-GitHub-Win-Pool-WestUS3
+    - 1ES.ImageOverride=HvLite-CI-Win-Ge-Image-256GB
+    permissions:
+      contents: read
+      id-token: write
+    needs:
+    - job13
+    - job13
+    - job11
+    - job9
+    - job9
+    - job9
+    if: github.event.pull_request.draft == false
+    steps:
+    - name: 🌼📦 Download artifacts
+      uses: actions/download-artifact@v4
+      with:
+        pattern: '{_internal-flowey-bootstrap-x86_64-windows-uid-10,x64-guest_test_uefi,x64-linux-musl-pipette,x64-openhcl-igvm,x64-windows-openvmm,x64-windows-pipette,x64-windows-vmm-tests-archive}'
+        path: ${{ runner.temp }}/used_artifacts/
+    - run: echo "${{ runner.temp }}/used_artifacts/_internal-flowey-bootstrap-x86_64-windows-uid-10" >> $GITHUB_PATH
+      shell: bash
+      name: 🌼📦 Add flowey to PATH
+    - name: 🌼🛫 Initialize job
+      run: |
+        AgentTempDirNormal="${{ runner.temp }}"
+        AgentTempDirNormal=$(echo "$AgentTempDirNormal" | sed -e 's|\\|\/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/\L\1\E/\2|')
+        echo "AgentTempDirNormal=$AgentTempDirNormal" >> $GITHUB_ENV
+
+        chmod +x $AgentTempDirNormal/used_artifacts/_internal-flowey-bootstrap-x86_64-windows-uid-10/flowey.exe
+
+        echo '"debug"' | flowey.exe v 20 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey.exe v 20 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+
+        cat <<'EOF' | flowey.exe v 20 'verbose' --update-from-stdin
+        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
+        EOF
+        echo "${{ runner.temp }}\\used_artifacts\\x64-guest_test_uefi" | flowey.exe v 20 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-linux-musl-pipette" | flowey.exe v 20 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-openhcl-igvm" | flowey.exe v 20 'artifact_use_from_x64-openhcl-igvm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-openvmm" | flowey.exe v 20 'artifact_use_from_x64-windows-openvmm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-pipette" | flowey.exe v 20 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-vmm-tests-archive" | flowey.exe v 20 'artifact_use_from_x64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
+      shell: bash
+    - name: create cargo-nextest cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_cargo_nextest 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 4
+        flowey.exe v 20 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__5
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar7 }}
+        path: ${{ env.floweyvar8 }}
+      name: 'Restore cache: cargo-nextest'
+    - name: add default cargo home to path
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 6
+        flowey.exe e 20 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey.exe e 20 flowey_lib_common::install_rust 0
+      shell: bash
+    - name: install Rust
+      run: flowey.exe e 20 flowey_lib_common::install_rust 1
+      shell: bash
+    - name: detect active toolchain
+      run: flowey.exe e 20 flowey_lib_common::install_rust 2
+      shell: bash
+    - name: report $CARGO_HOME
+      run: flowey.exe e 20 flowey_lib_common::install_rust 3
+      shell: bash
+    - name: installing cargo-nextest
+      run: flowey.exe e 20 flowey_lib_common::download_cargo_nextest 1
+      shell: bash
+    - name: create gh-release-download cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_gh_release 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 8
+        flowey.exe v 20 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__9
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar9 }}
+        path: ${{ env.floweyvar10 }}
+      name: 'Restore cache: gh-release-download'
+    - name: download artifacts from github releases
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 10
+        flowey.exe e 20 flowey_lib_common::download_gh_release 1
+      shell: bash
+    - name: unpack mu_msvm package (x64)
+      run: flowey.exe e 20 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      shell: bash
+    - name: check if openvmm needs to be cloned
+      run: |-
+        flowey.exe e 20 flowey_lib_common::git_checkout 0
+        flowey.exe v 20 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey.exe v 20 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__git_checkout__1
+      uses: actions/checkout@v4
+      with:
+        fetch-depth: '1'
+        path: repo0
+        persist-credentials: ${{ env.floweyvar4 }}
+      name: checkout repo openvmm
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: report cloned repo directories
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        ${{ github.workspace }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::git_checkout 3
+        flowey.exe e 20 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey.exe e 20 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+      shell: bash
+    - name: move MSVM.fd into its magic folder
+      run: flowey.exe e 20 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+      shell: bash
+    - name: init hyperv tests
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::init_hyperv_tests 0
+        flowey.exe e 20 flowey_lib_hvlite::run_cargo_nextest_run 0
+      shell: bash
+    - name: creating new test content dir
+      run: flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      shell: bash
+    - name: resolve openvmm artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      shell: bash
+    - name: resolve pipette artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_pipette::resolve 1
+      shell: bash
+    - name: resolve pipette artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_pipette::resolve 0
+      shell: bash
+    - name: resolve guest_test_uefi artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      shell: bash
+    - name: resolve OpenHCL igvm artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
+      shell: bash
+    - name: create azcopy cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_azcopy 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 0
+        flowey.exe v 20 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__1
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar5 }}
+        path: ${{ env.floweyvar6 }}
+      name: 'Restore cache: azcopy'
+    - name: installing azcopy
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 2
+        flowey.exe e 20 flowey_lib_common::download_azcopy 1
+      shell: bash
+    - name: calculating required VMM tests disk images
+      run: flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      shell: bash
+    - name: downloading VMM test disk images
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+      shell: bash
+    - name: unpack openvmm-deps archive
+      run: flowey.exe e 20 flowey_lib_hvlite::download_openvmm_deps 0
+      shell: bash
+    - name: setting up vmm_tests env
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey.exe e 20 flowey_lib_hvlite::run_cargo_nextest_run 1
+      shell: bash
+    - name: resolve vmm tests archive artifact
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey.exe e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+      shell: bash
+    - name: run 'vmm_tests' nextest tests
+      run: |-
+        flowey.exe e 20 flowey_lib_common::run_cargo_nextest_run 0
+        flowey.exe e 20 flowey_lib_common::run_cargo_nextest_run 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 4
+        flowey.exe e 20 flowey_lib_common::publish_test_results 5
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__6
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-crash-dumps
+        path: ${{ env.floweyvar2 }}
+      name: 'publish test results: crash-dumps (x64-windows-amd-vmm-tests)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: 🦀 flowey rust steps
+      run: |-
+        flowey.exe e 20 flowey_lib_common::publish_test_results 7
+        flowey.exe e 20 flowey_lib_common::publish_test_results 8
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__9
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-logs
+        path: ${{ env.floweyvar3 }}
+      name: 'publish test results: logs (x64-windows-amd-vmm-tests)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: 🦀 flowey rust steps
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 0
+        flowey.exe e 20 flowey_lib_common::publish_test_results 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 2
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__3
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-junit-xml
+        path: ${{ env.floweyvar1 }}
+      name: 'publish test results: x64-windows-amd-vmm-tests (JUnit XML)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: report test results to overall pipeline status
+      run: flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      shell: bash
+    - name: 'validate cache entry: azcopy'
+      run: flowey.exe e 20 flowey_lib_common::cache 3
+      shell: bash
+    - name: 'validate cache entry: cargo-nextest'
+      run: flowey.exe e 20 flowey_lib_common::cache 7
+      shell: bash
+    - name: 'validate cache entry: gh-release-download'
+      run: flowey.exe e 20 flowey_lib_common::cache 11
+      shell: bash
+  job21:
     name: run vmm-tests [x64-linux]
     runs-on:
     - self-hosted
@@ -3560,29 +3822,29 @@ jobs:
 
         chmod +x $AgentTempDirNormal/used_artifacts/_internal-flowey-bootstrap-x86_64-linux-uid-6/flowey
 
-        echo '"debug"' | flowey v 20 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey v 20 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey v 21 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey v 21 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey v 20 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey v 21 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
-        echo "$AgentTempDirNormal/used_artifacts/x64-guest_test_uefi" | flowey v 20 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-musl-pipette" | flowey v 20 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-openvmm" | flowey v 20 'artifact_use_from_x64-linux-openvmm' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-vmm-tests-archive" | flowey v 20 'artifact_use_from_x64-linux-vmm-tests-archive' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-windows-pipette" | flowey v 20 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-guest_test_uefi" | flowey v 21 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-musl-pipette" | flowey v 21 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-openvmm" | flowey v 21 'artifact_use_from_x64-linux-openvmm' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-vmm-tests-archive" | flowey v 21 'artifact_use_from_x64-linux-vmm-tests-archive' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-windows-pipette" | flowey v 21 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
       shell: bash
     - name: ensure /dev/kvm is accessible
-      run: flowey e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+      run: flowey e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
       shell: bash
     - name: create cargo-nextest cache dir
-      run: flowey e 20 flowey_lib_common::download_cargo_nextest 0
+      run: flowey e 21 flowey_lib_common::download_cargo_nextest 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 4
-        flowey v 20 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 4
+        flowey v 21 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__5
       uses: actions/cache@v4
@@ -3592,39 +3854,39 @@ jobs:
       name: 'Restore cache: cargo-nextest'
     - name: add default cargo home to path
       run: |-
-        flowey v 20 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 6
-        flowey e 20 flowey_lib_common::cfg_persistent_dir_cargo_install 0
-        flowey e 20 flowey_lib_common::install_rust 0
+        flowey e 21 flowey_lib_common::cache 6
+        flowey e 21 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey e 21 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
-      run: flowey e 20 flowey_lib_common::install_rust 1
+      run: flowey e 21 flowey_lib_common::install_rust 1
       shell: bash
     - name: detect active toolchain
-      run: flowey e 20 flowey_lib_common::install_rust 2
+      run: flowey e 21 flowey_lib_common::install_rust 2
       shell: bash
     - name: report $CARGO_HOME
-      run: flowey e 20 flowey_lib_common::install_rust 3
+      run: flowey e 21 flowey_lib_common::install_rust 3
       shell: bash
     - name: installing cargo-nextest
-      run: flowey e 20 flowey_lib_common::download_cargo_nextest 1
+      run: flowey e 21 flowey_lib_common::download_cargo_nextest 1
       shell: bash
     - name: checking if packages need to be installed
-      run: flowey e 20 flowey_lib_common::install_dist_pkg 0
+      run: flowey e 21 flowey_lib_common::install_dist_pkg 0
       shell: bash
     - name: installing packages
-      run: flowey e 20 flowey_lib_common::install_dist_pkg 1
+      run: flowey e 21 flowey_lib_common::install_dist_pkg 1
       shell: bash
     - name: create gh-release-download cache dir
-      run: flowey e 20 flowey_lib_common::download_gh_release 0
+      run: flowey e 21 flowey_lib_common::download_gh_release 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 8
-        flowey v 20 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 8
+        flowey v 21 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__9
       uses: actions/cache@v4
@@ -3634,20 +3896,20 @@ jobs:
       name: 'Restore cache: gh-release-download'
     - name: download artifacts from github releases
       run: |-
-        flowey v 20 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 10
-        flowey e 20 flowey_lib_common::download_gh_release 1
+        flowey e 21 flowey_lib_common::cache 10
+        flowey e 21 flowey_lib_common::download_gh_release 1
       shell: bash
     - name: unpack mu_msvm package (x64)
-      run: flowey e 20 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      run: flowey e 21 flowey_lib_hvlite::download_uefi_mu_msvm 0
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey e 20 flowey_lib_common::git_checkout 0
-        flowey v 20 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey v 20 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::git_checkout 0
+        flowey v 21 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey v 21 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -3659,41 +3921,41 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey v 20 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey e 20 flowey_lib_common::git_checkout 3
-        flowey e 20 flowey_lib_hvlite::git_checkout_openvmm_repo 0
-        flowey e 20 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+        flowey e 21 flowey_lib_common::git_checkout 3
+        flowey e 21 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey e 21 flowey_lib_hvlite::cfg_openvmm_magicpath 0
       shell: bash
     - name: move MSVM.fd into its magic folder
       run: |-
-        flowey e 20 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
-        flowey e 20 flowey_lib_hvlite::run_cargo_nextest_run 0
+        flowey e 21 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+        flowey e 21 flowey_lib_hvlite::run_cargo_nextest_run 0
       shell: bash
     - name: creating new test content dir
-      run: flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      run: flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
       shell: bash
     - name: resolve openvmm artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_openvmm::resolve 0
       shell: bash
     - name: resolve pipette artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_pipette::resolve 1
+      run: flowey e 21 flowey_lib_hvlite::artifact_pipette::resolve 1
       shell: bash
     - name: resolve pipette artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_pipette::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_pipette::resolve 0
       shell: bash
     - name: resolve guest_test_uefi artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
       shell: bash
     - name: create azcopy cache dir
-      run: flowey e 20 flowey_lib_common::download_azcopy 0
+      run: flowey e 21 flowey_lib_common::download_azcopy 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 0
-        flowey v 20 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 0
+        flowey v 21 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__1
       uses: actions/cache@v4
@@ -3703,41 +3965,41 @@ jobs:
       name: 'Restore cache: azcopy'
     - name: installing azcopy
       run: |-
-        flowey v 20 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 2
-        flowey e 20 flowey_lib_common::download_azcopy 1
+        flowey e 21 flowey_lib_common::cache 2
+        flowey e 21 flowey_lib_common::download_azcopy 1
       shell: bash
     - name: calculating required VMM tests disk images
-      run: flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      run: flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
       shell: bash
     - name: downloading VMM test disk images
       run: |-
-        flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
-        flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+        flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
       shell: bash
     - name: unpack openvmm-deps archive
-      run: flowey e 20 flowey_lib_hvlite::download_openvmm_deps 0
+      run: flowey e 21 flowey_lib_hvlite::download_openvmm_deps 0
       shell: bash
     - name: setting up vmm_tests env
       run: |-
-        flowey e 20 flowey_lib_hvlite::init_vmm_tests_env 0
-        flowey e 20 flowey_lib_hvlite::run_cargo_nextest_run 1
+        flowey e 21 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey e 21 flowey_lib_hvlite::run_cargo_nextest_run 1
       shell: bash
     - name: resolve vmm tests archive artifact
       run: |-
-        flowey e 20 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
-        flowey e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 1
+        flowey e 21 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 1
       shell: bash
     - name: run 'vmm_tests' nextest tests
       run: |-
-        flowey e 20 flowey_lib_common::run_cargo_nextest_run 0
-        flowey e 20 flowey_lib_common::run_cargo_nextest_run 1
-        flowey e 20 flowey_lib_common::publish_test_results 4
-        flowey e 20 flowey_lib_common::publish_test_results 5
-        flowey v 20 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey v 20 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::run_cargo_nextest_run 0
+        flowey e 21 flowey_lib_common::run_cargo_nextest_run 1
+        flowey e 21 flowey_lib_common::publish_test_results 4
+        flowey e 21 flowey_lib_common::publish_test_results 5
+        flowey v 21 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey v 21 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
@@ -3748,10 +4010,10 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey e 20 flowey_lib_common::publish_test_results 7
-        flowey e 20 flowey_lib_common::publish_test_results 8
-        flowey v 20 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey v 20 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::publish_test_results 7
+        flowey e 21 flowey_lib_common::publish_test_results 8
+        flowey v 21 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey v 21 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
@@ -3762,12 +4024,12 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
-        flowey e 20 flowey_lib_common::publish_test_results 0
-        flowey e 20 flowey_lib_common::publish_test_results 1
-        flowey e 20 flowey_lib_common::publish_test_results 2
-        flowey v 20 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
-        flowey v 20 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey e 21 flowey_lib_common::publish_test_results 0
+        flowey e 21 flowey_lib_common::publish_test_results 1
+        flowey e 21 flowey_lib_common::publish_test_results 2
+        flowey v 21 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey v 21 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
@@ -3777,18 +4039,18 @@ jobs:
       name: 'publish test results: x64-linux-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
-      run: flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      run: flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
       shell: bash
     - name: 'validate cache entry: azcopy'
-      run: flowey e 20 flowey_lib_common::cache 3
+      run: flowey e 21 flowey_lib_common::cache 3
       shell: bash
     - name: 'validate cache entry: cargo-nextest'
-      run: flowey e 20 flowey_lib_common::cache 7
+      run: flowey e 21 flowey_lib_common::cache 7
       shell: bash
     - name: 'validate cache entry: gh-release-download'
-      run: flowey e 20 flowey_lib_common::cache 11
+      run: flowey e 21 flowey_lib_common::cache 11
       shell: bash
-  job21:
+  job22:
     name: run vmm-tests [aarch64-windows]
     runs-on:
     - self-hosted
@@ -3872,27 +4134,27 @@ jobs:
 
         chmod +x $AgentTempDirNormal/bootstrapped-flowey/flowey.exe
 
-        echo '"debug"' | flowey.exe v 21 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey.exe v 21 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey.exe v 22 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey.exe v 22 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey.exe v 21 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey.exe v 22 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-guest_test_uefi" | flowey.exe v 21 'artifact_use_from_aarch64-guest_test_uefi' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-linux-musl-pipette" | flowey.exe v 21 'artifact_use_from_aarch64-linux-musl-pipette' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-openhcl-igvm" | flowey.exe v 21 'artifact_use_from_aarch64-openhcl-igvm' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-openvmm" | flowey.exe v 21 'artifact_use_from_aarch64-windows-openvmm' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-pipette" | flowey.exe v 21 'artifact_use_from_aarch64-windows-pipette' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-vmm-tests-archive" | flowey.exe v 21 'artifact_use_from_aarch64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-guest_test_uefi" | flowey.exe v 22 'artifact_use_from_aarch64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-linux-musl-pipette" | flowey.exe v 22 'artifact_use_from_aarch64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-openhcl-igvm" | flowey.exe v 22 'artifact_use_from_aarch64-openhcl-igvm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-openvmm" | flowey.exe v 22 'artifact_use_from_aarch64-windows-openvmm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-pipette" | flowey.exe v 22 'artifact_use_from_aarch64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-vmm-tests-archive" | flowey.exe v 22 'artifact_use_from_aarch64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
       shell: bash
     - name: create cargo-nextest cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_cargo_nextest 0
+      run: flowey.exe e 22 flowey_lib_common::download_cargo_nextest 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 4
-        flowey.exe v 21 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 4
+        flowey.exe v 22 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__5
       uses: actions/cache@v4
@@ -3902,33 +4164,33 @@ jobs:
       name: 'Restore cache: cargo-nextest'
     - name: add default cargo home to path
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 6
-        flowey.exe e 21 flowey_lib_common::cfg_persistent_dir_cargo_install 0
-        flowey.exe e 21 flowey_lib_common::install_rust 0
+        flowey.exe e 22 flowey_lib_common::cache 6
+        flowey.exe e 22 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey.exe e 22 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
-      run: flowey.exe e 21 flowey_lib_common::install_rust 1
+      run: flowey.exe e 22 flowey_lib_common::install_rust 1
       shell: bash
     - name: detect active toolchain
-      run: flowey.exe e 21 flowey_lib_common::install_rust 2
+      run: flowey.exe e 22 flowey_lib_common::install_rust 2
       shell: bash
     - name: report $CARGO_HOME
-      run: flowey.exe e 21 flowey_lib_common::install_rust 3
+      run: flowey.exe e 22 flowey_lib_common::install_rust 3
       shell: bash
     - name: installing cargo-nextest
-      run: flowey.exe e 21 flowey_lib_common::download_cargo_nextest 1
+      run: flowey.exe e 22 flowey_lib_common::download_cargo_nextest 1
       shell: bash
     - name: create gh-release-download cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_gh_release 0
+      run: flowey.exe e 22 flowey_lib_common::download_gh_release 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 8
-        flowey.exe v 21 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 8
+        flowey.exe v 22 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__9
       uses: actions/cache@v4
@@ -3938,20 +4200,20 @@ jobs:
       name: 'Restore cache: gh-release-download'
     - name: download artifacts from github releases
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 10
-        flowey.exe e 21 flowey_lib_common::download_gh_release 1
+        flowey.exe e 22 flowey_lib_common::cache 10
+        flowey.exe e 22 flowey_lib_common::download_gh_release 1
       shell: bash
     - name: unpack mu_msvm package (aarch64)
-      run: flowey.exe e 21 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_uefi_mu_msvm 0
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey.exe e 21 flowey_lib_common::git_checkout 0
-        flowey.exe v 21 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey.exe v 21 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::git_checkout 0
+        flowey.exe v 22 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey.exe v 22 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -3963,47 +4225,47 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey.exe v 21 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey.exe e 21 flowey_lib_common::git_checkout 3
-        flowey.exe e 21 flowey_lib_hvlite::git_checkout_openvmm_repo 0
-        flowey.exe e 21 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+        flowey.exe e 22 flowey_lib_common::git_checkout 3
+        flowey.exe e 22 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey.exe e 22 flowey_lib_hvlite::cfg_openvmm_magicpath 0
       shell: bash
     - name: move MSVM.fd into its magic folder
-      run: flowey.exe e 21 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+      run: flowey.exe e 22 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
       shell: bash
     - name: init hyperv tests
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::init_hyperv_tests 0
-        flowey.exe e 21 flowey_lib_hvlite::run_cargo_nextest_run 0
+        flowey.exe e 22 flowey_lib_hvlite::init_hyperv_tests 0
+        flowey.exe e 22 flowey_lib_hvlite::run_cargo_nextest_run 0
       shell: bash
     - name: creating new test content dir
-      run: flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      run: flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
       shell: bash
     - name: resolve openvmm artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_openvmm::resolve 0
       shell: bash
     - name: resolve pipette artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_pipette::resolve 1
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_pipette::resolve 1
       shell: bash
     - name: resolve pipette artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_pipette::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_pipette::resolve 0
       shell: bash
     - name: resolve guest_test_uefi artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
       shell: bash
     - name: resolve OpenHCL igvm artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
       shell: bash
     - name: create azcopy cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_azcopy 0
+      run: flowey.exe e 22 flowey_lib_common::download_azcopy 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 0
-        flowey.exe v 21 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 0
+        flowey.exe v 22 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__1
       uses: actions/cache@v4
@@ -4013,41 +4275,41 @@ jobs:
       name: 'Restore cache: azcopy'
     - name: installing azcopy
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 2
-        flowey.exe e 21 flowey_lib_common::download_azcopy 1
+        flowey.exe e 22 flowey_lib_common::cache 2
+        flowey.exe e 22 flowey_lib_common::download_azcopy 1
       shell: bash
     - name: calculating required VMM tests disk images
-      run: flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
       shell: bash
     - name: downloading VMM test disk images
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
-        flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+        flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
       shell: bash
     - name: unpack openvmm-deps archive
-      run: flowey.exe e 21 flowey_lib_hvlite::download_openvmm_deps 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_openvmm_deps 0
       shell: bash
     - name: setting up vmm_tests env
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::init_vmm_tests_env 0
-        flowey.exe e 21 flowey_lib_hvlite::run_cargo_nextest_run 1
+        flowey.exe e 22 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey.exe e 22 flowey_lib_hvlite::run_cargo_nextest_run 1
       shell: bash
     - name: resolve vmm tests archive artifact
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
-        flowey.exe e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+        flowey.exe e 22 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey.exe e 22 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
       shell: bash
     - name: run 'vmm_tests' nextest tests
       run: |-
-        flowey.exe e 21 flowey_lib_common::run_cargo_nextest_run 0
-        flowey.exe e 21 flowey_lib_common::run_cargo_nextest_run 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 4
-        flowey.exe e 21 flowey_lib_common::publish_test_results 5
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::run_cargo_nextest_run 0
+        flowey.exe e 22 flowey_lib_common::run_cargo_nextest_run 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 4
+        flowey.exe e 22 flowey_lib_common::publish_test_results 5
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
@@ -4058,10 +4320,10 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey.exe e 21 flowey_lib_common::publish_test_results 7
-        flowey.exe e 21 flowey_lib_common::publish_test_results 8
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::publish_test_results 7
+        flowey.exe e 22 flowey_lib_common::publish_test_results 8
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
@@ -4072,12 +4334,12 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 0
-        flowey.exe e 21 flowey_lib_common::publish_test_results 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 2
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 0
+        flowey.exe e 22 flowey_lib_common::publish_test_results 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 2
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
@@ -4087,18 +4349,18 @@ jobs:
       name: 'publish test results: aarch64-windows-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
-      run: flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      run: flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
       shell: bash
     - name: 'validate cache entry: azcopy'
-      run: flowey.exe e 21 flowey_lib_common::cache 3
+      run: flowey.exe e 22 flowey_lib_common::cache 3
       shell: bash
     - name: 'validate cache entry: cargo-nextest'
-      run: flowey.exe e 21 flowey_lib_common::cache 7
+      run: flowey.exe e 22 flowey_lib_common::cache 7
       shell: bash
     - name: 'validate cache entry: gh-release-download'
-      run: flowey.exe e 21 flowey_lib_common::cache 11
+      run: flowey.exe e 22 flowey_lib_common::cache 11
       shell: bash
-  job22:
+  job23:
     name: test flowey local backend
     runs-on:
     - self-hosted
@@ -4169,18 +4431,18 @@ jobs:
 
         chmod +x $AgentTempDirNormal/bootstrapped-flowey/flowey
 
-        echo '"debug"' | flowey v 22 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey v 22 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey v 23 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey v 23 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey v 22 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey v 23 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey e 22 flowey_lib_common::git_checkout 0
-        flowey v 22 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey v 22 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 23 flowey_lib_common::git_checkout 0
+        flowey v 23 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey v 23 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -4192,24 +4454,24 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey v 22 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey v 23 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey e 22 flowey_lib_common::git_checkout 3
-        flowey e 22 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey e 23 flowey_lib_common::git_checkout 3
+        flowey e 23 flowey_lib_hvlite::git_checkout_openvmm_repo 0
       shell: bash
     - name: add default cargo home to path
-      run: flowey e 22 flowey_lib_common::install_rust 0
+      run: flowey e 23 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
       run: |-
-        flowey e 22 flowey_lib_common::install_rust 1
-        flowey v 22 'flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm:2:flowey_core/src/node/github_context.rs:42:41' --is-secret --update-from-stdin --is-raw-string <<EOF
+        flowey e 23 flowey_lib_common::install_rust 1
+        flowey v 23 'flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm:2:flowey_core/src/node/github_context.rs:42:41' --is-secret --update-from-stdin --is-raw-string <<EOF
         ${{ github.token }}
         EOF
       shell: bash
     - name: test cargo xflowey build-igvm x64 --install-missing-deps
-      run: flowey e 22 flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm 1
+      run: flowey e 23 flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm 1
       shell: bash
   job3:
     name: publish openvmm.dev
diff --git a/.github/workflows/openvmm-pr.yaml b/.github/workflows/openvmm-pr.yaml
index 46f7d81ab9..decd0cfcc3 100644
--- a/.github/workflows/openvmm-pr.yaml
+++ b/.github/workflows/openvmm-pr.yaml
@@ -2975,11 +2975,13 @@ jobs:
       run: flowey.exe e 18 flowey_lib_common::cache 11
       shell: bash
   job19:
-    name: run vmm-tests [x64-windows-amd]
+    name: run vmm-tests [x64-windows-intel-tdx]
     runs-on:
     - self-hosted
-    - 1ES.Pool=OpenVMM-GitHub-Win-Pool-WestUS3
-    - 1ES.ImageOverride=HvLite-CI-Win-Ge-Image-256GB
+    - Windows
+    - X64
+    - TDX
+    - Baremetal
     permissions:
       contents: read
       id-token: write
@@ -3188,9 +3190,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-crash-dumps
+        name: x64-windows-intel-tdx-vmm-tests-crash-dumps
         path: ${{ env.floweyvar2 }}
-      name: 'publish test results: crash-dumps (x64-windows-amd-vmm-tests)'
+      name: 'publish test results: crash-dumps (x64-windows-intel-tdx-vmm-tests)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
@@ -3202,9 +3204,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-logs
+        name: x64-windows-intel-tdx-vmm-tests-logs
         path: ${{ env.floweyvar3 }}
-      name: 'publish test results: logs (x64-windows-amd-vmm-tests)'
+      name: 'publish test results: logs (x64-windows-intel-tdx-vmm-tests)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
@@ -3218,9 +3220,9 @@ jobs:
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
       with:
-        name: x64-windows-amd-vmm-tests-junit-xml
+        name: x64-windows-intel-tdx-vmm-tests-junit-xml
         path: ${{ env.floweyvar1 }}
-      name: 'publish test results: x64-windows-amd-vmm-tests (JUnit XML)'
+      name: 'publish test results: x64-windows-intel-tdx-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
       run: flowey.exe e 19 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
@@ -3414,6 +3416,266 @@ jobs:
         name: x64-linux-rustdoc
         path: ${{ runner.temp }}/publish_artifacts/x64-linux-rustdoc/
   job20:
+    name: run vmm-tests [x64-windows-amd]
+    runs-on:
+    - self-hosted
+    - 1ES.Pool=OpenVMM-GitHub-Win-Pool-WestUS3
+    - 1ES.ImageOverride=HvLite-CI-Win-Ge-Image-256GB
+    permissions:
+      contents: read
+      id-token: write
+    needs:
+    - job12
+    - job12
+    - job10
+    - job8
+    - job8
+    - job8
+    if: github.event.pull_request.draft == false
+    steps:
+    - name: 🌼📦 Download artifacts
+      uses: actions/download-artifact@v4
+      with:
+        pattern: '{_internal-flowey-bootstrap-x86_64-windows-uid-11,x64-guest_test_uefi,x64-linux-musl-pipette,x64-openhcl-igvm,x64-windows-openvmm,x64-windows-pipette,x64-windows-vmm-tests-archive}'
+        path: ${{ runner.temp }}/used_artifacts/
+    - run: echo "${{ runner.temp }}/used_artifacts/_internal-flowey-bootstrap-x86_64-windows-uid-11" >> $GITHUB_PATH
+      shell: bash
+      name: 🌼📦 Add flowey to PATH
+    - name: 🌼🛫 Initialize job
+      run: |
+        AgentTempDirNormal="${{ runner.temp }}"
+        AgentTempDirNormal=$(echo "$AgentTempDirNormal" | sed -e 's|\\|\/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/\L\1\E/\2|')
+        echo "AgentTempDirNormal=$AgentTempDirNormal" >> $GITHUB_ENV
+
+        chmod +x $AgentTempDirNormal/used_artifacts/_internal-flowey-bootstrap-x86_64-windows-uid-11/flowey.exe
+
+        echo '"debug"' | flowey.exe v 20 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey.exe v 20 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+
+        cat <<'EOF' | flowey.exe v 20 'verbose' --update-from-stdin
+        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
+        EOF
+        echo "${{ runner.temp }}\\used_artifacts\\x64-guest_test_uefi" | flowey.exe v 20 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-linux-musl-pipette" | flowey.exe v 20 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-openhcl-igvm" | flowey.exe v 20 'artifact_use_from_x64-openhcl-igvm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-openvmm" | flowey.exe v 20 'artifact_use_from_x64-windows-openvmm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-pipette" | flowey.exe v 20 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\x64-windows-vmm-tests-archive" | flowey.exe v 20 'artifact_use_from_x64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
+      shell: bash
+    - name: create cargo-nextest cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_cargo_nextest 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 4
+        flowey.exe v 20 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__5
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar7 }}
+        path: ${{ env.floweyvar8 }}
+      name: 'Restore cache: cargo-nextest'
+    - name: add default cargo home to path
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 6
+        flowey.exe e 20 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey.exe e 20 flowey_lib_common::install_rust 0
+      shell: bash
+    - name: install Rust
+      run: flowey.exe e 20 flowey_lib_common::install_rust 1
+      shell: bash
+    - name: detect active toolchain
+      run: flowey.exe e 20 flowey_lib_common::install_rust 2
+      shell: bash
+    - name: report $CARGO_HOME
+      run: flowey.exe e 20 flowey_lib_common::install_rust 3
+      shell: bash
+    - name: installing cargo-nextest
+      run: flowey.exe e 20 flowey_lib_common::download_cargo_nextest 1
+      shell: bash
+    - name: create gh-release-download cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_gh_release 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 8
+        flowey.exe v 20 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__9
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar9 }}
+        path: ${{ env.floweyvar10 }}
+      name: 'Restore cache: gh-release-download'
+    - name: download artifacts from github releases
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 10
+        flowey.exe e 20 flowey_lib_common::download_gh_release 1
+      shell: bash
+    - name: unpack mu_msvm package (x64)
+      run: flowey.exe e 20 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      shell: bash
+    - name: check if openvmm needs to be cloned
+      run: |-
+        flowey.exe e 20 flowey_lib_common::git_checkout 0
+        flowey.exe v 20 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey.exe v 20 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__git_checkout__1
+      uses: actions/checkout@v4
+      with:
+        fetch-depth: '1'
+        path: repo0
+        persist-credentials: ${{ env.floweyvar4 }}
+      name: checkout repo openvmm
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: report cloned repo directories
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        ${{ github.workspace }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::git_checkout 3
+        flowey.exe e 20 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey.exe e 20 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+      shell: bash
+    - name: move MSVM.fd into its magic folder
+      run: flowey.exe e 20 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+      shell: bash
+    - name: init hyperv tests
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::init_hyperv_tests 0
+        flowey.exe e 20 flowey_lib_hvlite::run_cargo_nextest_run 0
+      shell: bash
+    - name: creating new test content dir
+      run: flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      shell: bash
+    - name: resolve openvmm artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      shell: bash
+    - name: resolve pipette artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_pipette::resolve 1
+      shell: bash
+    - name: resolve pipette artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_pipette::resolve 0
+      shell: bash
+    - name: resolve guest_test_uefi artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      shell: bash
+    - name: resolve OpenHCL igvm artifact
+      run: flowey.exe e 20 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
+      shell: bash
+    - name: create azcopy cache dir
+      run: flowey.exe e 20 flowey_lib_common::download_azcopy 0
+      shell: bash
+    - name: Pre-processing cache vars
+      run: |-
+        flowey.exe e 20 flowey_lib_common::cache 0
+        flowey.exe v 20 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey.exe v 20 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+      shell: bash
+    - id: flowey_lib_common__cache__1
+      uses: actions/cache@v4
+      with:
+        key: ${{ env.floweyvar5 }}
+        path: ${{ env.floweyvar6 }}
+      name: 'Restore cache: azcopy'
+    - name: installing azcopy
+      run: |-
+        flowey.exe v 20 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
+        EOF
+        flowey.exe e 20 flowey_lib_common::cache 2
+        flowey.exe e 20 flowey_lib_common::download_azcopy 1
+      shell: bash
+    - name: calculating required VMM tests disk images
+      run: flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      shell: bash
+    - name: downloading VMM test disk images
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey.exe e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+      shell: bash
+    - name: unpack openvmm-deps archive
+      run: flowey.exe e 20 flowey_lib_hvlite::download_openvmm_deps 0
+      shell: bash
+    - name: setting up vmm_tests env
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey.exe e 20 flowey_lib_hvlite::run_cargo_nextest_run 1
+      shell: bash
+    - name: resolve vmm tests archive artifact
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey.exe e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+      shell: bash
+    - name: run 'vmm_tests' nextest tests
+      run: |-
+        flowey.exe e 20 flowey_lib_common::run_cargo_nextest_run 0
+        flowey.exe e 20 flowey_lib_common::run_cargo_nextest_run 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 4
+        flowey.exe e 20 flowey_lib_common::publish_test_results 5
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__6
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-crash-dumps
+        path: ${{ env.floweyvar2 }}
+      name: 'publish test results: crash-dumps (x64-windows-amd-vmm-tests)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: 🦀 flowey rust steps
+      run: |-
+        flowey.exe e 20 flowey_lib_common::publish_test_results 7
+        flowey.exe e 20 flowey_lib_common::publish_test_results 8
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__9
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-logs
+        path: ${{ env.floweyvar3 }}
+      name: 'publish test results: logs (x64-windows-amd-vmm-tests)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: 🦀 flowey rust steps
+      run: |-
+        flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 0
+        flowey.exe e 20 flowey_lib_common::publish_test_results 1
+        flowey.exe e 20 flowey_lib_common::publish_test_results 2
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey.exe v 20 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+      shell: bash
+    - id: flowey_lib_common__publish_test_results__3
+      uses: actions/upload-artifact@v4
+      with:
+        name: x64-windows-amd-vmm-tests-junit-xml
+        path: ${{ env.floweyvar1 }}
+      name: 'publish test results: x64-windows-amd-vmm-tests (JUnit XML)'
+      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
+    - name: report test results to overall pipeline status
+      run: flowey.exe e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      shell: bash
+    - name: 'validate cache entry: azcopy'
+      run: flowey.exe e 20 flowey_lib_common::cache 3
+      shell: bash
+    - name: 'validate cache entry: cargo-nextest'
+      run: flowey.exe e 20 flowey_lib_common::cache 7
+      shell: bash
+    - name: 'validate cache entry: gh-release-download'
+      run: flowey.exe e 20 flowey_lib_common::cache 11
+      shell: bash
+  job21:
     name: run vmm-tests [x64-linux]
     runs-on:
     - self-hosted
@@ -3446,29 +3708,29 @@ jobs:
 
         chmod +x $AgentTempDirNormal/used_artifacts/_internal-flowey-bootstrap-x86_64-linux-uid-7/flowey
 
-        echo '"debug"' | flowey v 20 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey v 20 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey v 21 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey v 21 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey v 20 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey v 21 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
-        echo "$AgentTempDirNormal/used_artifacts/x64-guest_test_uefi" | flowey v 20 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-musl-pipette" | flowey v 20 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-openvmm" | flowey v 20 'artifact_use_from_x64-linux-openvmm' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-linux-vmm-tests-archive" | flowey v 20 'artifact_use_from_x64-linux-vmm-tests-archive' --update-from-stdin --is-raw-string
-        echo "$AgentTempDirNormal/used_artifacts/x64-windows-pipette" | flowey v 20 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-guest_test_uefi" | flowey v 21 'artifact_use_from_x64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-musl-pipette" | flowey v 21 'artifact_use_from_x64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-openvmm" | flowey v 21 'artifact_use_from_x64-linux-openvmm' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-linux-vmm-tests-archive" | flowey v 21 'artifact_use_from_x64-linux-vmm-tests-archive' --update-from-stdin --is-raw-string
+        echo "$AgentTempDirNormal/used_artifacts/x64-windows-pipette" | flowey v 21 'artifact_use_from_x64-windows-pipette' --update-from-stdin --is-raw-string
       shell: bash
     - name: ensure /dev/kvm is accessible
-      run: flowey e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+      run: flowey e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
       shell: bash
     - name: create cargo-nextest cache dir
-      run: flowey e 20 flowey_lib_common::download_cargo_nextest 0
+      run: flowey e 21 flowey_lib_common::download_cargo_nextest 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 4
-        flowey v 20 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 4
+        flowey v 21 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__5
       uses: actions/cache@v4
@@ -3478,39 +3740,39 @@ jobs:
       name: 'Restore cache: cargo-nextest'
     - name: add default cargo home to path
       run: |-
-        flowey v 20 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 6
-        flowey e 20 flowey_lib_common::cfg_persistent_dir_cargo_install 0
-        flowey e 20 flowey_lib_common::install_rust 0
+        flowey e 21 flowey_lib_common::cache 6
+        flowey e 21 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey e 21 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
-      run: flowey e 20 flowey_lib_common::install_rust 1
+      run: flowey e 21 flowey_lib_common::install_rust 1
       shell: bash
     - name: detect active toolchain
-      run: flowey e 20 flowey_lib_common::install_rust 2
+      run: flowey e 21 flowey_lib_common::install_rust 2
       shell: bash
     - name: report $CARGO_HOME
-      run: flowey e 20 flowey_lib_common::install_rust 3
+      run: flowey e 21 flowey_lib_common::install_rust 3
       shell: bash
     - name: installing cargo-nextest
-      run: flowey e 20 flowey_lib_common::download_cargo_nextest 1
+      run: flowey e 21 flowey_lib_common::download_cargo_nextest 1
       shell: bash
     - name: checking if packages need to be installed
-      run: flowey e 20 flowey_lib_common::install_dist_pkg 0
+      run: flowey e 21 flowey_lib_common::install_dist_pkg 0
       shell: bash
     - name: installing packages
-      run: flowey e 20 flowey_lib_common::install_dist_pkg 1
+      run: flowey e 21 flowey_lib_common::install_dist_pkg 1
       shell: bash
     - name: create gh-release-download cache dir
-      run: flowey e 20 flowey_lib_common::download_gh_release 0
+      run: flowey e 21 flowey_lib_common::download_gh_release 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 8
-        flowey v 20 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 8
+        flowey v 21 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__9
       uses: actions/cache@v4
@@ -3520,20 +3782,20 @@ jobs:
       name: 'Restore cache: gh-release-download'
     - name: download artifacts from github releases
       run: |-
-        flowey v 20 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 10
-        flowey e 20 flowey_lib_common::download_gh_release 1
+        flowey e 21 flowey_lib_common::cache 10
+        flowey e 21 flowey_lib_common::download_gh_release 1
       shell: bash
     - name: unpack mu_msvm package (x64)
-      run: flowey e 20 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      run: flowey e 21 flowey_lib_hvlite::download_uefi_mu_msvm 0
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey e 20 flowey_lib_common::git_checkout 0
-        flowey v 20 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey v 20 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::git_checkout 0
+        flowey v 21 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey v 21 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -3545,41 +3807,41 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey v 20 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey e 20 flowey_lib_common::git_checkout 3
-        flowey e 20 flowey_lib_hvlite::git_checkout_openvmm_repo 0
-        flowey e 20 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+        flowey e 21 flowey_lib_common::git_checkout 3
+        flowey e 21 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey e 21 flowey_lib_hvlite::cfg_openvmm_magicpath 0
       shell: bash
     - name: move MSVM.fd into its magic folder
       run: |-
-        flowey e 20 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
-        flowey e 20 flowey_lib_hvlite::run_cargo_nextest_run 0
+        flowey e 21 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+        flowey e 21 flowey_lib_hvlite::run_cargo_nextest_run 0
       shell: bash
     - name: creating new test content dir
-      run: flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      run: flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
       shell: bash
     - name: resolve openvmm artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_openvmm::resolve 0
       shell: bash
     - name: resolve pipette artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_pipette::resolve 1
+      run: flowey e 21 flowey_lib_hvlite::artifact_pipette::resolve 1
       shell: bash
     - name: resolve pipette artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_pipette::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_pipette::resolve 0
       shell: bash
     - name: resolve guest_test_uefi artifact
-      run: flowey e 20 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      run: flowey e 21 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
       shell: bash
     - name: create azcopy cache dir
-      run: flowey e 20 flowey_lib_common::download_azcopy 0
+      run: flowey e 21 flowey_lib_common::download_azcopy 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey e 20 flowey_lib_common::cache 0
-        flowey v 20 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
-        flowey v 20 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+        flowey e 21 flowey_lib_common::cache 0
+        flowey v 21 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey v 21 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__1
       uses: actions/cache@v4
@@ -3589,41 +3851,41 @@ jobs:
       name: 'Restore cache: azcopy'
     - name: installing azcopy
       run: |-
-        flowey v 20 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey v 21 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
         EOF
-        flowey e 20 flowey_lib_common::cache 2
-        flowey e 20 flowey_lib_common::download_azcopy 1
+        flowey e 21 flowey_lib_common::cache 2
+        flowey e 21 flowey_lib_common::download_azcopy 1
       shell: bash
     - name: calculating required VMM tests disk images
-      run: flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      run: flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
       shell: bash
     - name: downloading VMM test disk images
       run: |-
-        flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
-        flowey e 20 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+        flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
       shell: bash
     - name: unpack openvmm-deps archive
-      run: flowey e 20 flowey_lib_hvlite::download_openvmm_deps 0
+      run: flowey e 21 flowey_lib_hvlite::download_openvmm_deps 0
       shell: bash
     - name: setting up vmm_tests env
       run: |-
-        flowey e 20 flowey_lib_hvlite::init_vmm_tests_env 0
-        flowey e 20 flowey_lib_hvlite::run_cargo_nextest_run 1
+        flowey e 21 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey e 21 flowey_lib_hvlite::run_cargo_nextest_run 1
       shell: bash
     - name: resolve vmm tests archive artifact
       run: |-
-        flowey e 20 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
-        flowey e 20 flowey_lib_hvlite::test_nextest_vmm_tests_archive 1
+        flowey e 21 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 1
       shell: bash
     - name: run 'vmm_tests' nextest tests
       run: |-
-        flowey e 20 flowey_lib_common::run_cargo_nextest_run 0
-        flowey e 20 flowey_lib_common::run_cargo_nextest_run 1
-        flowey e 20 flowey_lib_common::publish_test_results 4
-        flowey e 20 flowey_lib_common::publish_test_results 5
-        flowey v 20 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey v 20 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::run_cargo_nextest_run 0
+        flowey e 21 flowey_lib_common::run_cargo_nextest_run 1
+        flowey e 21 flowey_lib_common::publish_test_results 4
+        flowey e 21 flowey_lib_common::publish_test_results 5
+        flowey v 21 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey v 21 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
@@ -3634,10 +3896,10 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey e 20 flowey_lib_common::publish_test_results 7
-        flowey e 20 flowey_lib_common::publish_test_results 8
-        flowey v 20 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey v 20 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_common::publish_test_results 7
+        flowey e 21 flowey_lib_common::publish_test_results 8
+        flowey v 21 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey v 21 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
@@ -3648,12 +3910,12 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
-        flowey e 20 flowey_lib_common::publish_test_results 0
-        flowey e 20 flowey_lib_common::publish_test_results 1
-        flowey e 20 flowey_lib_common::publish_test_results 2
-        flowey v 20 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
-        flowey v 20 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey e 21 flowey_lib_common::publish_test_results 0
+        flowey e 21 flowey_lib_common::publish_test_results 1
+        flowey e 21 flowey_lib_common::publish_test_results 2
+        flowey v 21 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey v 21 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
@@ -3663,18 +3925,18 @@ jobs:
       name: 'publish test results: x64-linux-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
-      run: flowey e 20 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      run: flowey e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
       shell: bash
     - name: 'validate cache entry: azcopy'
-      run: flowey e 20 flowey_lib_common::cache 3
+      run: flowey e 21 flowey_lib_common::cache 3
       shell: bash
     - name: 'validate cache entry: cargo-nextest'
-      run: flowey e 20 flowey_lib_common::cache 7
+      run: flowey e 21 flowey_lib_common::cache 7
       shell: bash
     - name: 'validate cache entry: gh-release-download'
-      run: flowey e 20 flowey_lib_common::cache 11
+      run: flowey e 21 flowey_lib_common::cache 11
       shell: bash
-  job21:
+  job22:
     name: run vmm-tests [aarch64-windows]
     runs-on:
     - self-hosted
@@ -3758,27 +4020,27 @@ jobs:
 
         chmod +x $AgentTempDirNormal/bootstrapped-flowey/flowey.exe
 
-        echo '"debug"' | flowey.exe v 21 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey.exe v 21 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey.exe v 22 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey.exe v 22 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey.exe v 21 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey.exe v 22 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-guest_test_uefi" | flowey.exe v 21 'artifact_use_from_aarch64-guest_test_uefi' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-linux-musl-pipette" | flowey.exe v 21 'artifact_use_from_aarch64-linux-musl-pipette' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-openhcl-igvm" | flowey.exe v 21 'artifact_use_from_aarch64-openhcl-igvm' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-openvmm" | flowey.exe v 21 'artifact_use_from_aarch64-windows-openvmm' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-pipette" | flowey.exe v 21 'artifact_use_from_aarch64-windows-pipette' --update-from-stdin --is-raw-string
-        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-vmm-tests-archive" | flowey.exe v 21 'artifact_use_from_aarch64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-guest_test_uefi" | flowey.exe v 22 'artifact_use_from_aarch64-guest_test_uefi' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-linux-musl-pipette" | flowey.exe v 22 'artifact_use_from_aarch64-linux-musl-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-openhcl-igvm" | flowey.exe v 22 'artifact_use_from_aarch64-openhcl-igvm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-openvmm" | flowey.exe v 22 'artifact_use_from_aarch64-windows-openvmm' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-pipette" | flowey.exe v 22 'artifact_use_from_aarch64-windows-pipette' --update-from-stdin --is-raw-string
+        echo "${{ runner.temp }}\\used_artifacts\\aarch64-windows-vmm-tests-archive" | flowey.exe v 22 'artifact_use_from_aarch64-windows-vmm-tests-archive' --update-from-stdin --is-raw-string
       shell: bash
     - name: create cargo-nextest cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_cargo_nextest 0
+      run: flowey.exe e 22 flowey_lib_common::download_cargo_nextest 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 4
-        flowey.exe v 21 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 4
+        flowey.exe v 22 'flowey_lib_common::cache:10:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar7 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:9:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar8 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__5
       uses: actions/cache@v4
@@ -3788,33 +4050,33 @@ jobs:
       name: 'Restore cache: cargo-nextest'
     - name: add default cargo home to path
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:12:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__5.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 6
-        flowey.exe e 21 flowey_lib_common::cfg_persistent_dir_cargo_install 0
-        flowey.exe e 21 flowey_lib_common::install_rust 0
+        flowey.exe e 22 flowey_lib_common::cache 6
+        flowey.exe e 22 flowey_lib_common::cfg_persistent_dir_cargo_install 0
+        flowey.exe e 22 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
-      run: flowey.exe e 21 flowey_lib_common::install_rust 1
+      run: flowey.exe e 22 flowey_lib_common::install_rust 1
       shell: bash
     - name: detect active toolchain
-      run: flowey.exe e 21 flowey_lib_common::install_rust 2
+      run: flowey.exe e 22 flowey_lib_common::install_rust 2
       shell: bash
     - name: report $CARGO_HOME
-      run: flowey.exe e 21 flowey_lib_common::install_rust 3
+      run: flowey.exe e 22 flowey_lib_common::install_rust 3
       shell: bash
     - name: installing cargo-nextest
-      run: flowey.exe e 21 flowey_lib_common::download_cargo_nextest 1
+      run: flowey.exe e 22 flowey_lib_common::download_cargo_nextest 1
       shell: bash
     - name: create gh-release-download cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_gh_release 0
+      run: flowey.exe e 22 flowey_lib_common::download_gh_release 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 8
-        flowey.exe v 21 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 8
+        flowey.exe v 22 'flowey_lib_common::cache:18:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar9 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:17:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar10 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__9
       uses: actions/cache@v4
@@ -3824,20 +4086,20 @@ jobs:
       name: 'Restore cache: gh-release-download'
     - name: download artifacts from github releases
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:20:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__9.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 10
-        flowey.exe e 21 flowey_lib_common::download_gh_release 1
+        flowey.exe e 22 flowey_lib_common::cache 10
+        flowey.exe e 22 flowey_lib_common::download_gh_release 1
       shell: bash
     - name: unpack mu_msvm package (aarch64)
-      run: flowey.exe e 21 flowey_lib_hvlite::download_uefi_mu_msvm 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_uefi_mu_msvm 0
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey.exe e 21 flowey_lib_common::git_checkout 0
-        flowey.exe v 21 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey.exe v 21 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::git_checkout 0
+        flowey.exe v 22 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar4 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey.exe v 22 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -3849,47 +4111,47 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey.exe v 21 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey.exe e 21 flowey_lib_common::git_checkout 3
-        flowey.exe e 21 flowey_lib_hvlite::git_checkout_openvmm_repo 0
-        flowey.exe e 21 flowey_lib_hvlite::cfg_openvmm_magicpath 0
+        flowey.exe e 22 flowey_lib_common::git_checkout 3
+        flowey.exe e 22 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey.exe e 22 flowey_lib_hvlite::cfg_openvmm_magicpath 0
       shell: bash
     - name: move MSVM.fd into its magic folder
-      run: flowey.exe e 21 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
+      run: flowey.exe e 22 flowey_lib_hvlite::init_openvmm_magicpath_uefi_mu_msvm 0
       shell: bash
     - name: init hyperv tests
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::init_hyperv_tests 0
-        flowey.exe e 21 flowey_lib_hvlite::run_cargo_nextest_run 0
+        flowey.exe e 22 flowey_lib_hvlite::init_hyperv_tests 0
+        flowey.exe e 22 flowey_lib_hvlite::run_cargo_nextest_run 0
       shell: bash
     - name: creating new test content dir
-      run: flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
+      run: flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 0
       shell: bash
     - name: resolve openvmm artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_openvmm::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_openvmm::resolve 0
       shell: bash
     - name: resolve pipette artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_pipette::resolve 1
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_pipette::resolve 1
       shell: bash
     - name: resolve pipette artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_pipette::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_pipette::resolve 0
       shell: bash
     - name: resolve guest_test_uefi artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_guest_test_uefi::resolve 0
       shell: bash
     - name: resolve OpenHCL igvm artifact
-      run: flowey.exe e 21 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
+      run: flowey.exe e 22 flowey_lib_hvlite::artifact_openhcl_igvm_from_recipe::resolve 0
       shell: bash
     - name: create azcopy cache dir
-      run: flowey.exe e 21 flowey_lib_common::download_azcopy 0
+      run: flowey.exe e 22 flowey_lib_common::download_azcopy 0
       shell: bash
     - name: Pre-processing cache vars
       run: |-
-        flowey.exe e 21 flowey_lib_common::cache 0
-        flowey.exe v 21 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
-        flowey.exe v 21 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
+        flowey.exe e 22 flowey_lib_common::cache 0
+        flowey.exe v 22 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:457:72' --write-to-gh-env floweyvar5 --is-raw-string
+        flowey.exe v 22 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:456:72' --write-to-gh-env floweyvar6 --is-raw-string
       shell: bash
     - id: flowey_lib_common__cache__1
       uses: actions/cache@v4
@@ -3899,41 +4161,41 @@ jobs:
       name: 'Restore cache: azcopy'
     - name: installing azcopy
       run: |-
-        flowey.exe v 21 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
+        flowey.exe v 22 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:514:46' --update-from-stdin --is-raw-string <<EOF
         ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
         EOF
-        flowey.exe e 21 flowey_lib_common::cache 2
-        flowey.exe e 21 flowey_lib_common::download_azcopy 1
+        flowey.exe e 22 flowey_lib_common::cache 2
+        flowey.exe e 22 flowey_lib_common::download_azcopy 1
       shell: bash
     - name: calculating required VMM tests disk images
-      run: flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 0
       shell: bash
     - name: downloading VMM test disk images
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
-        flowey.exe e 21 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
+        flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 1
+        flowey.exe e 22 flowey_lib_hvlite::download_openvmm_vmm_tests_vhds 2
       shell: bash
     - name: unpack openvmm-deps archive
-      run: flowey.exe e 21 flowey_lib_hvlite::download_openvmm_deps 0
+      run: flowey.exe e 22 flowey_lib_hvlite::download_openvmm_deps 0
       shell: bash
     - name: setting up vmm_tests env
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::init_vmm_tests_env 0
-        flowey.exe e 21 flowey_lib_hvlite::run_cargo_nextest_run 1
+        flowey.exe e 22 flowey_lib_hvlite::init_vmm_tests_env 0
+        flowey.exe e 22 flowey_lib_hvlite::run_cargo_nextest_run 1
       shell: bash
     - name: resolve vmm tests archive artifact
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
-        flowey.exe e 21 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
+        flowey.exe e 22 flowey_lib_hvlite::artifact_nextest_vmm_tests_archive::resolve 0
+        flowey.exe e 22 flowey_lib_hvlite::test_nextest_vmm_tests_archive 0
       shell: bash
     - name: run 'vmm_tests' nextest tests
       run: |-
-        flowey.exe e 21 flowey_lib_common::run_cargo_nextest_run 0
-        flowey.exe e 21 flowey_lib_common::run_cargo_nextest_run 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 4
-        flowey.exe e 21 flowey_lib_common::publish_test_results 5
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::run_cargo_nextest_run 0
+        flowey.exe e 22 flowey_lib_common::run_cargo_nextest_run 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 4
+        flowey.exe e 22 flowey_lib_common::publish_test_results 5
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:9:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar2 --is-raw-string --condvar flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:7:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__6
       uses: actions/upload-artifact@v4
@@ -3944,10 +4206,10 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey.exe e 21 flowey_lib_common::publish_test_results 7
-        flowey.exe e 21 flowey_lib_common::publish_test_results 8
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_common::publish_test_results 7
+        flowey.exe e 22 flowey_lib_common::publish_test_results 8
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:14:flowey_lib_common/src/publish_test_results.rs:149:62' --write-to-gh-env floweyvar3 --is-raw-string --condvar flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:12:flowey_lib_common/src/publish_test_results.rs:141:57' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__9
       uses: actions/upload-artifact@v4
@@ -3958,12 +4220,12 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: 🦀 flowey rust steps
       run: |-
-        flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 0
-        flowey.exe e 21 flowey_lib_common::publish_test_results 1
-        flowey.exe e 21 flowey_lib_common::publish_test_results 2
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
-        flowey.exe v 21 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
+        flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 0
+        flowey.exe e 22 flowey_lib_common::publish_test_results 1
+        flowey.exe e 22 flowey_lib_common::publish_test_results 2
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:4:flowey_lib_common/src/publish_test_results.rs:95:47' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43
+        flowey.exe v 22 'flowey_lib_common::publish_test_results:0:flowey_lib_common/src/publish_test_results.rs:77:43' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__publish_test_results__3
       uses: actions/upload-artifact@v4
@@ -3973,18 +4235,18 @@ jobs:
       name: 'publish test results: aarch64-windows-vmm-tests (JUnit XML)'
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report test results to overall pipeline status
-      run: flowey.exe e 21 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
+      run: flowey.exe e 22 flowey_lib_hvlite::_jobs::consume_and_test_nextest_vmm_tests_archive 2
       shell: bash
     - name: 'validate cache entry: azcopy'
-      run: flowey.exe e 21 flowey_lib_common::cache 3
+      run: flowey.exe e 22 flowey_lib_common::cache 3
       shell: bash
     - name: 'validate cache entry: cargo-nextest'
-      run: flowey.exe e 21 flowey_lib_common::cache 7
+      run: flowey.exe e 22 flowey_lib_common::cache 7
       shell: bash
     - name: 'validate cache entry: gh-release-download'
-      run: flowey.exe e 21 flowey_lib_common::cache 11
+      run: flowey.exe e 22 flowey_lib_common::cache 11
       shell: bash
-  job22:
+  job23:
     name: test flowey local backend
     runs-on:
     - self-hosted
@@ -4055,18 +4317,18 @@ jobs:
 
         chmod +x $AgentTempDirNormal/bootstrapped-flowey/flowey
 
-        echo '"debug"' | flowey v 22 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey v 22 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey v 23 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey v 23 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey v 22 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey v 23 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
       shell: bash
     - name: check if openvmm needs to be cloned
       run: |-
-        flowey e 22 flowey_lib_common::git_checkout 0
-        flowey v 22 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
-        flowey v 22 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
+        flowey e 23 flowey_lib_common::git_checkout 0
+        flowey v 23 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --write-to-gh-env floweyvar1 --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46
+        flowey v 23 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' --write-to-gh-env FLOWEY_CONDITION
       shell: bash
     - id: flowey_lib_common__git_checkout__1
       uses: actions/checkout@v4
@@ -4078,32 +4340,33 @@ jobs:
       if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
     - name: report cloned repo directories
       run: |-
-        flowey v 22 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
+        flowey v 23 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:42:41' --update-from-stdin --is-raw-string <<EOF
         ${{ github.workspace }}
         EOF
-        flowey e 22 flowey_lib_common::git_checkout 3
-        flowey e 22 flowey_lib_hvlite::git_checkout_openvmm_repo 0
+        flowey e 23 flowey_lib_common::git_checkout 3
+        flowey e 23 flowey_lib_hvlite::git_checkout_openvmm_repo 0
       shell: bash
     - name: add default cargo home to path
-      run: flowey e 22 flowey_lib_common::install_rust 0
+      run: flowey e 23 flowey_lib_common::install_rust 0
       shell: bash
     - name: install Rust
       run: |-
-        flowey e 22 flowey_lib_common::install_rust 1
-        flowey v 22 'flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm:2:flowey_core/src/node/github_context.rs:42:41' --is-secret --update-from-stdin --is-raw-string <<EOF
+        flowey e 23 flowey_lib_common::install_rust 1
+        flowey v 23 'flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm:2:flowey_core/src/node/github_context.rs:42:41' --is-secret --update-from-stdin --is-raw-string <<EOF
         ${{ github.token }}
         EOF
       shell: bash
     - name: test cargo xflowey build-igvm x64 --install-missing-deps
-      run: flowey e 22 flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm 1
+      run: flowey e 23 flowey_lib_hvlite::_jobs::test_local_flowey_build_igvm 1
       shell: bash
-  job23:
+  job24:
     name: openvmm checkin gates
     runs-on: ubuntu-latest
     permissions:
       contents: read
       id-token: write
     needs:
+    - job23
     - job22
     - job21
     - job20
@@ -4147,15 +4410,15 @@ jobs:
 
         chmod +x $AgentTempDirNormal/used_artifacts/_internal-flowey-bootstrap-x86_64-linux-uid-7/flowey
 
-        echo '"debug"' | flowey v 23 'FLOWEY_LOG' --update-from-stdin
-        echo "${{ runner.temp }}/work" | flowey v 23 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
+        echo '"debug"' | flowey v 24 'FLOWEY_LOG' --update-from-stdin
+        echo "${{ runner.temp }}/work" | flowey v 24 '_internal_WORKING_DIR' --update-from-stdin --is-raw-string
 
-        cat <<'EOF' | flowey v 23 'verbose' --update-from-stdin
+        cat <<'EOF' | flowey v 24 'verbose' --update-from-stdin
         ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
         EOF
       shell: bash
     - name: Check if any jobs failed
-      run: flowey e 23 flowey_lib_hvlite::_jobs::all_good_job 0
+      run: flowey e 24 flowey_lib_hvlite::_jobs::all_good_job 0
       shell: bash
   job3:
     name: xtask fmt (windows)
diff --git a/flowey/flowey_hvlite/src/pipelines/checkin_gates.rs b/flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
index 2eb8b5dd2c..a326e037c1 100644
--- a/flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
+++ b/flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
@@ -18,6 +18,8 @@ use flowey_lib_hvlite::run_cargo_build::common::CommonProfile;
 use flowey_lib_hvlite::run_cargo_build::common::CommonTriple;
 use std::path::PathBuf;
 use target_lexicon::Triple;
+use vmm_test_images::KnownIso;
+use vmm_test_images::KnownVhd;
 
 #[derive(Copy, Clone, clap::ValueEnum)]
 enum PipelineConfig {
@@ -900,6 +902,12 @@ impl IntoPipeline for CheckinGatesCli {
             .map_err(|missing| {
                 anyhow::anyhow!("missing required windows-intel vmm_tests artifact: {missing}")
             })?;
+        let vmm_tests_artifacts_windows_intel_tdx_x86 = vmm_tests_artifacts_windows_x86
+            .clone()
+            .finish()
+            .map_err(|missing| {
+                anyhow::anyhow!("missing required windows-tdx vmm_tests artifact: {missing}")
+            })?;
         let vmm_tests_artifacts_windows_amd_x86 = vmm_tests_artifacts_windows_x86
             .finish()
             .map_err(|missing| {
@@ -923,8 +931,23 @@ impl IntoPipeline for CheckinGatesCli {
             label: &'a str,
             target: CommonTriple,
             resolve_vmm_tests_artifacts: vmm_tests_artifact_builders::ResolveVmmTestsDepArtifacts,
+            nextest_filter_expr: String,
+            vhds: Vec<KnownVhd>,
+            isos: Vec<KnownIso>,
         }
 
+        // standard VM-based CI machines should be able to run all tests except
+        // those that require special hardware features (tdx) or need to be run
+        // on a baremetal host (hyper-v vbs doesn't seem to work nested)
+        let standard_filter = "all() & !test(tdx) & !(test(vbs) & test(hyperv))".to_string();
+        let standard_x64_vhds = vec![
+            KnownVhd::FreeBsd13_2,
+            KnownVhd::Gen1WindowsDataCenterCore2022,
+            KnownVhd::Gen2WindowsDataCenterCore2022,
+            KnownVhd::Ubuntu2204Server,
+        ];
+        let standard_x64_isos = vec![KnownIso::FreeBsd13_2];
+
         for VmmTestJobParams {
             platform,
             arch,
@@ -932,6 +955,9 @@ impl IntoPipeline for CheckinGatesCli {
             label,
             target,
             resolve_vmm_tests_artifacts,
+            nextest_filter_expr,
+            vhds,
+            isos,
         } in [
             VmmTestJobParams {
                 platform: FlowPlatform::Windows,
@@ -940,6 +966,20 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-intel",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_x86,
+                nextest_filter_expr: standard_filter.clone(),
+                vhds: standard_x64_vhds.clone(),
+                isos: standard_x64_isos.clone(),
+            },
+            VmmTestJobParams {
+                platform: FlowPlatform::Windows,
+                arch: FlowArch::X86_64,
+                gh_pool: crate::pipelines_shared::gh_pools::windows_tdx_self_hosted_baremetal(),
+                label: "x64-windows-intel-tdx",
+                target: CommonTriple::X86_64_WINDOWS_MSVC,
+                resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_tdx_x86,
+                nextest_filter_expr: "test(tdx) + (test(vbs) & test(hyperv))".to_string(),
+                vhds: vec![KnownVhd::Gen2WindowsDataCenterCore2025],
+                isos: vec![],
             },
             VmmTestJobParams {
                 platform: FlowPlatform::Windows,
@@ -948,6 +988,9 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-amd",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_amd_x86,
+                nextest_filter_expr: standard_filter.clone(),
+                vhds: standard_x64_vhds.clone(),
+                isos: standard_x64_isos.clone(),
             },
             VmmTestJobParams {
                 platform: FlowPlatform::Linux(FlowPlatformLinuxDistro::Ubuntu),
@@ -956,6 +999,13 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-linux",
                 target: CommonTriple::X86_64_LINUX_GNU,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_linux_x86,
+                // - OpenHCL is not supported on KVM
+                // - No legal way to obtain gen1 pcat blobs on non-msft linux machines
+                nextest_filter_expr: format!(
+                    "{standard_filter} & !test(openhcl) & !test(pcat_x64)"
+                ),
+                vhds: standard_x64_vhds,
+                isos: standard_x64_isos,
             },
             VmmTestJobParams {
                 platform: FlowPlatform::Windows,
@@ -964,6 +1014,9 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "aarch64-windows",
                 target: CommonTriple::AARCH64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_aarch64,
+                nextest_filter_expr: "all()".to_string(),
+                vhds: vec![KnownVhd::Ubuntu2404ServerAarch64],
+                isos: vec![],
             },
         ] {
             let test_label = format!("{label}-vmm-tests");
@@ -974,39 +1027,6 @@ impl IntoPipeline for CheckinGatesCli {
                 None
             };
 
-            let nextest_filter_expr = {
-                // start with `all()` to allow easy `and`-based refinements
-                let mut expr = "all()".to_string();
-
-                if matches!(
-                    target.as_triple().operating_system,
-                    target_lexicon::OperatingSystem::Linux
-                ) {
-                    // - OpenHCL is not supported on KVM
-                    // - No legal way to obtain gen1 pcat blobs on non-msft linux machines
-                    expr = format!("{expr} and not test(openhcl) and not test(pcat_x64)")
-                }
-
-                Some(expr)
-            };
-
-            let (vhds, isos) = match target.as_triple().architecture {
-                target_lexicon::Architecture::X86_64 => (
-                    vec![
-                        vmm_test_images::KnownVhd::FreeBsd13_2,
-                        vmm_test_images::KnownVhd::Gen1WindowsDataCenterCore2022,
-                        vmm_test_images::KnownVhd::Gen2WindowsDataCenterCore2022,
-                        vmm_test_images::KnownVhd::Ubuntu2204Server,
-                    ],
-                    vec![vmm_test_images::KnownIso::FreeBsd13_2],
-                ),
-                target_lexicon::Architecture::Aarch64(_) => (
-                    vec![vmm_test_images::KnownVhd::Ubuntu2404ServerAarch64],
-                    vec![],
-                ),
-                arch => anyhow::bail!("unsupported arch {arch}"),
-            };
-
             let use_vmm_tests_archive = match target {
                 CommonTriple::X86_64_WINDOWS_MSVC => &use_vmm_tests_archive_windows_x86,
                 CommonTriple::X86_64_LINUX_GNU => &use_vmm_tests_archive_linux_x86,
@@ -1024,7 +1044,7 @@ impl IntoPipeline for CheckinGatesCli {
                         target: target.as_triple(),
                         nextest_profile:
                             flowey_lib_hvlite::run_cargo_nextest_run::NextestProfile::Ci,
-                        nextest_filter_expr: nextest_filter_expr.clone(),
+                        nextest_filter_expr: Some(nextest_filter_expr),
                         dep_artifact_dirs: resolve_vmm_tests_artifacts(ctx),
                         vhds,
                         isos,
diff --git a/flowey/flowey_hvlite/src/pipelines_shared/gh_pools.rs b/flowey/flowey_hvlite/src/pipelines_shared/gh_pools.rs
index 2d0d56083e..05fdc22a57 100644
--- a/flowey/flowey_hvlite/src/pipelines_shared/gh_pools.rs
+++ b/flowey/flowey_hvlite/src/pipelines_shared/gh_pools.rs
@@ -83,3 +83,13 @@ pub fn windows_arm_self_hosted_baremetal() -> GhRunner {
         "Baremetal".to_string(),
     ])
 }
+
+pub fn windows_tdx_self_hosted_baremetal() -> GhRunner {
+    GhRunner::SelfHosted(vec![
+        "self-hosted".to_string(),
+        "Windows".to_string(),
+        "X64".to_string(),
+        "TDX".to_string(),
+        "Baremetal".to_string(),
+    ])
+}
diff --git a/vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs b/vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs
index 95be57a658..bbb4cd8cd6 100644
--- a/vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs
+++ b/vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs
@@ -64,6 +64,7 @@ impl petri_artifacts_core::ResolveTestArtifact for OpenvmmKnownPathsTestArtifact
             _ if id == test_vhd::GUEST_TEST_UEFI_AARCH64 => guest_test_uefi_disk_path(MachineArch::Aarch64),
             _ if id == test_vhd::GEN1_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen1WindowsDataCenterCore2022),
             _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2022),
+            _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2025),
             _ if id == test_vhd::FREE_BSD_13_2_X64 => get_guest_vhd_path(KnownVhd::FreeBsd13_2),
             _ if id == test_vhd::UBUNTU_2204_SERVER_X64 => get_guest_vhd_path(KnownVhd::Ubuntu2204Server),
             _ if id == test_vhd::UBUNTU_2404_SERVER_AARCH64 => get_guest_vhd_path(KnownVhd::Ubuntu2404ServerAarch64),
diff --git a/vmm_tests/petri_artifacts_vmm_test/src/lib.rs b/vmm_tests/petri_artifacts_vmm_test/src/lib.rs
index 88c8f9b332..0bdb7f6a8d 100644
--- a/vmm_tests/petri_artifacts_vmm_test/src/lib.rs
+++ b/vmm_tests/petri_artifacts_vmm_test/src/lib.rs
@@ -255,6 +255,22 @@ pub mod artifacts {
             const SIZE: u64 = 32214352384;
         }
 
+        declare_artifacts! {
+            /// Generation 2 windows test image
+            GEN2_WINDOWS_DATA_CENTER_CORE2025_X64
+        }
+
+        impl IsTestVhd for GEN2_WINDOWS_DATA_CENTER_CORE2025_X64 {
+            const OS_FLAVOR: OsFlavor = OsFlavor::Windows;
+            const ARCH: MachineArch = MachineArch::X86_64;
+        }
+
+        impl IsHostedOnHvliteAzureBlobStore for GEN2_WINDOWS_DATA_CENTER_CORE2025_X64 {
+            const FILENAME: &'static str =
+                "WindowsServer-2025-datacenter-core-smalldisk-g2-26100.3476.250306.vhd";
+            const SIZE: u64 = 32214352384;
+        }
+
         declare_artifacts! {
             /// FreeBSD 13.2
             FREE_BSD_13_2_X64
diff --git a/vmm_tests/vmm_test_images/src/lib.rs b/vmm_tests/vmm_test_images/src/lib.rs
index a353bab97f..1988743757 100644
--- a/vmm_tests/vmm_test_images/src/lib.rs
+++ b/vmm_tests/vmm_test_images/src/lib.rs
@@ -26,6 +26,7 @@ use petri_artifacts_vmm_test::tags::IsHostedOnHvliteAzureBlobStore;
 pub enum KnownVhd {
     Gen1WindowsDataCenterCore2022,
     Gen2WindowsDataCenterCore2022,
+    Gen2WindowsDataCenterCore2025,
     FreeBsd13_2,
     Ubuntu2204Server,
     Ubuntu2404ServerAarch64,
@@ -59,6 +60,11 @@ const KNOWN_VHD_METADATA: &[KnownVhdMeta] = &[
         petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64::FILENAME,
         petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64::SIZE,
     ),
+    KnownVhdMeta::new(
+        KnownVhd::Gen2WindowsDataCenterCore2025,
+        petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64::FILENAME,
+        petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64::SIZE,
+    ),
     KnownVhdMeta::new(
         KnownVhd::FreeBsd13_2,
         petri_artifacts_vmm_test::artifacts::test_vhd::FREE_BSD_13_2_X64::FILENAME,
diff --git a/vmm_tests/vmm_test_macros/src/lib.rs b/vmm_tests/vmm_test_macros/src/lib.rs
index b2028fcaae..5d545ea496 100644
--- a/vmm_tests/vmm_test_macros/src/lib.rs
+++ b/vmm_tests/vmm_test_macros/src/lib.rs
@@ -393,6 +393,15 @@ fn parse_vhd(input: ParseStream<'_>, generation: Generation) -> syn::Result<Imag
                 ::petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64
             )),
         },
+        "windows_datacenter_core_2025_x64" => match generation {
+            Generation::Gen1 => Err(Error::new(
+                word.span(),
+                "Windows Server 2025 is not available for PCAT",
+            )),
+            Generation::Gen2 => Ok(image_info!(
+                ::petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64
+            )),
+        },
         "ubuntu_2204_server_x64" => Ok(image_info!(
             ::petri_artifacts_vmm_test::artifacts::test_vhd::UBUNTU_2204_SERVER_X64
         )),
@@ -542,12 +551,13 @@ fn parse_extra_deps(input: ParseStream<'_>) -> syn::Result<Vec<Path>> {
 /// - `none`: No guest
 ///
 /// Valid VHD options are:
-/// - `ubuntu_2204_server_x64`: Canonical's provided Ubuntu Linux 22.04 cloudimg disk image
-/// - `windows_datacenter_core_2022_x64`: Our provided Windows Datacenter Core 2022 VHD
-/// - `freebsd_13_2_x64`: The FreeBSD Project's provided FreeBSD 13.2 VHD
+/// - `ubuntu_2204_server_x64`: Ubuntu Linux 22.04 cloudimg from Canonical
+/// - `windows_datacenter_core_2022_x64`: Windows Server Datacenter Core 2022 from the Azure Marketplace
+/// - `windows_datacenter_core_2025_x64`: Windows Server Datacenter Core 2025 from the Azure Marketplace
+/// - `freebsd_13_2_x64`: FreeBSD 13.2 from the FreeBSD Project
 ///
 /// Valid x64 ISO options are:
-/// - `freebsd_13_2_x64`: The FreeBSD Project's provided FreeBSD 13.2 installer ISO
+/// - `freebsd_13_2_x64`: FreeBSD 13.2 installer from the FreeBSD Project
 ///
 /// Valid OpenHCL UEFI options are:
 /// - `nvme`: Attach the boot drive via NVMe assigned to VTL2.
diff --git a/vmm_tests/vmm_tests/tests/tests/main.rs b/vmm_tests/vmm_tests/tests/tests/main.rs
index c2d9aaf5de..eaabb32b5c 100644
--- a/vmm_tests/vmm_tests/tests/tests/main.rs
+++ b/vmm_tests/vmm_tests/tests/tests/main.rs
@@ -10,6 +10,9 @@
 //!
 //! If you use the #[vmm_test] macro then all of the above requirements
 //! are handled for you automatically.
+//!
+//! Not all tests are expected to work in all scenarios. For example, Hyper-V
+//! tests do not work in WSL and TDX tests require a TDX-capable CPU.
 
 // Tests that run on more than one architecture.
 mod multiarch;
diff --git a/vmm_tests/vmm_tests/tests/tests/x86_64.rs b/vmm_tests/vmm_tests/tests/tests/x86_64.rs
index 9e51af8b4d..6c97c28477 100644
--- a/vmm_tests/vmm_tests/tests/tests/x86_64.rs
+++ b/vmm_tests/vmm_tests/tests/tests/x86_64.rs
@@ -27,7 +27,9 @@ use vmm_test_macros::vmm_test;
     openvmm_openhcl_uefi_x64[vbs](vhd(windows_datacenter_core_2022_x64)),
     openvmm_openhcl_uefi_x64[vbs](vhd(ubuntu_2204_server_x64)),
     hyperv_openhcl_uefi_x64(vhd(windows_datacenter_core_2022_x64)),
-    hyperv_openhcl_uefi_x64(vhd(ubuntu_2204_server_x64))
+    hyperv_openhcl_uefi_x64(vhd(ubuntu_2204_server_x64)),
+    hyperv_openhcl_uefi_x64[vbs](vhd(windows_datacenter_core_2025_x64)),
+    hyperv_openhcl_uefi_x64[tdx](vhd(windows_datacenter_core_2025_x64))
 )]
 async fn boot_no_agent(config: Box<dyn PetriVmConfig>) -> anyhow::Result<()> {
     let mut vm = config.run_without_agent().await?;


Reviews:
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T20:52:36Z
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T20:53:11Z
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T20:53:30Z
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T20:55:03Z
user: login: tjones60
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T20:57:30Z
user: login: tjones60
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T23:09:22Z
user: login: smmalis37
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T23:26:50Z
user: login: smmalis37
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T23:27:33Z
user: login: smmalis37
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-03T23:28:00Z
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:04:52Z
user: login: tjones60
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:14:30Z
user: login: smalis-msft
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:21:38Z
user: login: smalis-msft
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:37:40Z

Review comments:
diff_hunk: @@ -64,6 +64,7 @@ impl petri_artifacts_core::ResolveTestArtifact for OpenvmmKnownPathsTestArtifact
             _ if id == test_vhd::GUEST_TEST_UEFI_AARCH64 => guest_test_uefi_disk_path(MachineArch::Aarch64),
             _ if id == test_vhd::GEN1_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen1WindowsDataCenterCore2022),
             _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2022),
+            _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2025),
path: vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs
user: login: smalis-msft
body: Should we update all our tests to 2025?
created_at: 2025-04-03T20:52:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -393,6 +393,15 @@ fn parse_vhd(input: ParseStream<'_>, generation: Generation) -> syn::Result<Imag
                 ::petri_artifacts_vmm_test::artifacts::test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64
             )),
         },
+        "windows_datacenter_core_2025_x64" => match generation {
path: vmm_tests/vmm_test_macros/src/lib.rs
user: login: smalis-msft
body: Update the doccomment at the bottom
created_at: 2025-04-03T20:53:10Z
author_association: CONTRIBUTOR
diff_hunk: @@ -27,7 +27,9 @@ use vmm_test_macros::vmm_test;
     openvmm_openhcl_uefi_x64[vbs](vhd(windows_datacenter_core_2022_x64)),
     openvmm_openhcl_uefi_x64[vbs](vhd(ubuntu_2204_server_x64)),
     hyperv_openhcl_uefi_x64(vhd(windows_datacenter_core_2022_x64)),
-    hyperv_openhcl_uefi_x64(vhd(ubuntu_2204_server_x64))
+    hyperv_openhcl_uefi_x64(vhd(ubuntu_2204_server_x64)),
+    hyperv_openhcl_uefi_x64[vbs](vhd(windows_datacenter_core_2025_x64)),
path: vmm_tests/vmm_tests/tests/tests/x86_64.rs
user: login: smalis-msft
body: Awesome.
created_at: 2025-04-03T20:53:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -974,37 +988,49 @@ impl IntoPipeline for CheckinGatesCli {
                 None
             };
 
-            let nextest_filter_expr = {
-                // start with `all()` to allow easy `and`-based refinements
-                let mut expr = "all()".to_string();
-
-                if matches!(
-                    target.as_triple().operating_system,
-                    target_lexicon::OperatingSystem::Linux
-                ) {
-                    // - OpenHCL is not supported on KVM
-                    // - No legal way to obtain gen1 pcat blobs on non-msft linux machines
-                    expr = format!("{expr} and not test(openhcl) and not test(pcat_x64)")
-                }
+            let nextest_filter_expr = Some(
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smalis-msft
body: Should the filter_expr determination move into the VmmTestJobParams? I feel like that'd provide a better linkage between what we're testing and where.
created_at: 2025-04-03T20:55:02Z
author_association: CONTRIBUTOR
diff_hunk: @@ -64,6 +64,7 @@ impl petri_artifacts_core::ResolveTestArtifact for OpenvmmKnownPathsTestArtifact
             _ if id == test_vhd::GUEST_TEST_UEFI_AARCH64 => guest_test_uefi_disk_path(MachineArch::Aarch64),
             _ if id == test_vhd::GEN1_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen1WindowsDataCenterCore2022),
             _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2022_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2022),
+            _ if id == test_vhd::GEN2_WINDOWS_DATA_CENTER_CORE2025_X64 => get_guest_vhd_path(KnownVhd::Gen2WindowsDataCenterCore2025),
path: vmm_tests/petri_artifact_resolver_openvmm_known_paths/src/lib.rs
user: login: tjones60
body: There are some issues with running 2025 on some of the openvmm tests that will take some time to investigate and I don't want to block merging this on that. The way I've set it up, we won't need to download both on either platform.
created_at: 2025-04-03T20:57:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -974,37 +988,49 @@ impl IntoPipeline for CheckinGatesCli {
                 None
             };
 
-            let nextest_filter_expr = {
-                // start with `all()` to allow easy `and`-based refinements
-                let mut expr = "all()".to_string();
-
-                if matches!(
-                    target.as_triple().operating_system,
-                    target_lexicon::OperatingSystem::Linux
-                ) {
-                    // - OpenHCL is not supported on KVM
-                    // - No legal way to obtain gen1 pcat blobs on non-msft linux machines
-                    expr = format!("{expr} and not test(openhcl) and not test(pcat_x64)")
-                }
+            let nextest_filter_expr = Some(
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: tjones60
body: That makes sense, I moved both the filter and the vhd/isos to the jobparams.
created_at: 2025-04-03T23:09:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -940,6 +963,20 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-intel",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_x86,
+                nextest_filter_expr: standard_filter.to_string(),
+                vhds: standard_x64_vhds.to_vec(),
+                isos: standard_x64_isos.to_vec(),
+            },
+            VmmTestJobParams {
+                platform: FlowPlatform::Windows,
+                arch: FlowArch::X86_64,
+                gh_pool: crate::pipelines_shared::gh_pools::windows_tdx_self_hosted_baremetal(),
+                label: "x64-windows-intel-tdx",
+                target: CommonTriple::X86_64_WINDOWS_MSVC,
+                resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_tdx_x86,
+                nextest_filter_expr: "test(tdx) + (test(vbs) & test(hyperv))".to_string(),
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smmalis37
body: nit: move all these to_strings and to_vecs up to the inital standard_foos
created_at: 2025-04-03T23:26:49Z
author_association: CONTRIBUTOR
diff_hunk: @@ -940,6 +963,20 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-intel",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_x86,
+                nextest_filter_expr: standard_filter.to_string(),
+                vhds: standard_x64_vhds.to_vec(),
+                isos: standard_x64_isos.to_vec(),
+            },
+            VmmTestJobParams {
+                platform: FlowPlatform::Windows,
+                arch: FlowArch::X86_64,
+                gh_pool: crate::pipelines_shared::gh_pools::windows_tdx_self_hosted_baremetal(),
+                label: "x64-windows-intel-tdx",
+                target: CommonTriple::X86_64_WINDOWS_MSVC,
+                resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_tdx_x86,
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smmalis37
body: How come we can't run the vbs hyperv tests anywhere but here?
created_at: 2025-04-03T23:27:32Z
author_association: CONTRIBUTOR
diff_hunk: @@ -974,39 +1022,6 @@ impl IntoPipeline for CheckinGatesCli {
                 None
             };
 
-            let nextest_filter_expr = {
-                // start with `all()` to allow easy `and`-based refinements
-                let mut expr = "all()".to_string();
-
-                if matches!(
-                    target.as_triple().operating_system,
-                    target_lexicon::OperatingSystem::Linux
-                ) {
-                    // - OpenHCL is not supported on KVM
-                    // - No legal way to obtain gen1 pcat blobs on non-msft linux machines
-                    expr = format!("{expr} and not test(openhcl) and not test(pcat_x64)")
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smmalis37
body: Lets not lose these comments
created_at: 2025-04-03T23:27:59Z
author_association: CONTRIBUTOR
diff_hunk: @@ -923,15 +931,30 @@ impl IntoPipeline for CheckinGatesCli {
             label: &'a str,
             target: CommonTriple,
             resolve_vmm_tests_artifacts: vmm_tests_artifact_builders::ResolveVmmTestsDepArtifacts,
+            nextest_filter_expr: String,
+            vhds: Vec<KnownVhd>,
+            isos: Vec<KnownIso>,
         }
 
+        let standard_filter = "all() & !test(tdx) & !(test(vbs) & test(hyperv))";
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smalis-msft
body: Lets add some comments explaining why this is the standard
created_at: 2025-04-04T16:04:51Z
author_association: CONTRIBUTOR
diff_hunk: @@ -940,6 +963,20 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-intel",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_x86,
+                nextest_filter_expr: standard_filter.to_string(),
+                vhds: standard_x64_vhds.to_vec(),
+                isos: standard_x64_isos.to_vec(),
+            },
+            VmmTestJobParams {
+                platform: FlowPlatform::Windows,
+                arch: FlowArch::X86_64,
+                gh_pool: crate::pipelines_shared::gh_pools::windows_tdx_self_hosted_baremetal(),
+                label: "x64-windows-intel-tdx",
+                target: CommonTriple::X86_64_WINDOWS_MSVC,
+                resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_tdx_x86,
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: tjones60
body: They don't seem to work nested
created_at: 2025-04-04T16:14:30Z
author_association: CONTRIBUTOR
diff_hunk: @@ -940,6 +963,20 @@ impl IntoPipeline for CheckinGatesCli {
                 label: "x64-windows-intel",
                 target: CommonTriple::X86_64_WINDOWS_MSVC,
                 resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_x86,
+                nextest_filter_expr: standard_filter.to_string(),
+                vhds: standard_x64_vhds.to_vec(),
+                isos: standard_x64_isos.to_vec(),
+            },
+            VmmTestJobParams {
+                platform: FlowPlatform::Windows,
+                arch: FlowArch::X86_64,
+                gh_pool: crate::pipelines_shared::gh_pools::windows_tdx_self_hosted_baremetal(),
+                label: "x64-windows-intel-tdx",
+                target: CommonTriple::X86_64_WINDOWS_MSVC,
+                resolve_vmm_tests_artifacts: vmm_tests_artifacts_windows_intel_tdx_x86,
path: flowey/flowey_hvlite/src/pipelines/checkin_gates.rs
user: login: smalis-msft
body: Should document that.
created_at: 2025-04-04T16:21:38Z
author_association: CONTRIBUTOR

PR comments:
user: login: smalis-msft
created_at: 2025-04-03T21:05:25Z
body: I wonder if now is the time to add some top-level docs to the vmm_tests crate stating that users/devs should not expect all tests to pass on their local dev boxes. Unless you have a TDX capable CPU and a very recent windows build this test will always fail right?

Ideally we'd have some way of saying "run all tests compatible with my machine" but we don't today, that's been on the backlog forever.
author_association: CONTRIBUTOR
user: login: chris-oo
created_at: 2025-04-03T21:45:34Z
body: If anything, that "run all tests compatible with my machine" seems exceedingly useful in CI, too. 
author_association: MEMBER
user: login: tjones60
created_at: 2025-04-03T23:20:42Z
body: https://github.com/microsoft/openvmm/issues/1138
author_association: CONTRIBUTOR