Skip to content

Commit 6f19ff8

Browse files
committed
test(windows): define GB300 MXC qualification contract
Signed-off-by: Prekshi Vyas <prekshiv@nvidia.com>
1 parent fb2980e commit 6f19ff8

10 files changed

Lines changed: 1964 additions & 6 deletions

File tree

.agents/skills/build-openshell-mxc-windows/SKILL.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,15 @@ neither. Both are skip-safe (they print a SKIP reason and exit 0 when
168168
arch-appropriate task is always safe even without real MXC hardware. Neither
169169
is part of `windows:ci`'s ordered contract, so invoke it explicitly.
170170

171+
For GB300 Windows ARM64 qualification, do not use the skip-safe developer task
172+
as release evidence. `windows:test:mxc-gb300:arm64` runs the required
173+
ProcessContainer subset and fails on any required `SKIP`.
174+
`windows:qualify:mxc:gb300:contract` validates the static coverage matrix, and
175+
`windows:qualify:mxc:gb300` runs the complete source, host, build/test, policy
176+
E2E, and OpenClaw gate. Its inputs and evidence contract are documented in
177+
`crates/openshell-driver-mxc/qualification/README.md`. Native-x64 NemoClaw and
178+
x64 Windows results never satisfy this ARM64 contract.
179+
171180
For full validation, detect the Windows host architecture first and choose the
172181
native lane dynamically:
173182

@@ -257,6 +266,9 @@ crypto dependency builds.
257266
| `windows:test:unsupported:arm64` | Re-runs the same focused contracts natively on ARM64. Rejects non-ARM64 hosts. |
258267
| `windows:test:mxc-real:x64` | Runs the serial, ignored real-`wxc-exec` integration suite natively on x64 through the MSVC wrapper. Rejects non-x64 hosts. |
259268
| `windows:test:mxc-real:arm64` | Runs the same real-`wxc-exec` suite natively on ARM64. Rejects non-ARM64 hosts. |
269+
| `windows:test:mxc-gb300:arm64` | Runs the required native ARM64 ProcessContainer subset and fails when a test skips. |
270+
| `windows:qualify:mxc:gb300:contract` | Validates the required/optional/unsupported/architecture-constrained GB300 matrix. |
271+
| `windows:qualify:mxc:gb300` | Runs the fail-closed GB300 ARM64 gate and validates hash-bound evidence. |
260272
| `windows:artifacts` | Reports size and SHA256 for release artifacts that exist. |
261273
| `windows:ci` | Runs the full ordered x64-host Windows CI lane, plus ARM64 check/build when not skipped. |
262274

architecture/windows-msvc-build.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ Windows validation is exposed through `tasks/windows.toml`:
9090
| `windows:test:arm64` | Run the same suite natively on ARM64. |
9191
| `windows:test:unsupported:x64` | Run focused gateway-composition tests for unsupported driver contracts. |
9292
| `windows:test:unsupported:arm64` | Run the same focused contracts natively on ARM64. |
93+
| `windows:test:mxc-real:arm64` | Run the native real-MXC developer suite; missing hardware remains skip-safe. |
94+
| `windows:test:mxc-gb300:arm64` | Run the required real-MXC subset on native ARM64 and fail on any required skip. |
95+
| `windows:qualify:mxc:gb300:contract` | Validate the static NVBug 6643699 scope matrix on any development host. |
96+
| `windows:qualify:mxc:gb300` | Execute the complete native GB300 ARM64 gate and produce hash-bound evidence. |
9397
| `windows:ci` | Run check, build, test, unsupported-contract tests, and artifact reporting. |
9498

9599
The Windows tasks call `tasks/scripts/windows-msvc.ps1`. The wrapper discovers
@@ -185,6 +189,13 @@ native rather than emulated coverage.
185189

186190
## Validation Contract
187191

192+
The generic real-MXC lanes are diagnostics and deliberately remain skip-safe.
193+
They cannot establish hardware qualification when a prerequisite or backend is
194+
absent. GB300 release evidence uses the separate fail-closed contract in
195+
[`crates/openshell-driver-mxc/qualification/`](../crates/openshell-driver-mxc/qualification/README.md).
196+
That matrix separates native Windows ARM64 evidence from x64-only NemoClaw and
197+
Windows lanes, and records all hardware-dependent exclusions explicitly.
198+
188199
A successful Windows build report should include:
189200

190201
- x64 and ARM64 `cargo check` status.

crates/openshell-driver-mxc/README.md

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,16 +183,24 @@ This example uses `process_container`. The `IsoSessionApp.dll` and
183183

184184
## Real-MXC test lane
185185

186-
Three tasks drive real `wxc-exec.exe` hardware; all are **skip-safe** — any test
187-
or scenario that requires an absent binary or backend prints a SKIP reason and
188-
exits 0 rather than failing.
186+
The generic real-`wxc-exec.exe` tasks are **skip-safe**: a test or scenario that
187+
requires an absent binary or backend prints a SKIP reason and exits 0. They are
188+
useful developer diagnostics, but a skipped run is not qualification evidence.
189+
The GB300 task is deliberately strict and fails on every required skip.
189190

190191
| Task | What it runs | When to use |
191192
|---|---|---|
192193
| `windows:test:mxc-real:x64` | `tests/wxc_exec_real.rs` — Tier-2 invoker tests with `--ignored --test-threads=1`, including an HTTPS request through the host proxy | Pre-merge on any Windows host that has `wxc-exec`; dry-run tests always pass; enforcement tests probe-gate themselves |
193194
| `windows:test:mxc-real:arm64` | Native ARM64 `tests/wxc_exec_real.rs` with the same contract | Pre-merge on an ARM64 Windows host with `wxc-exec` |
195+
| `windows:test:mxc-gb300:arm64` | Required ARM64 ProcessContainer cases from `tests/wxc_exec_real.rs`; rejects x64 and every required `SKIP` | GB300 qualification only; requires a live backend and all prerequisites |
194196
| `windows:e2e:mxc` | `examples/run-mxc-e2e.ps1` — Tier-3 scenario runner, real binary, probe-gated | Demo box / nightly; needs the gateway + CLI binaries in the script directory |
195197
| `windows:e2e:mxc:mock` | Same runner with `-Mock` — wiring-only, no real `wxc-exec` needed | Any Windows host (CI, dev machine); validates wiring and the network-reject scenario |
198+
| `windows:qualify:mxc:gb300` | Complete source, host, ARM64 build/test, strict MXC, policy E2E, OpenClaw, and hash-bound evidence contract | Review/release evidence on a native GB300 Windows ARM64 host |
199+
200+
The exact required, optional, unsupported, and architecture-constrained GB300
201+
matrix is documented and machine-validated in
202+
[`qualification/`](qualification/README.md). Native-x64 NemoClaw and Windows x64
203+
lanes are explicitly separate and cannot receive GB300 ARM64 credit.
196204

197205
**Probe script:** `examples/probe-mxc-host.ps1` is an operator/CI preflight that emits a JSON capability report
198206
(OS build, wxc-exec path/version, dry-run exit code, per-backend trial result,
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# GB300 Windows ARM64 MXC qualification
2+
3+
This directory is the repository-owned qualification contract for NVBug 6643699.
4+
It closes the test-plan ambiguity without treating it as a product defect.
5+
6+
[`gb300-woa.json`](gb300-woa.json) is the authoritative coverage matrix. Every
7+
row declares its disposition, owner, architecture, hardware dependency,
8+
prerequisites, command, pass criteria, skip policy, and required artifact roles.
9+
[`validate.py`](validate.py) rejects a contract that weakens the required rows
10+
and validates retained evidence by SHA256. [`run-gb300-woa.ps1`](run-gb300-woa.ps1)
11+
executes the required native lane and produces that evidence.
12+
13+
## Scope decisions
14+
15+
- The release target is a **native GB300 Windows ARM64 host** using the MXC
16+
`process_container` backend. WSL and emulated/cross-built test execution do
17+
not receive credit.
18+
- OpenClaw is the one required agent application because this repository owns
19+
its MXC launch and dynamic-forwarding harness. The caller must supply a
20+
versioned ARM64 Node.js binary and OpenClaw package.
21+
- OpenShell does not choose or ship inference models. Model qualification and
22+
additional agent applications are optional, application-owned evidence and
23+
cannot replace an OpenShell/MXC gate.
24+
- NemoClaw's native-x64 qualification guard is a separate application lane. It
25+
cannot satisfy any GB300 ARM64 row. The bundled Node/OpenClaw install helper
26+
is also x64-only; GB300 runs must not use its Node.js output.
27+
- `isolation_session` is optional because it depends on the OS build,
28+
`IsoSessionApp.dll`, and the `wxc-exec` build. Its absence does not weaken the
29+
required ProcessContainer gate.
30+
- MXC process-policy mapping, GPU passthrough, and interactive exec/connect are
31+
unsupported. Windows Docker, Kubernetes, Podman, and VM drivers remain
32+
unsupported. Host GPU presence is not evidence of MXC GPU passthrough.
33+
34+
## Coverage summary
35+
36+
The JSON manifest contains the full prerequisites, pass/fail criteria, and
37+
artifact contract. This compact view makes the ownership boundary reviewable.
38+
39+
| Disposition | Coverage IDs | Owner boundary |
40+
|---|---|---|
41+
| Required | `contract-integrity`, `source-provenance`, `gb300-arm64-host`, `arm64-msvc-check`, `arm64-release-build`, `arm64-native-tests`, `arm64-unsupported-driver-contracts`, `processcontainer-real-mxc`, `processcontainer-policy-e2e`, `openclaw-arm64-forward` | OpenShell development owns repository tests; GB300 QA owns host execution and evidence; the agent-app owner supplies versioned ARM64 OpenClaw inputs |
42+
| Optional | `isolation-session`, `provider-credential-injection`, `etw-ocsf-audit`, `local-inference-models`, `additional-agent-apps` | The named component or product owner decides whether to attach extra evidence |
43+
| Unsupported | `wsl`, `windows-non-mxc-drivers`, `mxc-process-policy`, `mxc-gpu-passthrough`, `mxc-interactive-exec` | No qualification claim is permitted |
44+
| Architecture-constrained | `nemoclaw-native-x64`, `node-openclaw-x64-installer`, `windows-x64-lanes` | Native x64 lanes stay separate and receive no GB300 ARM64 credit |
45+
46+
Required coverage is fail-closed: a missing prerequisite, `SKIP`, non-zero exit,
47+
non-ARM64 result, missing artifact role, empty artifact, path outside the evidence
48+
root, or SHA256 mismatch fails validation. Generic real-MXC developer tasks remain
49+
skip-safe and are not qualification evidence.
50+
51+
## Validate the contract
52+
53+
Static validation and regression tests do not require Windows or MXC hardware:
54+
55+
```text
56+
uv run python crates/openshell-driver-mxc/qualification/validate.py contract
57+
uv run pytest python/openshell/gb300_mxc_qualification_test.py
58+
```
59+
60+
## Execute on GB300
61+
62+
Start from a clean review commit based directly on the freshly fetched
63+
`origin/windows` tip. Run from elevated native ARM64 PowerShell:
64+
65+
```powershell
66+
$env:OPENSHELL_GB300_BASE_SHA = '<full origin/windows SHA>'
67+
$env:OPENSHELL_GB300_HARDWARE_ATTESTATION = 'GB300'
68+
$env:OPENSHELL_WXC_EXEC_PATH = 'C:\mxc-kit\bin\wxc-exec.exe'
69+
$env:OPENSHELL_GB300_NODE_PATH = 'C:\path\to\arm64\node.exe'
70+
$env:OPENSHELL_GB300_OPENCLAW_DIR = 'C:\path\to\node_modules\openclaw'
71+
$env:OPENSHELL_GB300_EVIDENCE_DIR = 'D:\evidence\openshell-gb300-<run-id>'
72+
73+
mise run --skip-tools windows:qualify:mxc:gb300
74+
```
75+
76+
The runner fetches `origin/windows`, rejects a moved or unrelated base, requires
77+
a clean worktree, verifies the PE machine for `wxc-exec.exe` and `node.exe`, and
78+
stages only tracked examples plus freshly built ARM64 binaries. It never treats
79+
an existing source tree or an earlier result bundle as current evidence.
80+
81+
The evidence directory contains environment/source provenance, the MXC host
82+
probe, command logs with timings, ARM64 binary hashes, the complete MXC policy
83+
and OpenClaw bundles, `evidence.json`, and the final validation log. Do not put
84+
provider credentials in command lines or retained files. Optional credential
85+
coverage must use a scoped non-production credential and prove that retained
86+
artifacts contain no secret value.

0 commit comments

Comments
 (0)