Skip to content

test(mxc): authorize curl in the HTTPS egress fixture - #4071

Open
shailendra-nv wants to merge 1 commit into
windowsfrom
codex/mxc-https-test-socket-owner
Open

shailendra-nv wants to merge 1 commit into
windowsfrom
codex/mxc-https-test-socket-owner

Conversation

@shailendra-nv

@shailendra-nv shailendra-nv commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Fix the real-MXC HTTPS integration test's binary allowlist. The workload launches curl through cmd.exe, but Windows egress policy checks curl as the socket owner; allowing only cmd.exe caused the GET request to receive HTTP 403 before the test could validate the injected CA bundle.

Related Issue

No issue required: this is a localized test-fixture correction for the socket-owner contract introduced in #3491, identified while validating #3853.

Changes

  • Allow the actual curl executable used by the HTTPS workload.
  • Explain why the shell parent is not the correct network-policy identity.
  • Preserve certificate validation, the read-only endpoint policy, and the assertion that POST is denied by OpenShell.

Testing

  • mise run pre-commit passes.
  • Existing integration test updated; no runtime code changes.
  • mise run --skip-tools windows:test:arm64: 5,044 passed, 29 skipped; nextest reported 6 leaky tests.
  • Local x64, mise run --skip-tools windows:test:x64 at commit 01ca1d508a15b9d19fd3cc4369b809131b40c24e: 5,044 passed, 29 skipped; nextest reported 6 leaky tests.
  • Local x64 real-MXC results: 11 tests executed and passed, 1 returned an explicit skip, 3 failed, and the child probe entrypoint was filtered out. The Rust harness counts the early-return skip among its 12 passes.
  • mise run --skip-tools windows:test:mxc-real:arm64: 13 tests executed and passed, 2 tests returned explicit skips, and the child probe entrypoint was filtered out. The corrected HTTPS test passed GET, proxy-issued certificate, and POST-denial assertions; the separate socket-owner allow/deny regression also passed.
  • ARM64 real-MXC skips: the host runner lacks SC_MANAGER_CREATE_SERVICE; the isolation-session probe is rejected because its configuration does not acknowledge that backend's unrestricted networking. On the x64 host, only the latter test skipped; the token-isolation test passed.
  • Local x64 failures: dryrun_accepts_split_policy_output, pc_https_egress_reads_injected_ca_bundle, and pc_proxy_scopes_network_policy_to_socket_owner. All three also fail on the unchanged base d1ae20a0b6718a8a78d18397e5ccd175471ff388, tested in a separate checkout. The two workloads fail before producing their curl diagnostics.
  • Both local machines use MXC 0.8.0+6cd3d58f. ARM64 selects base-container; the x64 host selects appcontainer-dacl. The fallback backend does not support the mapper's loopback egress allow rules and rejects the generated policy before launch. BaseContainer API presence alone does not establish usability. Merge is authorized with this documented pre-existing local x64 host limitation.
  • mise run ci was attempted locally but stopped at test:e2e-parity: Bash resolves to WSL on this host, which has no installed distribution. GitHub Branch Checks and Windows MSVC CI completed successfully for this head, including the x64 and ARM64 Windows jobs. The current PR reports 32 passing checks, 34 skipped jobs, and no failing or pending checks. The local x64 limitation is documented above and accepted for this merge.

Checklist

  • Follows Conventional Commits.
  • Commit is signed off (DCO).
  • Architecture documentation and skills: not applicable; no product behavior, architecture, commands, or workflows change.

Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
@shailendra-nv shailendra-nv added the test:windows Run native Windows x64 and ARM64 lint/tests on PR mirrors label Oct 1, 2026
@copy-pr-bot

copy-pr-bot Bot commented Oct 1, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@shailendra-nv shailendra-nv left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Reviewed commit 01ca1d508a15b9d19fd3cc4369b809131b40c24e against windows (d1ae20a0b6718a8a78d18397e5ccd175471ff388). No actionable findings.

The full diff changes only the HTTPS integration fixture's executable allowlist. It uses the same curl path that the workload launches, matching Windows socket-owner authorization. The destination restriction, read-only policy, injected-CA validation, proxy-issued-certificate assertion, and POST-denial assertions remain intact. The adjacent socket-owner allow/deny regression also passed. No runtime, documentation, or skill change is needed.

Local validation: pre-commit and the commit hook passed; the native ARM64 workspace suite passed 5,044 tests (29 skipped; nextest reported 6 leaky tests); the real-MXC suite passed all 13 executed tests with the two existing skips documented in the PR. The general local CI task stopped at the Bash/WSL prerequisite, as recorded in the PR.

Submitting this as a comment review because GitHub does not permit a PR author to approve their own PR. Merge remains contingent on successful GitHub CI for this commit.

@shailendra-nv

Copy link
Copy Markdown
Collaborator Author

/ok to test 01ca1d5

@shailendra-nv shailendra-nv left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Re-reviewed commit 01ca1d508a15b9d19fd3cc4369b809131b40c24e: no additional code findings. The fixture correctly authorizes curl, which owns the socket, while retaining certificate verification and the read-only POST denial assertion.

Local qualification now includes both requested architectures:

Suite ARM64 Colossus x64
Native workspace 5,044 passed, 29 skipped 5,044 passed, 29 skipped
Real MXC 13 executed and passed, 2 explicit early-return skips 11 executed and passed, 1 explicit early-return skip, 3 failed

Both real-MXC runs filter out the child probe entrypoint. Nextest reports 6 leaky workspace tests on each host. The Rust harness counts real-MXC early-return skips as passes; the table separates them.

The Colossus failures are dryrun_accepts_split_policy_output, pc_https_egress_reads_injected_ca_bundle, and pc_proxy_scopes_network_policy_to_socket_owner. The unchanged base d1ae20a0b6718a8a78d18397e5ccd175471ff388 produces the same three failures in a separate checkout. Both workload tests exit before writing their curl diagnostics.

Both hosts use MXC 0.8.0+6cd3d58f. ARM64 selects base-container, while Colossus selects appcontainer-dacl; its BaseContainer API is present but the usable backend is unavailable. The selected fallback rejects the mapped loopback egress allow rules. The matching upstream fallback validator and network capability validator explain this limitation.

Merge remains on hold pending a successful local x64 real-MXC run on a compatible host. Branch Checks passed; the Windows MSVC run passed both unit-test stages and is still building the example binaries. This comment records the review and outstanding qualification; it is not an approval.

@shailendra-nv
shailendra-nv enabled auto-merge (squash) October 1, 2026 22:32

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:windows Run native Windows x64 and ARM64 lint/tests on PR mirrors

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant