Skip to content

feat(onboard): add Windows MXC host qualification - #8236

Merged
cv merged 4 commits into
mainfrom
codex/windows-mxc-provider-foundation
Aug 4, 2026
Merged

feat(onboard): add Windows MXC host qualification#8236
cv merged 4 commits into
mainfrom
codex/windows-mxc-provider-foundation

Conversation

@senthilr-nv

@senthilr-nv senthilr-nv commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds an inactive host-facts assessment for the native Windows/OpenShell MXC process_container candidate. The assessment fails closed for non-Windows hosts, unqualified architectures, malformed release data, and Windows builds below the candidate floor.

Related Issue

Part of #8178

Changes

Type of Change

  • Code change (feature, bug fix, or refactor)
  • Code change with doc updates
  • Doc only (prose changes, no code sample modifications)
  • Doc only (includes code sample changes)

Quality Gates

  • Tests added or updated for changed behavior
  • Existing tests cover changed behavior — justification:
  • Tests not applicable — justification:
  • Docs updated for user-facing behavior changes
  • Docs not applicable — justification: The new module is inactive and changes no CLI, configuration, workflow, output, provider registration, or supported behavior.
  • Sensitive paths changed (security, policy, credentials, preflight, onboarding, inference, runner, sandbox, or messaging)
  • Sensitive-path review completed or maintainer-approved waiver recorded — reviewer/approval link/justification: The host assessment is read-only, executes no command, mutates no state, and fails closed for unknown platform facts. Issue [Epic] Support native Windows through OpenShell MXC #8178 requires production registration to remain absent.
  • Non-success, skipped, or missing CI check accepted by maintainer — check name, approval link, and follow-up issue:

Documentation Writer Review

  • Documentation writer subagent reviewed the completed changes
  • Result: no-docs-needed
  • Evidence: The inactive host-facts module remains referenced only by its source test and changes no user-visible or supported product surface. The second base update was mechanical; both feature blobs and the effective feature diff are unchanged. Changed comments and test titles pass the writing and terminology review.
  • Agent: Codex Desktop

DGX Station Hardware Evidence

  • Tested on DGX Station
  • Tested commit:
  • Station profile/scenario:
  • Result:
  • Supporting evidence:

