diff --git a/.github/workflows/devlab-strix.yml b/.github/workflows/devlab-strix.yml index bc1c7c014..b2ae7ce1c 100644 --- a/.github/workflows/devlab-strix.yml +++ b/.github/workflows/devlab-strix.yml @@ -30,11 +30,21 @@ on: default: main type: string job: - description: "probe = report the runner environment only; build = probe + native strix-hip build" + description: "probe = env only; build = probe + native build; validate = build + unit slice + smoke; eval = model serve gates on a home-runner box" required: true default: probe type: choice - options: [probe, build] + options: [probe, build, validate, eval] + model: + description: "eval only: model id to serve" + required: false + default: "nvidia/Qwen3.8-27B-NVFP4" + type: string + legs: + description: "eval only: space-separated gate legs (subtest identity nemotron st995 perf)" + required: false + default: "identity nemotron" + type: string permissions: contents: read @@ -100,7 +110,7 @@ jobs: } | tee -a "$GITHUB_STEP_SUMMARY" - name: Rust toolchain (cached under the tool cache) - if: inputs.job == 'build' + if: inputs.job == 'build' || inputs.job == 'validate' shell: bash run: | set -euo pipefail @@ -116,7 +126,7 @@ jobs: echo "$CARGO_HOME/bin" >> "$GITHUB_PATH" - name: Native strix-hip build (all models) - if: inputs.job == 'build' + if: inputs.job == 'build' || inputs.job == 'validate' shell: bash run: | set -euo pipefail @@ -124,3 +134,31 @@ jobs: start=$(date +%s) ./build-amd.sh echo "build: $(( $(date +%s) - start ))s, binary $(sha256sum target/release/spark | cut -c1-16)" | tee -a "$GITHUB_STEP_SUMMARY" + + - name: Validate (unit slice + smoke) + if: inputs.job == 'validate' + shell: bash + run: | + set -euo pipefail + ./target/release/spark --version | tee -a "$GITHUB_STEP_SUMMARY" + ATLAS_SKIP_BUILD=1 cargo test -p atlas-kernels --lib 2>&1 | tail -5 | tee -a "$GITHUB_STEP_SUMMARY" + echo "validate: PASS" | tee -a "$GITHUB_STEP_SUMMARY" + + eval: + name: Home-box eval gates (${{ inputs.model }}) + needs: authorize + if: inputs.job == 'eval' + runs-on: [self-hosted, atlas-home] + timeout-minutes: 720 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + ref: ${{ inputs.ref }} + persist-credentials: false + - name: Submit model gates to the box queue + shell: bash + run: | + set -euo pipefail + echo "ref=${{ inputs.ref }} model=${{ inputs.model }} legs=${{ inputs.legs }}" + ~/jobqueue/bin/qctl sub ci-eval-${{ github.run_id }} --file ~/jobqueue/staged/gate.sh || { echo "no qctl gate.sh on this box"; exit 1; } + echo "queued: leg scripts drive the box serially; verdicts land in ~/ovn-out" | tee -a "$GITHUB_STEP_SUMMARY"