##############################
# THIS FILE IS AUTOGENERATED #
#    DO NOT MANUALLY EDIT    #
##############################
name: '[flowey] OpenVMM Docs PR'
on:
  workflow_dispatch:
    inputs:
      verbose:
        description: Run with verbose output
        default: false
        required: false
        type: boolean
  pull_request:
    branches:
    - main
    types:
    - opened
    - synchronize
    - reopened
    - ready_for_review
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true
jobs:
  job0:
    name: build mdbook guide
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    if: github.event.pull_request.draft == false
    steps:
    - run: |
        set -x
        i=0; while [ $i -lt 5 ] && ! sudo apt-get update; do let "i=i+1"; sleep 1; done;
        sudo apt-get -o DPkg::Lock::Timeout=60 install gcc -y
        curl --fail --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain=1.87.0 -y
        . "$HOME/.cargo/env"
        echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
        rustup show
      if: runner.os == 'Linux'
      name: rustup (Linux)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/x86_64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'X64'
      name: rustup (Windows X64)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/aarch64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'ARM64'
      name: rustup (Windows ARM64)
      shell: bash
    - uses: actions/checkout@v4
      with:
        path: flowey_bootstrap
    - name: Build flowey
      run: |
        set -x
        CARGO_INCREMENTAL=0 RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z threads=8" cargo build -p flowey_hvlite --target x86_64-unknown-linux-gnu --profile flowey-ci
        OutDirNormal=$(echo "${{ runner.temp }}/bootstrapped-flowey" | sed -e 's|\\|\/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/\L\1\E/\2|')
        mkdir -p "$OutDirNormal"
        mv ./.github/workflows/openvmm-docs-pr.yaml "$OutDirNormal/pipeline.yaml"
        mv target/x86_64-unknown-linux-gnu/flowey-ci/flowey_hvlite "$OutDirNormal/flowey"
      working-directory: flowey_bootstrap
      shell: bash
    - run: echo "${{ runner.temp }}/bootstrapped-flowey" >> $GITHUB_PATH
      shell: bash
      name: 🌼📦 Add flowey to PATH
    - name: 🌼🔎 Self-check YAML
      run: |-
        ESCAPED_AGENT_TEMPDIR=$(
        cat <<'EOF' | sed 's/\\/\\\\/g'
        ${{ runner.temp }}
        EOF
        )
        flowey pipeline github --runtime $ESCAPED_AGENT_TEMPDIR/bootstrapped-flowey/pipeline.yaml --out .github/workflows/openvmm-docs-pr.yaml ci build-docs --config=pr
      shell: bash
    - 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/bootstrapped-flowey/flowey

        echo '"debug"' | flowey v 0 'FLOWEY_LOG' update
        echo "${{ runner.temp }}/work" | flowey v 0 '_internal_WORKING_DIR' --is-raw-string update

        cat <<'EOF' | flowey v 0 'verbose' update
        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
        EOF
        mkdir -p "$AgentTempDirNormal/publish_artifacts/guide"
        echo "$AgentTempDirNormal/publish_artifacts/guide" | flowey v 0 'artifact_publish_from_guide' --is-raw-string update
      shell: bash
    - name: create gh-release-download cache dir
      run: flowey e 0 flowey_lib_common::download_gh_release 0
      shell: bash
    - name: Pre-processing cache vars
      run: |-
        flowey e 0 flowey_lib_common::cache 0
        flowey v 0 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:407:72' --is-raw-string write-to-env github floweyvar2
        flowey v 0 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:406:72' --is-raw-string write-to-env github floweyvar3
      shell: bash
    - id: flowey_lib_common__cache__1
      uses: actions/cache@v4
      with:
        key: ${{ env.floweyvar2 }}
        path: ${{ env.floweyvar3 }}
      name: 'Restore cache: gh-release-download'
    - name: download artifacts from github releases
      run: |-
        flowey v 0 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:462:70' --is-raw-string update --env-source steps.flowey_lib_common__cache__1.outputs.cache-hit <<EOF
        ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
        EOF
        flowey e 0 flowey_lib_common::cache 2
        flowey e 0 flowey_lib_common::download_gh_release 1
      shell: bash
    - name: checking if packages need to be installed
      run: flowey e 0 flowey_lib_common::install_dist_pkg 0
      shell: bash
    - name: installing packages
      run: flowey e 0 flowey_lib_common::install_dist_pkg 1
      shell: bash
    - name: unpack mdbook
      run: flowey e 0 flowey_lib_common::download_mdbook 0
      shell: bash
    - name: unpack mdbook-admonish
      run: flowey e 0 flowey_lib_common::download_mdbook_admonish 0
      shell: bash
    - name: unpack mdbook-mermaid
      run: flowey e 0 flowey_lib_common::download_mdbook_mermaid 0
      shell: bash
    - name: check if openvmm needs to be cloned
      run: |-
        flowey e 0 flowey_lib_common::git_checkout 0
        flowey v 0 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46 write-to-env github floweyvar1
        flowey v 0 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' write-to-env github FLOWEY_CONDITION
      shell: bash
    - id: flowey_lib_common__git_checkout__1
      uses: actions/checkout@v4
      with:
        fetch-depth: '1'
        path: repo0
        persist-credentials: ${{ env.floweyvar1 }}
      name: checkout repo openvmm
      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
    - name: report cloned repo directories
      run: |-
        flowey v 0 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:55:41' --is-raw-string update --env-source github.workspace <<EOF
        ${{ github.workspace }}
        EOF
        flowey e 0 flowey_lib_common::git_checkout 3
        flowey e 0 flowey_lib_hvlite::git_checkout_openvmm_repo 0
        flowey e 0 flowey_lib_hvlite::build_guide 0
      shell: bash
    - name: add default cargo home to path
      run: flowey e 0 flowey_lib_common::install_rust 0
      shell: bash
    - name: install Rust
      run: flowey e 0 flowey_lib_common::install_rust 1
      shell: bash
    - name: build OpenVMM guide (mdbook)
      run: |-
        flowey e 0 flowey_lib_hvlite::build_guide 1
        flowey e 0 flowey_core::pipeline::artifact::publish 0
      shell: bash
    - name: 'validate cache entry: gh-release-download'
      run: flowey e 0 flowey_lib_common::cache 3
      shell: bash
    - name: 🌼📦 Publish guide
      uses: actions/upload-artifact@v4
      with:
        name: guide
        path: ${{ runner.temp }}/publish_artifacts/guide/
        include-hidden-files: true
  job1:
    name: build and check docs [x64-windows]
    runs-on: windows-latest
    permissions:
      contents: read
      id-token: write
    if: github.event.pull_request.draft == false
    steps:
    - run: |
        set -x
        i=0; while [ $i -lt 5 ] && ! sudo apt-get update; do let "i=i+1"; sleep 1; done;
        sudo apt-get -o DPkg::Lock::Timeout=60 install gcc -y
        curl --fail --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain=1.87.0 -y
        . "$HOME/.cargo/env"
        echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
        rustup show
      if: runner.os == 'Linux'
      name: rustup (Linux)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/x86_64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'X64'
      name: rustup (Windows X64)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/aarch64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'ARM64'
      name: rustup (Windows ARM64)
      shell: bash
    - uses: actions/checkout@v4
      with:
        path: flowey_bootstrap
    - name: Build flowey
      run: |
        set -x
        CARGO_INCREMENTAL=0 RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z threads=8" cargo build -p flowey_hvlite --target x86_64-pc-windows-msvc --profile flowey-ci
        OutDirNormal=$(echo "${{ runner.temp }}/bootstrapped-flowey" | sed -e 's|\\|\/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/\L\1\E/\2|')
        mkdir -p "$OutDirNormal"
        mv ./.github/workflows/openvmm-docs-pr.yaml "$OutDirNormal/pipeline.yaml"
        mv target/x86_64-pc-windows-msvc/flowey-ci/flowey_hvlite.exe "$OutDirNormal/flowey.exe"
      working-directory: flowey_bootstrap
      shell: bash
    - run: echo "${{ runner.temp }}/bootstrapped-flowey" >> $GITHUB_PATH
      shell: bash
      name: 🌼📦 Add flowey to PATH
    - name: 🌼🔎 Self-check YAML
      run: |-
        ESCAPED_AGENT_TEMPDIR=$(
        cat <<'EOF' | sed 's/\\/\\\\/g'
        ${{ runner.temp }}
        EOF
        )
        flowey.exe pipeline github --runtime $ESCAPED_AGENT_TEMPDIR\\bootstrapped-flowey\\pipeline.yaml --out .github/workflows/openvmm-docs-pr.yaml ci build-docs --config=pr
      shell: bash
    - 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/bootstrapped-flowey/flowey.exe

        echo '"debug"' | flowey.exe v 1 'FLOWEY_LOG' update
        echo "${{ runner.temp }}/work" | flowey.exe v 1 '_internal_WORKING_DIR' --is-raw-string update

        cat <<'EOF' | flowey.exe v 1 'verbose' update
        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
        EOF
        mkdir -p "$AgentTempDirNormal/publish_artifacts/x64-windows-rustdoc"
        echo "${{ runner.temp }}\\publish_artifacts\\x64-windows-rustdoc" | flowey.exe v 1 'artifact_publish_from_x64-windows-rustdoc' --is-raw-string update
      shell: bash
    - name: check if openvmm needs to be cloned
      run: |-
        flowey.exe e 1 flowey_lib_common::git_checkout 0
        flowey.exe v 1 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46 write-to-env github floweyvar1
        flowey.exe v 1 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' write-to-env github FLOWEY_CONDITION
      shell: bash
    - id: flowey_lib_common__git_checkout__1
      uses: actions/checkout@v4
      with:
        fetch-depth: '1'
        path: repo0
        persist-credentials: ${{ env.floweyvar1 }}
      name: checkout repo openvmm
      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
    - name: report cloned repo directories
      run: |-
        flowey.exe v 1 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:55:41' --is-raw-string update --env-source github.workspace <<EOF
        ${{ github.workspace }}
        EOF
        flowey.exe e 1 flowey_lib_common::git_checkout 3
        flowey.exe e 1 flowey_lib_hvlite::git_checkout_openvmm_repo 0
      shell: bash
    - name: set '-Dwarnings' in .cargo/config.toml
      run: flowey.exe e 1 flowey_lib_hvlite::init_openvmm_cargo_config_deny_warnings 0
      shell: bash
    - name: create gh-release-download cache dir
      run: flowey.exe e 1 flowey_lib_common::download_gh_release 0
      shell: bash
    - name: Pre-processing cache vars
      run: |-
        flowey.exe e 1 flowey_lib_common::cache 0
        flowey.exe v 1 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:407:72' --is-raw-string write-to-env github floweyvar2
        flowey.exe v 1 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:406:72' --is-raw-string write-to-env github floweyvar3
      shell: bash
    - id: flowey_lib_common__cache__1
      uses: actions/cache@v4
      with:
        key: ${{ env.floweyvar2 }}
        path: ${{ env.floweyvar3 }}
      name: 'Restore cache: gh-release-download'
    - name: download artifacts from github releases
      run: |-
        flowey.exe v 1 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:462:70' --is-raw-string update --env-source steps.flowey_lib_common__cache__1.outputs.cache-hit <<EOF
        ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
        EOF
        flowey.exe e 1 flowey_lib_common::cache 2
        flowey.exe e 1 flowey_lib_common::download_gh_release 1
      shell: bash
    - name: unpack protoc
      run: |-
        flowey.exe e 1 flowey_lib_common::download_protoc 0
        flowey.exe e 1 flowey_lib_hvlite::cfg_openvmm_magicpath 0
      shell: bash
    - name: symlink protoc
      run: flowey.exe e 1 flowey_lib_hvlite::init_openvmm_magicpath_protoc 0
      shell: bash
    - name: add default cargo home to path
      run: flowey.exe e 1 flowey_lib_common::install_rust 0
      shell: bash
    - name: install Rust
      run: flowey.exe e 1 flowey_lib_common::install_rust 1
      shell: bash
    - name: unpack Microsoft.WSL.LxUtil.x64.zip
      run: flowey.exe e 1 flowey_lib_hvlite::download_lxutil 0
      shell: bash
    - name: move lxutil.dll into its magic folder
      run: flowey.exe e 1 flowey_lib_hvlite::init_openvmm_magicpath_lxutil 0
      shell: bash
    - name: detect active toolchain
      run: |-
        flowey.exe e 1 flowey_lib_common::install_rust 2
        flowey.exe e 1 flowey_lib_common::cfg_cargo_common_flags 0
        flowey.exe e 1 flowey_lib_common::run_cargo_doc 0
      shell: bash
    - name: document repo for target x86_64-pc-windows-msvc
      run: |-
        flowey.exe e 1 flowey_lib_hvlite::build_rustdoc 0
        flowey.exe e 1 flowey_core::pipeline::artifact::publish 0
      shell: bash
    - name: 'validate cache entry: gh-release-download'
      run: flowey.exe e 1 flowey_lib_common::cache 3
      shell: bash
    - name: 🌼📦 Publish x64-windows-rustdoc
      uses: actions/upload-artifact@v4
      with:
        name: x64-windows-rustdoc
        path: ${{ runner.temp }}/publish_artifacts/x64-windows-rustdoc/
        include-hidden-files: true
  job2:
    name: build and check docs [x64-linux]
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    if: github.event.pull_request.draft == false
    steps:
    - run: |
        set -x
        i=0; while [ $i -lt 5 ] && ! sudo apt-get update; do let "i=i+1"; sleep 1; done;
        sudo apt-get -o DPkg::Lock::Timeout=60 install gcc -y
        curl --fail --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain=1.87.0 -y
        . "$HOME/.cargo/env"
        echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
        rustup show
      if: runner.os == 'Linux'
      name: rustup (Linux)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/x86_64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'X64'
      name: rustup (Windows X64)
      shell: bash
    - run: |
        set -x
        curl --fail -sSfLo rustup-init.exe https://win.rustup.rs/aarch64 --output rustup-init
        ./rustup-init.exe -y --default-toolchain=1.87.0
        echo "$USERPROFILE\\.cargo\\bin" >> $GITHUB_PATH
      if: runner.os == 'Windows' && runner.arch == 'ARM64'
      name: rustup (Windows ARM64)
      shell: bash
    - uses: actions/checkout@v4
      with:
        path: flowey_bootstrap
    - name: Build flowey
      run: |
        set -x
        CARGO_INCREMENTAL=0 RUSTC_BOOTSTRAP=1 RUSTFLAGS="-Z threads=8" cargo build -p flowey_hvlite --target x86_64-unknown-linux-gnu --profile flowey-ci
        OutDirNormal=$(echo "${{ runner.temp }}/bootstrapped-flowey" | sed -e 's|\\|\/|g' -e 's|^\([A-Za-z]\)\:/\(.*\)|/\L\1\E/\2|')
        mkdir -p "$OutDirNormal"
        mv ./.github/workflows/openvmm-docs-pr.yaml "$OutDirNormal/pipeline.yaml"
        mv target/x86_64-unknown-linux-gnu/flowey-ci/flowey_hvlite "$OutDirNormal/flowey"
      working-directory: flowey_bootstrap
      shell: bash
    - run: echo "${{ runner.temp }}/bootstrapped-flowey" >> $GITHUB_PATH
      shell: bash
      name: 🌼📦 Add flowey to PATH
    - name: 🌼🔎 Self-check YAML
      run: |-
        ESCAPED_AGENT_TEMPDIR=$(
        cat <<'EOF' | sed 's/\\/\\\\/g'
        ${{ runner.temp }}
        EOF
        )
        flowey pipeline github --runtime $ESCAPED_AGENT_TEMPDIR/bootstrapped-flowey/pipeline.yaml --out .github/workflows/openvmm-docs-pr.yaml ci build-docs --config=pr
      shell: bash
    - 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/bootstrapped-flowey/flowey

        echo '"debug"' | flowey v 2 'FLOWEY_LOG' update
        echo "${{ runner.temp }}/work" | flowey v 2 '_internal_WORKING_DIR' --is-raw-string update

        cat <<'EOF' | flowey v 2 'verbose' update
        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
        EOF
        mkdir -p "$AgentTempDirNormal/publish_artifacts/x64-linux-rustdoc"
        echo "$AgentTempDirNormal/publish_artifacts/x64-linux-rustdoc" | flowey v 2 'artifact_publish_from_x64-linux-rustdoc' --is-raw-string update
      shell: bash
    - name: check if openvmm needs to be cloned
      run: |-
        flowey e 2 flowey_lib_common::git_checkout 0
        flowey v 2 'flowey_lib_common::git_checkout:0:flowey_lib_common/src/git_checkout.rs:469:80' --is-raw-string --condvar flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46 write-to-env github floweyvar1
        flowey v 2 'flowey_lib_common::git_checkout:1:flowey_lib_common/src/git_checkout.rs:470:46' write-to-env github FLOWEY_CONDITION
      shell: bash
    - id: flowey_lib_common__git_checkout__1
      uses: actions/checkout@v4
      with:
        fetch-depth: '1'
        path: repo0
        persist-credentials: ${{ env.floweyvar1 }}
      name: checkout repo openvmm
      if: ${{ fromJSON(env.FLOWEY_CONDITION) }}
    - name: report cloned repo directories
      run: |-
        flowey v 2 'flowey_lib_common::git_checkout:4:flowey_core/src/node/github_context.rs:55:41' --is-raw-string update --env-source github.workspace <<EOF
        ${{ github.workspace }}
        EOF
        flowey e 2 flowey_lib_common::git_checkout 3
        flowey e 2 flowey_lib_hvlite::git_checkout_openvmm_repo 0
      shell: bash
    - name: set '-Dwarnings' in .cargo/config.toml
      run: flowey e 2 flowey_lib_hvlite::init_openvmm_cargo_config_deny_warnings 0
      shell: bash
    - name: create gh-release-download cache dir
      run: flowey e 2 flowey_lib_common::download_gh_release 0
      shell: bash
    - name: Pre-processing cache vars
      run: |-
        flowey e 2 flowey_lib_common::cache 0
        flowey v 2 'flowey_lib_common::cache:2:flowey_lib_common/src/cache.rs:407:72' --is-raw-string write-to-env github floweyvar2
        flowey v 2 'flowey_lib_common::cache:1:flowey_lib_common/src/cache.rs:406:72' --is-raw-string write-to-env github floweyvar3
      shell: bash
    - id: flowey_lib_common__cache__1
      uses: actions/cache@v4
      with:
        key: ${{ env.floweyvar2 }}
        path: ${{ env.floweyvar3 }}
      name: 'Restore cache: gh-release-download'
    - name: download artifacts from github releases
      run: |-
        flowey v 2 'flowey_lib_common::cache:4:flowey_lib_common/src/cache.rs:462:70' --is-raw-string update --env-source steps.flowey_lib_common__cache__1.outputs.cache-hit <<EOF
        ${{ steps.flowey_lib_common__cache__1.outputs.cache-hit }}
        EOF
        flowey e 2 flowey_lib_common::cache 2
        flowey e 2 flowey_lib_common::download_gh_release 1
      shell: bash
    - name: checking if packages need to be installed
      run: flowey e 2 flowey_lib_common::install_dist_pkg 0
      shell: bash
    - name: installing packages
      run: flowey e 2 flowey_lib_common::install_dist_pkg 1
      shell: bash
    - name: unpack protoc
      run: |-
        flowey e 2 flowey_lib_common::download_protoc 0
        flowey e 2 flowey_lib_hvlite::cfg_openvmm_magicpath 0
      shell: bash
    - name: symlink protoc
      run: flowey e 2 flowey_lib_hvlite::init_openvmm_magicpath_protoc 0
      shell: bash
    - name: add default cargo home to path
      run: flowey e 2 flowey_lib_common::install_rust 0
      shell: bash
    - name: install Rust
      run: flowey e 2 flowey_lib_common::install_rust 1
      shell: bash
    - name: unpack Microsoft.WSL.LxUtil.x64.zip
      run: flowey e 2 flowey_lib_hvlite::download_lxutil 0
      shell: bash
    - name: move lxutil.dll into its magic folder
      run: flowey e 2 flowey_lib_hvlite::init_openvmm_magicpath_lxutil 0
      shell: bash
    - name: detect active toolchain
      run: |-
        flowey e 2 flowey_lib_common::install_rust 2
        flowey e 2 flowey_lib_common::cfg_cargo_common_flags 0
        flowey e 2 flowey_lib_common::run_cargo_doc 0
      shell: bash
    - name: document repo for target x86_64-unknown-linux-gnu
      run: |-
        flowey e 2 flowey_lib_hvlite::build_rustdoc 0
        flowey e 2 flowey_core::pipeline::artifact::publish 0
      shell: bash
    - name: 'validate cache entry: gh-release-download'
      run: flowey e 2 flowey_lib_common::cache 3
      shell: bash
    - name: 🌼📦 Publish x64-linux-rustdoc
      uses: actions/upload-artifact@v4
      with:
        name: x64-linux-rustdoc
        path: ${{ runner.temp }}/publish_artifacts/x64-linux-rustdoc/
        include-hidden-files: true
    - name: 🌼🧼 Redact bootstrap var db
      run: rm $AgentTempDirNormal/bootstrapped-flowey/job2.json
      shell: bash
    - name: 🌼🥾 Publish bootstrapped flowey
      uses: actions/upload-artifact@v4
      with:
        name: _internal-flowey-bootstrap-x86_64-linux-uid-1
        path: ${{ runner.temp }}/bootstrapped-flowey
  job3:
    name: openvmm build docs gates
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
    needs:
    - job2
    - job1
    - job0
    if: always() && github.event.pull_request.draft == false
    env:
      ANY_JOBS_FAILED: ${{ contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }}
    steps:
    - name: 🌼📦 Download artifacts
      uses: actions/download-artifact@v4
      with:
        pattern: _internal-flowey-bootstrap-x86_64-linux-uid-1
        path: ${{ runner.temp }}/used_artifacts/
    - run: echo "${{ runner.temp }}/used_artifacts/_internal-flowey-bootstrap-x86_64-linux-uid-1" >> $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-linux-uid-1/flowey

        echo '"debug"' | flowey v 3 'FLOWEY_LOG' update
        echo "${{ runner.temp }}/work" | flowey v 3 '_internal_WORKING_DIR' --is-raw-string update

        cat <<'EOF' | flowey v 3 'verbose' update
        ${{ inputs.verbose != '' && inputs.verbose || 'false' }}
        EOF
      shell: bash
    - name: Check if any jobs failed
      run: flowey e 3 flowey_lib_hvlite::_jobs::all_good_job 0
      shell: bash
