feat: add Jetson contributor validation path

This commit is contained in:
Joseph Magly
2026-08-21 20:12:35 -04:00
parent 1e870ccee0
commit 06e80af7b6
23 changed files with 1128 additions and 30 deletions
+77
View File
@@ -0,0 +1,77 @@
name: Jetson runtime report
description: Report a physical Jetson bootstrap, build, or CUDA validation result
title: "[Jetson] "
labels:
- enhancement
body:
- type: markdown
attributes:
value: |
Thank you for testing OBLITERATUS on physical Jetson hardware. Run the
documented `jetson-runtime` probe and attach its sanitized report. The
report intentionally omits host identity, network, serial, token, and
local-path data.
- type: dropdown
id: device
attributes:
label: Jetson device
options:
- Jetson AGX Orin
- Jetson Orin NX
- Jetson Orin Nano
- Jetson AGX Xavier
- Jetson AGX Thor
validations:
required: true
- type: input
id: jetpack
attributes:
label: Exact JetPack version
description: Include the patch version, for example 6.2.1.
validations:
required: true
- type: input
id: commit
attributes:
label: Exact OBLITERATUS commit
description: Paste the 40-character commit SHA that was tested.
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Reproduction commands
description: Provide the smallest command sequence that demonstrates the result.
validations:
required: true
- type: textarea
id: expected
attributes:
label: Expected result
validations:
required: true
- type: textarea
id: actual
attributes:
label: Actual result
description: Include the complete error text, but remove any secrets before submitting.
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Sanitized Jetson evidence
description: Attach conditional-evidence/jetson-report.json or paste its JSON contents.
validations:
required: true
- type: checkboxes
id: confirmations
attributes:
label: Confirmations
options:
- label: I ran this validation on physical Jetson hardware.
required: true
- label: I reviewed the report and removed any secrets or personal identifiers.
required: true
validations:
required: true
+1 -1
View File
@@ -1,6 +1,6 @@
self-hosted-runner:
# Project-owned capability labels used by conditional test runners.
labels: [cuda, mps, mlx]
labels: [cuda, jetson, mps, mlx]
# Configuration variables in array of strings defined in your repository or
# organization. `null` means disabling configuration variables check.
+39
View File
@@ -225,6 +225,45 @@ jobs:
scripts/check_supply_chain_policy.py
scripts/gemma4_12b_recursive_loop.py || true
arm64-preflight:
name: Linux ARM64 preflight
if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
runs-on: ubuntu-24.04-arm
timeout-minutes: 10
env:
CUDA_VISIBLE_DEVICES: ""
HF_DATASETS_OFFLINE: "1"
HF_HUB_DISABLE_TELEMETRY: "1"
HF_HUB_OFFLINE: "1"
TRANSFORMERS_OFFLINE: "1"
TEST_ENV: /tmp/obliteratus-arm64-preflight
steps:
- name: Check out repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.12"
cache: pip
cache-dependency-path: |
pyproject.toml
uv.lock
- name: Install locked CPU runtime
run: |
python -m pip install "uv==${UV_VERSION}"
UV_PROJECT_ENVIRONMENT="$TEST_ENV" \
uv sync --locked --no-default-groups --extra dev --no-editable
- name: Verify ARM64 package and core runtime
run: |
"$TEST_ENV/bin/python" -c \
'import platform; assert platform.machine().lower() in {"aarch64", "arm64"}'
"$TEST_ENV/bin/python" -m build --wheel
"$TEST_ENV/bin/python" -c 'import obliteratus; print(obliteratus.__version__)'
"$TEST_ENV/bin/python" -m obliteratus --help
"$TEST_ENV/bin/python" -m pytest \
tests/test_module_imports.py tests/test_device_boundaries.py \
tests/test_jetson_support_tooling.py -q --no-cov
pr-core:
name: Pull request core
if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref == 'refs/heads/main')
+55 -3
View File
@@ -23,6 +23,10 @@ on:
description: Run CUDA and bitsandbytes on the labeled self-hosted runner
type: boolean
default: false
run_jetson:
description: Run Jetson CUDA on the trusted labeled physical runner
type: boolean
default: false
run_mps:
description: Run MPS on the labeled Apple Silicon runner
type: boolean
@@ -239,7 +243,7 @@ jobs:
run: |
python -m pip install "uv==${UV_VERSION}"
UV_PROJECT_ENVIRONMENT="$CONDITIONAL_ENV" \
uv sync --locked --no-default-groups --extra dev --no-editable
uv sync --locked --no-default-groups --extra dev --extra quantization --no-editable
CUDA_TORCH_VERSION="$("$CONDITIONAL_ENV/bin/python" -c \
'import torch; print(torch.__version__.split("+", 1)[0])')"
UV_TORCH_BACKEND=cu130 uv pip install \
@@ -264,6 +268,52 @@ jobs:
if-no-files-found: error
retention-days: 30
jetson:
name: NVIDIA Jetson runtime
needs: policy
if: github.event_name == 'workflow_dispatch' && inputs.run_jetson
runs-on: [self-hosted, linux, ARM64, jetson]
timeout-minutes: 45
env:
JETSON_ENV: /tmp/obliteratus-jetson-${{ github.run_id }}-${{ github.run_attempt }}
JETSON_TOOLS: /tmp/obliteratus-jetson-tools-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Check out trusted candidate
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install pinned bootstrap tooling outside the JetPack runtime
run: |
python3 -m venv "$JETSON_TOOLS"
"$JETSON_TOOLS/bin/python" -m pip install "uv==${UV_VERSION}"
- name: Preserve JetPack PyTorch and install OBLITERATUS
run: >-
python3 scripts/setup_jetson.py
--python python3
--uv-python "$JETSON_TOOLS/bin/python"
--venv "$JETSON_ENV"
- name: Run physical Jetson CUDA probe
run: >-
"$JETSON_ENV/bin/python" scripts/run_conditional_gate.py jetson-runtime
- name: Collect sanitized Jetson evidence
if: always()
run: |
JETSON_PYTHON=python3
if [ -x "$JETSON_ENV/bin/python" ]; then
JETSON_PYTHON="$JETSON_ENV/bin/python"
fi
"$JETSON_PYTHON" scripts/jetson_support.py \
--check \
--gate-evidence conditional-evidence/jetson-runtime.json \
--output conditional-evidence/jetson-report.json \
--issue-body conditional-evidence/jetson-issue.md
- name: Upload Jetson evidence
if: always()
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: conditional-jetson-${{ github.run_attempt }}
path: conditional-evidence/
if-no-files-found: error
retention-days: 30
mps:
name: Apple MPS runtime
needs: policy
@@ -393,20 +443,22 @@ jobs:
summary:
name: Conditional result and freshness summary
if: always()
needs: [policy, model_runtime, network_services, operator_ui, cuda, mps, mlx, remote]
needs: [policy, model_runtime, network_services, operator_ui, cuda, jetson, mps, mlx, remote]
runs-on: ubuntu-latest
timeout-minutes: 5
env:
CONDITIONAL_RESULTS: >-
{"policy":"${{ needs.policy.result }}","model_runtime":"${{ needs.model_runtime.result }}",
"network_services":"${{ needs.network_services.result }}","operator_ui":"${{ needs.operator_ui.result }}",
"cuda":"${{ needs.cuda.result }}","mps":"${{ needs.mps.result }}","mlx":"${{ needs.mlx.result }}",
"cuda":"${{ needs.cuda.result }}","jetson":"${{ needs.jetson.result }}",
"mps":"${{ needs.mps.result }}","mlx":"${{ needs.mlx.result }}",
"remote":"${{ needs.remote.result }}"}
CONDITIONAL_SELECTED: >-
{"model_runtime":${{ github.event_name != 'workflow_dispatch' || inputs.run_model }},
"network_services":${{ github.event_name != 'workflow_dispatch' || inputs.run_network }},
"operator_ui":${{ github.event_name != 'workflow_dispatch' || inputs.run_ui }},
"cuda":${{ (github.event_name == 'workflow_dispatch' && inputs.run_cuda) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_CUDA_GATE == 'true') }},
"jetson":${{ github.event_name == 'workflow_dispatch' && inputs.run_jetson }},
"mps":${{ (github.event_name == 'workflow_dispatch' && inputs.run_mps) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_MPS_GATE == 'true') }},
"mlx":${{ (github.event_name == 'workflow_dispatch' && inputs.run_mlx) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_MLX_GATE == 'true') }},
"remote":${{ (github.event_name == 'workflow_dispatch' && inputs.run_remote) || (github.event_name != 'workflow_dispatch' && vars.ENABLE_REMOTE_GATE == 'true') }}}