Skip to content

Consolidate the marker helper, lint the harness, classify the repo #136

Consolidate the marker helper, lint the harness, classify the repo

Consolidate the marker helper, lint the harness, classify the repo #136

Workflow file for this run

name: CI — Build & QEMU smoke test
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
jobs:
build-and-test:
runs-on: ubuntu-latest
env:
GO_VERSION: "1.25.3"
TINYGO_VERSION: "0.40.1"
steps:
- uses: actions/checkout@v4
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
nasm xorriso qemu-system-x86 \
python3 python3-pytest \
git make curl wget binutils ca-certificates
# Go + TinyGo pinned to match Dockerfile/tools.
- name: Install Go
run: |
curl -fsSL "https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz" -o /tmp/go.tar.gz
sudo tar -C /usr/local -xzf /tmp/go.tar.gz
echo "/usr/local/go/bin" >> "$GITHUB_PATH"
- name: Install TinyGo
run: |
curl -fsSL "https://github.com/tinygo-org/tinygo/releases/download/v${TINYGO_VERSION}/tinygo_${TINYGO_VERSION}_amd64.deb" -o /tmp/tinygo.deb
sudo apt-get install -y /tmp/tinygo.deb
# TinyGo .deb install location differs across environments.
if [ -x /usr/local/lib/tinygo/bin/tinygo ]; then
echo "/usr/local/lib/tinygo/bin" >> "$GITHUB_PATH"
fi
if [ -x /usr/lib/tinygo/bin/tinygo ]; then
echo "/usr/lib/tinygo/bin" >> "$GITHUB_PATH"
fi
- name: Verify TinyGo
run: |
go version
command -v tinygo
tinygo version
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
- name: Verify vendored Limine checksums
run: cd vendor/limine && sha256sum -c SHA256SUMS
- name: Build kernel
run: make kernel
- name: Build demo userspace
run: make userspace
- name: Create bootable ISO (offline — no git clone)
run: make image-kernel
env:
GIT_TERMINAL_PROMPT: "0"
- name: Reproducible ISO check
run: make repro-check
- name: QEMU smoke tests
run: make gate-all
- name: Compatibility profile v1 gate
env:
RUGO_COMPAT_STRICT: "1"
run: |
python3 -m pytest tests/compat -v
python3 -m pytest tests/pkg/test_pkg_external_apps.py -v
- name: Hardware matrix v1 gate
run: |
make image-blk image-blk-badlen image-blk-badptr image-net
python3 -m pytest tests/hw/test_hardware_matrix_v1.py tests/hw/test_probe_negative_paths_v1.py tests/hw/test_dma_safety_v1.py -v --junitxml=out/pytest-hw-matrix.xml
- name: Upload hardware matrix JUnit report
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-junit
path: out/pytest-hw-matrix.xml
- name: Hardware matrix v2 gate
run: |
make test-hw-matrix-v2
- name: Upload hardware matrix v2 JUnit report
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-v2-junit
path: out/pytest-hw-matrix-v2.xml
- name: Process scheduler v2 gate
run: |
make test-process-scheduler-v2
- name: Upload process scheduler v2 JUnit report
if: always()
uses: actions/upload-artifact@v4
with:
name: process-scheduler-v2-junit
path: out/pytest-process-scheduler-v2.xml
- name: Compatibility profile v2 gate
run: |
make test-compat-v2
- name: Upload compatibility profile v2 JUnit report
if: always()
uses: actions/upload-artifact@v4
with:
name: compat-v2-junit
path: out/pytest-compat-v2.xml
- name: Storage reliability v2 gate
run: |
make test-storage-reliability-v2
- name: Upload storage reliability v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: storage-reliability-v2-artifacts
path: |
out/pytest-storage-reliability-v2.xml
out/storage-recovery-v2.json
out/storage-powerfail-v2.json
- name: Security baseline v1 gate
run: |
make image-sec-rights image-sec-filter image-go
python3 tools/secure_boot_manifest_v1.py sign \
--key "ci-boot-key-v1" \
--key-id "ci-key-2026-03" \
--base-dir . \
--out out/boot-manifest-v1.json \
--artifacts out/kernel.elf out/os.iso
python3 tools/secure_boot_manifest_v1.py verify \
--key "ci-boot-key-v1" \
--base-dir . \
--manifest out/boot-manifest-v1.json
python3 tools/run_security_fuzz_v1.py \
--seed 20260304 \
--iterations 1200 \
--cases 4 \
--out out/security-fuzz-report.json
python3 -m pytest tests/security -v --junitxml=out/pytest-security.xml
- name: Upload security gate artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: security-baseline-artifacts
path: |
out/pytest-security.xml
out/security-fuzz-report.json
out/boot-manifest-v1.json
- name: Runtime + toolchain maturity v1 gate
run: |
make test-runtime-maturity
- name: Upload runtime maturity artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: runtime-maturity-artifacts
path: |
out/gostd-contract.env
out/runtime-toolchain-contract.env
out/runtime-toolchain-repro.json
- name: Network stack v1 gate
run: |
make test-network-stack-v1
- name: Upload network stack v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: network-stack-v1-artifacts
path: |
out/net-interop-v1.json
out/net-soak-v1.json
- name: Network stack v2 gate
run: |
make test-network-stack-v2
- name: Upload network stack v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: network-stack-v2-artifacts
path: |
out/pytest-network-stack-v2.xml
out/net-interop-v2.json
out/net-soak-v2.json
- name: Storage reliability v1 gate
run: |
make test-storage-reliability-v1
- name: Upload storage reliability v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: storage-reliability-v1-artifacts
path: |
out/storage-recovery-v1.json
out/storage-fault-campaign-v1.json
- name: Release engineering v1 gate
run: |
make test-release-engineering-v1
make repro-check
- name: Upload release engineering v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: release-engineering-v1-artifacts
path: |
out/release-bundle-v1.json
out/release-contract-v1.json
out/update-metadata-v1.json
out/update-attack-suite-v1.json
out/sbom-v1.spdx.json
out/provenance-v1.json
out/support-bundle-v1.json
out/releases
- name: Operability and release UX v2 gate
run: |
make test-release-ops-v2
- name: Upload release ops v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: release-ops-v2-artifacts
path: |
out/pytest-release-ops-v2.xml
out/release-bundle-v1.json
out/update-metadata-v2.json
out/installer-v2.json
out/install-state-v1.json
out/upgrade-recovery-v2.json
out/support-bundle-v2.json
out/releases
- name: ABI stability v3 gate
run: |
make test-abi-stability-v3
- name: Upload ABI stability v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: abi-stability-v3-artifacts
path: |
out/pytest-abi-stability-v3.xml
out/abi-diff-v3.json
out/syscall-compat-v3.json
out/kernel-syscall-table.json
out/gostd-syscall-interface.json
- name: Kernel reliability v1 gate
run: |
make test-kernel-reliability-v1
- name: Upload kernel reliability v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: kernel-reliability-v1-artifacts
path: |
out/pytest-kernel-reliability-v1.xml
out/kernel-soak-v1.json
out/kernel-fault-campaign-v1.json
- name: Hardware matrix v3 gate
run: |
make test-hw-matrix-v3
- name: Upload hardware matrix v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-v3-artifacts
path: |
out/pytest-hw-matrix-v3.xml
out/hw-diagnostics-v3.json
- name: Firmware attestation v1 gate
run: |
make test-firmware-attestation-v1
- name: Upload firmware attestation v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: firmware-attestation-v1-artifacts
path: |
out/pytest-firmware-attestation-v1.xml
out/measured-boot-v1.json
- name: Performance regression v1 gate
run: |
make test-perf-regression-v1
- name: Upload performance regression v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: perf-regression-v1-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-perf-regression-v1.xml
out/perf-baseline-v1.json
out/perf-regression-v1.json
- name: Userspace model v2 gate
run: |
make test-userspace-model-v2
- name: Upload userspace model v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: userspace-model-v2-artifacts
path: |
out/pytest-userspace-model-v2.xml
- name: Connected runtime C4 gate
run: |
make test-connected-runtime-c4
- name: Upload connected runtime C4 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: connected-runtime-c4-artifacts
path: |
out/pytest-connected-runtime-c4.xml
- name: Reliable isolated runtime C5 gate
run: |
make test-reliable-isolated-runtime-c5
- name: Upload reliable isolated runtime C5 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: reliable-isolated-runtime-c5-artifacts
path: |
out/pytest-reliable-isolated-runtime-c5.xml
- name: Package ecosystem v3 gate
run: |
make test-pkg-ecosystem-v3
- name: Upload package ecosystem v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: pkg-ecosystem-v3-artifacts
path: |
out/pytest-pkg-ecosystem-v3.xml
out/repo-policy-v3.json
out/pkg-rebuild-v3.json
- name: Update trust v1 gate
run: |
make test-update-trust-v1
- name: Upload update trust v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: update-trust-v1-artifacts
path: |
out/pytest-update-trust-v1.xml
out/update-trust-v1.json
out/update-key-rotation-drill-v1.json
- name: App compatibility v3 gate
run: |
make test-app-compat-v3
- name: Upload app compatibility v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: app-compat-v3-artifacts
path: |
out/pytest-app-compat-v3.xml
out/app-compat-matrix-v3.json
- name: Security hardening v3 gate
run: |
make test-security-hardening-v3
- name: Upload security hardening v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: security-hardening-v3-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-security-hardening-v3.xml
out/security-attack-suite-v3.json
out/security-fuzz-v2.json
- name: Vulnerability response v1 gate
run: |
make test-vuln-response-v1
- name: Upload vulnerability response v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: vuln-response-v1-artifacts
path: |
out/pytest-vuln-response-v1.xml
out/security-advisory-lint-v1.json
out/security-embargo-drill-v1.json
- name: Observability v2 gate
run: |
make test-observability-v2
- name: Upload observability v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: observability-v2-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-observability-v2.xml
out/trace-bundle-v2.json
out/diagnostic-snapshot-v2.json
out/crash-dump-v1.json
out/crash-dump-symbolized-v1.json
- name: Crash dump v1 gate
run: |
make test-crash-dump-v1
- name: Upload crash dump v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: crash-dump-v1-artifacts
path: |
out/pytest-crash-dump-v1.xml
out/crash-dump-v1.json
out/crash-dump-symbolized-v1.json
- name: Ops UX v3 gate
run: |
make test-ops-ux-v3
- name: Upload ops UX v3 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: ops-ux-v3-artifacts
path: |
out/pytest-ops-ux-v3.xml
out/release-bundle-v1.json
out/update-metadata-v3.json
out/install-state-v1.json
out/upgrade-drill-v3.json
out/recovery-drill-v3.json
out/releases
- name: Release lifecycle v2 gate
run: |
make test-release-lifecycle-v2
- name: Upload release lifecycle v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: release-lifecycle-v2-artifacts
path: |
out/pytest-release-lifecycle-v2.xml
out/release-bundle-v1.json
out/release-contract-v1.json
out/release-branch-audit-v2.json
out/support-window-audit-v1.json
out/supply-chain-revalidation-v1.json
out/release-attestation-verification-v1.json
out/releases
- name: Supply-chain revalidation v1 gate
run: |
make test-supply-chain-revalidation-v1
- name: Upload supply-chain revalidation v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: supply-chain-revalidation-v1-artifacts
path: |
out/pytest-supply-chain-revalidation-v1.xml
out/release-bundle-v1.json
out/release-contract-v1.json
out/supply-chain-revalidation-v1.json
out/release-attestation-verification-v1.json
out/sbom-v1.spdx.json
out/provenance-v1.json
out/releases
- name: Conformance v1 gate
run: |
make test-conformance-v1
- name: Upload conformance v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: conformance-v1-artifacts
path: |
out/booted-runtime-v1.json
out/release-attestation-verification-v1.json
out/pkg-rebuild-v3.json
out/pytest-conformance-v1.xml
out/conformance-v1.json
- name: Fleet ops v1 gate
run: |
make test-fleet-ops-v1
- name: Upload fleet ops v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: fleet-ops-v1-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-fleet-ops-v1.xml
out/fleet-update-sim-v1.json
out/fleet-health-sim-v1.json
- name: Fleet rollout safety v1 gate
run: |
make test-fleet-rollout-safety-v1
- name: Upload fleet rollout safety v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: fleet-rollout-safety-v1-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-fleet-rollout-safety-v1.xml
out/canary-rollout-sim-v1.json
out/fleet-update-sim-v1.json
out/fleet-health-sim-v1.json
out/rollout-abort-drill-v1.json
- name: Maturity qualification v1 gate
run: |
make test-maturity-qual-v1
- name: Upload maturity qualification v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: maturity-qualification-v1-artifacts
path: |
out/booted-runtime-v1.json
out/pytest-maturity-qual-v1.xml
out/security-attack-suite-v3.json
out/release-attestation-verification-v1.json
out/pkg-rebuild-v3.json
out/perf-baseline-v1.json
out/perf-regression-v1.json
out/canary-rollout-sim-v1.json
out/fleet-update-sim-v1.json
out/fleet-health-sim-v1.json
out/conformance-v1.json
out/maturity-qualification-v1.json
- name: Desktop stack v1 gate
run: |
make test-desktop-stack-v1
- name: Upload desktop stack v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: desktop-stack-v1-artifacts
path: |
out/pytest-desktop-stack-v1.xml
out/desktop-smoke-v1.json
- name: GUI app compatibility v1 gate
run: |
make test-gui-app-compat-v1
- name: Upload GUI app compatibility v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: gui-app-compat-v1-artifacts
path: |
out/pytest-gui-app-compat-v1.xml
out/gui-app-matrix-v1.json
- name: Compatibility surface v1 gate
run: |
make test-compat-surface-v1
- name: Upload compatibility surface v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: compat-surface-v1-artifacts
path: |
out/pytest-compat-surface-v1.xml
out/compat-surface-v1.json
- name: POSIX gap closure v1 gate
run: |
make test-posix-gap-closure-v1
- name: Upload POSIX gap closure v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: posix-gap-closure-v1-artifacts
path: |
out/pytest-posix-gap-closure-v1.xml
out/posix-gap-report-v1.json
- name: Hardware matrix v4 gate
run: |
make test-hw-matrix-v4
- name: Upload hardware matrix v4 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-v4-artifacts
path: |
out/pytest-hw-matrix-v4.xml
out/hw-matrix-v4.json
- name: Hardware bare-metal promotion v1 gate
run: |
make test-hw-baremetal-promotion-v1
- name: Upload hardware bare-metal promotion v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-baremetal-promotion-v1-artifacts
path: |
out/pytest-hw-baremetal-promotion-v1.xml
out/hw-promotion-v1.json
- name: Storage platform v1 gate
run: |
make test-storage-platform-v1
- name: Upload storage platform v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: storage-platform-v1-artifacts
path: |
out/pytest-storage-platform-v1.xml
out/storage-feature-v1.json
- name: Storage feature contract v1 gate
run: |
make test-storage-feature-contract-v1
- name: Upload storage feature contract v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: storage-feature-contract-v1-artifacts
path: |
out/pytest-storage-feature-contract-v1.xml
out/platform-feature-v1.json
- name: Ecosystem scale v1 gate
run: |
make test-ecosystem-scale-v1
- name: Upload ecosystem scale v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: ecosystem-scale-v1-artifacts
path: |
out/pytest-ecosystem-scale-v1.xml
out/app-catalog-sim-v1.json
- name: App catalog health v1 gate
run: |
make test-app-catalog-health-v1
- name: Upload app catalog health v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: app-catalog-health-v1-artifacts
path: |
out/pytest-app-catalog-health-v1.xml
out/pkg-install-success-v1.json
out/catalog-audit-v1.json
- name: Evidence integrity v1 gate
run: |
make test-evidence-integrity-v1
- name: Upload evidence integrity v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: evidence-integrity-v1-artifacts
path: |
out/booted-runtime-v1.json
out/perf-baseline-v1.json
out/perf-regression-v1.json
out/trace-bundle-v2.json
out/diagnostic-snapshot-v2.json
out/crash-dump-v1.json
out/crash-dump-symbolized-v1.json
out/pytest-evidence-integrity-v1.xml
out/runtime-evidence-v1.json
out/gate-evidence-audit-v1.json
- name: Synthetic evidence ban v1 gate
run: |
make test-synthetic-evidence-ban-v1
- name: Upload synthetic evidence ban v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: synthetic-evidence-ban-v1-artifacts
path: |
out/booted-runtime-v1.json
out/perf-baseline-v1.json
out/perf-regression-v1.json
out/trace-bundle-v2.json
out/diagnostic-snapshot-v2.json
out/crash-dump-v1.json
out/crash-dump-symbolized-v1.json
out/pytest-synthetic-evidence-ban-v1.xml
out/runtime-evidence-v1.json
out/gate-evidence-audit-v1.json
- name: Process readiness parity v1 gate
run: |
make test-process-readiness-parity-v1
- name: Upload process readiness parity v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: process-readiness-parity-v1-artifacts
path: |
out/pytest-process-readiness-parity-v1.xml
out/compat-surface-v2.json
- name: POSIX gap closure v2 gate
run: |
make test-posix-gap-closure-v2
- name: Upload POSIX gap closure v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: posix-gap-closure-v2-artifacts
path: |
out/pytest-posix-gap-closure-v2.xml
out/posix-gap-report-v2.json
- name: Isolation baseline v1 gate
run: |
make test-isolation-baseline-v1
- name: Upload isolation baseline v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: isolation-baseline-v1-artifacts
path: |
out/pytest-isolation-baseline-v1.xml
out/isolation-campaign-v1.json
- name: Namespace cgroup v1 gate
run: |
make test-namespace-cgroup-v1
- name: Upload namespace cgroup v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: namespace-cgroup-v1-artifacts
path: |
out/pytest-namespace-cgroup-v1.xml
out/resource-control-v1.json
- name: Hardware firmware smp v1 gate
run: |
make test-hw-firmware-smp-v1
- name: Upload hardware firmware smp v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-firmware-smp-v1-artifacts
path: |
out/pytest-hw-firmware-smp-v1.xml
out/hw-matrix-v5.json
out/hw-firmware-smp-v1.json
- name: Native driver matrix v1 gate
run: |
make test-native-driver-matrix-v1
- name: Upload native driver matrix v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: native-driver-matrix-v1-artifacts
path: |
out/pytest-native-driver-matrix-v1.xml
out/hw-firmware-smp-v1.json
- name: Hardware matrix v6 shadow gate
run: |
make test-hw-matrix-v6
- name: Upload hardware matrix v6 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-v6-artifacts
path: |
out/pytest-hw-matrix-v6.xml
out/hw-matrix-v6.json
out/desktop-smoke-v1.json
- name: Virtio platform v1 shadow gate
run: |
make test-virtio-platform-v1
- name: Upload virtio platform v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: virtio-platform-v1-artifacts
path: |
out/pytest-virtio-platform-v1.xml
out/hw-matrix-v6.json
out/desktop-smoke-v1.json
- name: Bare-metal io baseline v1 gate
run: |
make test-baremetal-io-baseline-v1
- name: Upload bare-metal io baseline v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: baremetal-io-v1-artifacts
path: |
out/pytest-baremetal-io-v1.xml
out/baremetal-io-v1.json
out/hw-promotion-v2.json
out/desktop-smoke-v1.json
out/recovery-drill-v3.json
- name: USB input removable v1 gate
run: |
make test-usb-input-removable-v1
- name: Upload USB input removable v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: usb-input-removable-v1-artifacts
path: |
out/pytest-usb-input-removable-v1.xml
out/baremetal-io-v1.json
out/desktop-smoke-v1.json
out/recovery-drill-v3.json
- name: Hardware claim promotion v1 gate
run: |
make test-hw-claim-promotion-v1
- name: Upload hardware claim promotion v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-claim-promotion-v1-artifacts
path: |
out/pytest-hw-claim-promotion-v1.xml
out/hw-claim-promotion-v1.json
out/hw-support-tier-audit-v1.json
- name: Hardware support tier audit v1 gate
run: |
make test-hw-support-tier-audit-v1
- name: Upload hardware support tier audit v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-support-tier-audit-v1-artifacts
path: |
out/pytest-hw-support-tier-audit-v1.xml
out/hw-claim-promotion-v1.json
out/hw-support-tier-audit-v1.json
- name: Display runtime v1 gate
run: |
make test-display-runtime-v1
- name: Upload display runtime v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: display-runtime-v1-artifacts
path: |
out/pytest-display-runtime-v1.xml
out/display-runtime-v1.json
out/display-frame-v1.png
out/display-frame-v1.json
- name: Scanout path v1 gate
run: |
make test-scanout-path-v1
- name: Upload scanout path v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: scanout-path-v1-artifacts
path: |
out/pytest-scanout-path-v1.xml
out/display-runtime-v1.json
out/display-frame-v1.png
out/display-frame-v1.json
- name: Input seat v1 gate
run: |
make test-input-seat-v1
- name: Upload input seat v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: input-seat-v1-artifacts
path: |
out/pytest-input-seat-v1.xml
out/input-seat-v1.json
out/hid-event-path-v1.json
- name: HID event path v1 gate
run: |
make test-hid-event-path-v1
- name: Upload HID event path v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hid-event-path-v1-artifacts
path: |
out/pytest-hid-event-path-v1.xml
out/input-seat-v1.json
out/hid-event-path-v1.json
- name: Window system v1 gate
run: |
make test-window-system-v1
- name: Upload window system v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: window-system-v1-artifacts
path: |
out/pytest-window-system-v1.xml
out/window-system-v1.json
out/compositor-damage-v1.json
- name: Compositor damage v1 gate
run: |
make test-compositor-damage-v1
- name: Upload compositor damage v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: compositor-damage-v1-artifacts
path: |
out/pytest-compositor-damage-v1.xml
out/window-system-v1.json
out/compositor-damage-v1.json
- name: GUI runtime v1 gate
run: |
make test-gui-runtime-v1
- name: Upload GUI runtime v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: gui-runtime-v1-artifacts
path: |
out/pytest-gui-runtime-v1.xml
out/gui-runtime-v1.json
out/toolkit-compat-v1.json
- name: Toolkit compatibility v1 gate
run: |
make test-toolkit-compat-v1
- name: Upload toolkit compatibility v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: toolkit-compat-v1-artifacts
path: |
out/pytest-toolkit-compat-v1.xml
out/gui-runtime-v1.json
out/toolkit-compat-v1.json
- name: Desktop shell v1 gate
run: |
make test-desktop-shell-v1
- name: Upload desktop shell v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: desktop-shell-v1-artifacts
path: |
out/pytest-desktop-shell-v1.xml
out/desktop-shell-v1.json
out/graphical-installer-v1.json
- name: Desktop workflows v1 gate
run: |
make test-desktop-workflows-v1
- name: Upload desktop workflows v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: desktop-workflows-v1-artifacts
path: |
out/pytest-desktop-workflows-v1.xml
out/desktop-shell-v1.json
out/graphical-installer-v1.json
- name: Native driver contract v1 gate
run: |
make test-native-driver-contract-v1
- name: Upload native driver contract v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: native-driver-contract-v1-artifacts
path: |
out/pytest-native-driver-contract-v1.xml
out/native-driver-diagnostics-v1.json
- name: Native driver diagnostics v1 gate
run: |
make test-native-driver-diagnostics-v1
- name: Upload native driver diagnostics v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: native-driver-diagnostics-v1-artifacts
path: |
out/pytest-native-driver-diagnostics-v1.xml
out/native-driver-diagnostics-v1.json
- name: X2 hardware runtime v1 gate
run: |
make test-x2-hardware-runtime-v1
- name: Upload X2 hardware runtime v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: x2-hardware-runtime-v1-artifacts
path: |
out/pytest-x2-hardware-runtime-v1.xml
out/x2-hardware-runtime-v1.json
out/measured-boot-v1.json
out/hw-diagnostics-v3.json
out/hw-matrix-v4.json
out/hw-firmware-smp-v1.json
out/hw-matrix-v6.json
out/baremetal-io-v1.json
out/hw-claim-promotion-v1.json
out/native-driver-diagnostics-v1.json
- name: X3 platform runtime v1 gate
run: |
make test-x3-platform-runtime-v1
- name: Upload X3 platform runtime v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: x3-platform-runtime-v1-artifacts
path: |
out/pytest-x3-platform-runtime-v1.xml
out/booted-runtime-v1.json
out/x3-platform-runtime-v1.json
out/repo-policy-v3.json
out/pkg-rebuild-v3.json
out/update-trust-v1.json
out/storage-feature-v1.json
out/platform-feature-v1.json
out/app-catalog-sim-v1.json
out/pkg-install-success-v1.json
out/catalog-audit-v1.json
- name: Native storage v1 gate
run: |
make test-native-storage-v1
- name: Upload native storage v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: native-storage-v1-artifacts
path: |
out/pytest-native-storage-v1.xml
out/native-storage-v1.json
out/hw-matrix-v7.json
- name: Hardware matrix v7 gate
run: |
make test-hw-matrix-v7
- name: Upload hardware matrix v7 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: hw-matrix-v7-artifacts
path: |
out/pytest-hw-matrix-v7.xml
out/hw-matrix-v7.json
- name: Real ecosystem desktop v2 gate
run: |
make test-real-ecosystem-desktop-v2
- name: Upload real ecosystem desktop v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: real-ecosystem-desktop-v2-artifacts
path: |
out/pytest-real-ecosystem-desktop-v2.xml
out/real-gui-matrix-v2.json
out/real-pkg-install-v2.json
out/real-catalog-audit-v2.json
- name: Real app catalog v2 gate
run: |
make test-real-app-catalog-v2
- name: Upload real app catalog v2 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: real-app-catalog-v2-artifacts
path: |
out/pytest-real-app-catalog-v2.xml
out/real-pkg-install-v2.json
out/real-catalog-audit-v2.json
- name: Desktop profile runtime v1 gate
run: |
make test-desktop-profile-runtime-v1
- name: Upload desktop profile runtime v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: desktop-profile-runtime-v1-artifacts
path: |
out/pytest-desktop-profile-runtime-v1.xml
out/desktop-profile-capture-v1.json
out/desktop-profile-runtime-v1.json
out/os-go-desktop.iso
out/kernel-go-desktop.elf
out/desktop-smoke-v1.json
out/gui-app-matrix-v1.json
out/display-runtime-v1.json
out/input-seat-v1.json
out/window-system-v1.json
out/gui-runtime-v1.json
out/toolkit-compat-v1.json
out/desktop-shell-v1.json
out/graphical-installer-v1.json
out/real-gui-matrix-v2.json
out/real-pkg-install-v2.json
out/real-catalog-audit-v2.json
- name: Product alpha v1 gate
run: |
make test-product-alpha-v1
- name: Upload product alpha v1 artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: product-alpha-v1-artifacts
path: |
out/pytest-product-alpha-v1.xml
out/product-alpha-runtime-capture-v1.json
out/product-alpha-v1.json
out/product-alpha-x4-runtime-v1.json
out/product-alpha-x3-runtime-v1.json
out/product-alpha-graphical-installer-v1.json
out/product-alpha-release-bundle-v1.json
out/product-alpha-installer-v2.json
out/product-alpha-install-state-v1.json
out/product-alpha-update-metadata-v1.json
out/product-alpha-upgrade-drill-v3.json
out/product-alpha-recovery-drill-v3.json
out/product-alpha-trace-bundle-v2.json
out/product-alpha-diagnostic-snapshot-v2.json
out/product-alpha-crash-dump-v1.json
out/product-alpha-crash-dump-symbolized-v1.json
out/os-go-desktop-native.iso
out/kernel-go-desktop-native.elf
out/product-alpha-supporting