Verification

  • PR description includes a Signed-off-by: line and every commit appears as Verified in GitHub
  • Normal pre-commit, commit-msg, and pre-push hooks passed, or npm run validate:pr passed after refreshing origin/main when hooks were skipped or unavailable
  • Targeted behavior tests pass for the current change set, or tests are marked not applicable above — command/result or justification: npx vitest run --project cli src/lib/onboard/windows-mxc/host-qualification.test.ts passed 13 tests.
  • Applicable broad gate passed — npm test for broad runtime/test-harness changes; npm run check for repo-wide validation/coverage changes — command/result: Not applicable to the isolated two-file source change. npm run checks:repository passed.
  • Quality Gates section completed with required justifications or waivers
  • No secrets, API keys, or credentials committed
  • npm run docs builds without warnings (doc changes only)
  • Doc pages follow the style guide (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

Signed-off-by: Senthil Ravichandran senthilr@nvidia.com

Summary by CodeRabbit

  • New Features

    • Added host qualification for native Windows MXC process containers.
    • Validates Windows platform, x64 architecture, minimum supported build, and recognizable Windows release formats.
    • Provides clear qualification results and rejection reasons for unsupported hosts.
  • Tests

    • Added coverage for supported builds, newer revisions, older or malformed releases, whitespace-tolerant parsing, unsupported platforms, WSL environments, and architecture mismatches.

@senthilr-nv senthilr-nv added area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow platform: windows Affects native Windows environments labels Aug 4, 2026
@senthilr-nv senthilr-nv self-assigned this Aug 4, 2026
@senthilr-nv senthilr-nv added area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow platform: windows Affects native Windows environments labels Aug 4, 2026
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds Windows/MXC host qualification contracts, Windows build parsing, ordered host checks, structured results, and Vitest coverage for supported and rejected host conditions.

Changes

Windows MXC qualification

Layer / File(s) Summary
Qualification contract and build parsing
src/lib/onboard/windows-mxc/host-qualification.ts
Adds versioned constants, public host-facts and candidate-result types, and parsing for Windows build numbers.
Host assessment and test coverage
src/lib/onboard/windows-mxc/host-qualification.ts, src/lib/onboard/windows-mxc/host-qualification.test.ts
Assesses native Windows x64 hosts against release and minimum-build requirements. Tests cover qualified hosts, rejection reasons, malformed releases, and whitespace-tolerant parsing.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the added Windows MXC host qualification logic.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/windows-mxc-provider-foundation

Comment @coderabbitai help to get the list of available commands.

@senthilr-nv senthilr-nv added feature PR adds or expands user-visible functionality v0.0.103 labels Aug 4, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/lib/onboard/windows-mxc/host-qualification.test.ts`:
- Around line 14-28: Update the boundary tests in the Windows MXC host
qualification suite, including the exact-floor and below-floor cases, to use
literal build values: 26100 must qualify and 26099 must be rejected. Keep
implementation-derived constants only where they do not define the tested
boundary, and ensure expected windowsBuild values are also literal so changes to
WINDOWS_MXC_PROCESS_CONTAINER_MINIMUM_BUILD cannot make the tests pass
spuriously.

In `@src/lib/onboard/windows-mxc/host-qualification.ts`:
- Around line 9-12: Update WindowsMxcHostFacts and the onboarding qualification
flow so facts is required and architecture is populated from the native Windows
host architecture rather than process.arch. Ensure qualification rejects an x64
Node.js process running on an ARM64 host, and add a regression test covering
this emulation scenario.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: e380899d-729e-4313-9366-4d18d7782732

📥 Commits

Reviewing files that changed from the base of the PR and between 8683777 and f808c23.

📒 Files selected for processing (2)
  • src/lib/onboard/windows-mxc/host-qualification.test.ts
  • src/lib/onboard/windows-mxc/host-qualification.ts

Comment thread src/lib/onboard/windows-mxc/host-qualification.test.ts
Comment thread src/lib/onboard/windows-mxc/host-qualification.ts
@github-actions

github-actions Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor — No blocking findings reported

Advisor assessment: No blocking advisor findings reported
Next action: Review the warnings below.
Findings: 0 blockers · 1 warning · 0 suggestions

Model lanes

  • GPT-5.6 Terra (primary): Completed · high confidence · 0 blockers · 1 warning · 0 suggestions
  • Nemotron 3 Ultra (second opinion): Completed · high confidence · 0 blockers · 0 warnings · 0 suggestions
  • Model comparison: normalized findings differ; normalized terminology decisions differ; normalized E2E selections match; Nemotron reported the same number of blockers, 1 fewer warning, the same number of suggestions.
7 terminology differences from the second opinion

Advisory only. These are normalized differences from the primary terminology receipt.

  • build floor at src/lib/onboard/windows-mxc/host-qualification.test.ts:13: selected only by the second-opinion lane as established.
  • host qualification at src/lib/onboard/windows-mxc/host-qualification.test.ts:10: selected only by the second-opinion lane as established.
  • candidate at src/lib/onboard/windows-mxc/host-qualification.test.ts:7: selected only by the second-opinion lane as established.
  • MXC at src/lib/onboard/windows-mxc/host-qualification.test.ts:7: selected only by the second-opinion lane as established.
  • candidate floor at src/lib/onboard/windows-mxc/host-qualification.test.ts:68: selected only by the second-opinion lane as define.
  • host facts at src/lib/onboard/windows-mxc/host-qualification.ts:47: selected only by the second-opinion lane as define.
  • process_container at src/lib/onboard/windows-mxc/host-qualification.test.ts:9: selected only by the second-opinion lane as define.

Second-opinion terminology and E2E selections are advisory. They do not change the primary assessment or E2E / PR Gate.

2 semantic terminology decisions

Terminology decisions are advisory. They affect the assessment only when a separate finding identifies concrete semantic impact.

  • define — host-facts contract at src/lib/onboard/windows-mxc/host-qualification.ts:47: Keep the adjacent definition that limits the contract to host facts and states its excluded effects.
  • justified — candidate at src/lib/onboard/windows-mxc/host-qualification.ts:45: Keep the inactive qualifier and the adjacent explanation of what a positive result does not establish.

E2E guidance

Advisory only. E2E / PR Gate selects and runs jobs independently.

Recommended E2E: onboard-repair, onboard-resume, cloud-onboard

1 warning · 0 suggestions

Warnings

Warnings do not block.

PRA-1 Warning — Remove the unused host-qualification compatibility layer or connect a current consumer

  • Location: src/lib/onboard/windows-mxc/host-qualification.ts:50
  • Category: architecture
  • Problem: The PR adds a versioned Windows/MXC eligibility contract, but no current production caller supplies host facts or consumes its result. The only repository references are this module and its source test.
  • Impact: The repository gains a versioned, unowned compatibility contract whose build floor and result schema can drift before any onboarding path uses it.
  • Recommendation: Remove this deferred layer until a current onboarding consumer exists, or add that consumer and an integration contract test that proves it supplies native host facts and gates the intended operation.
  • Verification: Read repository references to assessWindowsMxcProcessContainerCandidate and verify that a production onboarding path imports and uses the result.
  • Test coverage: If retained with a current consumer, add an integration contract test that verifies the consumer obtains native architecture, passes the host release, and denies the gated operation for each rejected qualification result.
  • Simplification (delete): Remove The unused versioned host-qualification module and its isolated test.; use Add the qualification logic with its named onboarding consumer when the provider-selection path exists.. Net: -196 lines.
  • Keep: Do not remove qualification validation once a consumer uses it to gate provider or sandbox operations.
  • Evidence: src/lib/onboard/windows-mxc/host-qualification.ts:45-50 describes an inactive candidate and exports the assessment API. Repository search finds assessWindowsMxcProcessContainerCandidate only in src/lib/onboard/windows-mxc/host-qualification.ts and host-qualification.test.ts. The source-of-truth review requires a named current consumer and a contract test for compatibility or extension code.

Workflow run details

This automated review informs maintainers. Warnings and suggestions do not require a response. A maintainer decides whether to merge.

@github-code-quality

github-code-quality Bot commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Code Coverage Overview

Languages: TypeScript

TypeScript / code-coverage/plugin

The overall coverage in commit 08d8115 in the codex/windows-mxc-pr... branch remains at 96%, unchanged from commit 3f7097b in the main branch.

TypeScript / code-coverage/cli

The overall coverage in commit 08d8115 in the codex/windows-mxc-pr... branch remains at 81%, unchanged from commit 3f7097b in the main branch.

Show a code coverage summary of the most impacted files.
File main 3f7097b codex/windows-mxc-pr... 08d8115 +/-
src/lib/shields/index.ts 71% 70% -1%
src/lib/sandbox...rce-identity.ts 87% 87% 0%
src/lib/tunnel/services.ts 76% 76% 0%
src/lib/private-networks.ts 90% 93% +3%
src/lib/policy/...ne-exclusion.ts 92% 96% +4%
src/lib/onboard...ualification.ts 0% 100% +100%

Updated August 04, 2026 18:56 UTC

@apurvvkumaria apurvvkumaria left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed current head 21bb036. The new host-qualification contract is inactive and has no production caller or provider registration. It fails closed for non-Windows hosts, non-x64 native architecture, malformed release data, and builds below 26100; the focused 13-test suite passes, and current build/typecheck, CLI, static-analysis, CodeQL, and dependency-audit checks are green. No blocking correctness, security, compatibility, or regression issue found.

@cv
cv merged commit dd5dc0b into main Aug 4, 2026
74 checks passed
@cv
cv deleted the codex/windows-mxc-provider-foundation branch August 4, 2026 19:09
senthilr-nv added a commit that referenced this pull request Aug 5, 2026
<!-- markdownlint-disable MD041 -->
## Summary

Adds an inactive OpenShell MXC runtime-provider candidate for native
Windows/OpenClaw work. The candidate consumes the merged
host-qualification and native-artifact contracts, but remains absent
from production selection and fails closed for every unqualified
lifecycle or mutation surface.

## Related Issue

Related to #8178.

## Changes

- Extend the provider workload profile and persisted workload receipt to
recognize the strict Windows/OpenClaw native-artifact contract from
#8243 while making Docker reject that receipt.
- Add one identity-consistent `mxc` provider bundle that reports
candidate host facts through #8236 and accepts only validated
native-artifact receipts.
- Keep lifecycle, mutation authority, bootstrap, snapshot, recovery,
cleanup, and container-engine operations typed as unsupported until the
corresponding OpenShell contracts and protected live E2E pass.
- Preserve native-artifact receipts through replacement bookkeeping and
add registry, source-boundary, and fail-closed tests. This uses #7744's
provider bundle rather than adding MXC branches to central
orchestration.

## Type of Change

- [x] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)

## Quality Gates

- [x] Tests added or updated for changed behavior
- [ ] Existing tests cover changed behavior — justification:
- [ ] Tests not applicable — justification:
- [ ] Docs updated for user-facing behavior changes
- [x] Docs not applicable — justification: MXC remains absent from
`CURRENT_RUNTIME_PROVIDER_BUNDLES`, has no production import or
selection path, and exposes no CLI, configuration, workflow, or
supported behavior.
- [x] Sensitive paths changed (security, policy, credentials, preflight,
onboarding, inference, runner, sandbox, or messaging)
- [x] Sensitive-path review completed or maintainer-approved waiver
recorded — reviewer/approval link/justification: Exact-head
nine-category security review PASS at
`8e8a32b73bbc9938018a0980d2a99f0f74720f4e` against base
`962f1c3bf3a1354a8cfdc2056e04a27828be0dc0`. The effective binary diff
SHA-256 remains
`157885993ef0731db6b77653e778b296d1f15b786431b64832e9da4e3aff42ca`,
identical to the previously reviewed patch. MXC remains unregistered and
unselectable; the strict native-receipt parser and Docker rejection are
unchanged; lifecycle and mutation operations fail closed. The merge adds
only current-main history outside the effective diff. No secrets,
dependencies, network calls, privilege paths, credential handling,
authentication, or cryptography changed.
- [ ] Non-success, skipped, or missing CI check accepted by maintainer —
check name, approval link, and follow-up issue:

## Documentation Writer Review

- [x] Documentation writer subagent reviewed the completed changes
- Result: `no-docs-needed`
- Evidence: Reviewed exact base
`0385c0423125abbb29aa6028877c3e5c34ef8b46` through head
`8239b1ad312d3e8278f4945537b6264dba405dc2`. The immutable compare
contains 14 source and test files with 469 insertions and 11 deletions;
it contains no documentation or Fern files.
`CURRENT_RUNTIME_PROVIDER_BUNDLES` still registers only Docker and
Kubernetes, so MXC remains unregistered and unselectable. Issue #8178
explicitly sequences #8271 as an inactive provider slice and keeps
activation and support documentation gated on later package contracts
and protected Windows/MXC/OpenClaw live E2E. Changed comments,
diagnostics, and behavior-oriented test titles have no writing findings.
No user-facing command, configuration, workflow, default, error, or
supported behavior changed. A docs build is not applicable.
- Agent: Codex Desktop
<!-- docs-review-head-sha: 8239b1a -->
<!-- docs-review-agents-blob-sha:
3dd7c24 -->
## DGX Station Hardware Evidence

- [ ] Tested on DGX Station
- Tested commit: Not applicable; `scripts/prepare-dgx-station-host.sh`
is unchanged.
- Station profile/scenario: Not applicable.
- Result: Not applicable.
- Supporting evidence: Not applicable.

## Verification

- [x] PR description includes a `Signed-off-by:` line and every
published commit appears as `Verified` in GitHub
- [x] Normal `pre-commit`, `commit-msg`, and `pre-push` hooks passed, or
`npm run validate:pr` passed after refreshing `origin/main` when hooks
were skipped or unavailable
- [x] Targeted behavior tests pass for the current change set, or tests
are marked not applicable above — exact head `8e8a32b73`: 4 focused
files and 64 tests passed. `npm run build:cli`, `npm run typecheck:cli`,
`npm run validate:pr`, and `git diff --check` passed. The effective
patch is byte-identical to the previously reviewed head.
- [ ] Applicable broad gate passed — `npm test` for broad
runtime/test-harness changes; `npm run check` for repo-wide
validation/coverage changes — not applicable because the provider is
inactive and unregistered; protected CI is authoritative for the
complete repository matrix.
- [x] Quality Gates section completed with required justifications or
waivers
- [x] No secrets, API keys, or credentials committed
- [ ] `npm run docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)

---
Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>

---------

Signed-off-by: Senthil Ravichandran <senthilr@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: onboarding Onboarding FSM, provider setup, sandbox launch, or first-run flow feature PR adds or expands user-visible functionality platform: windows Affects native Windows environments

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants