Phase 3a: decouple ProcessContainer backend selection from schema version#580
Merged
Merged
Conversation
Base automatically changed from
user/gudge/versioning_phase2_5_state_aware_conformance
to
main
June 30, 2026 18:28
bbonaby
reviewed
Jul 2, 2026
MGudgin
pushed a commit
that referenced
this pull request
Jul 7, 2026
…comments This change addresses bbonaby's review feedback on the Phase 3a PR. It reworks the BaseContainer E_NOTIMPL diagnostic to describe the feature as simply not enabled on the OS build (pointing at the Windows experimental-features settings) rather than referencing internal "velocity keys", and removes internal iterative-review item numbers that had leaked into test comments. Details: - launch_diagnostics: drop "velocity keys" from the three user-facing E_NOTIMPL messages in favour of neutral "feature is not enabled on this OS build" wording, and surface disabled ids as "disabled feature flags". Internal identifiers (check_velocity_keys, REQUIRED_VELOCITY_KEYS) are unchanged. - sandbox.rs: strip the "#1"/"#2" review-item references from the ProcessContainer test comments and trim the process_container_request doc comment. Tests: - cargo test -p appcontainer_common (126 passed) and -p mxc-sdk (all passed); updated the api_not_implemented assertion to match the new message. - cargo fmt + clippy -D warnings clean on both crates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Generated-with: claude-opus-4.8
This was referenced Jul 7, 2026
Contributor
There was a problem hiding this comment.
Pull request overview
Phase 3a of the versioning remediation: removes schema-version (and --experimental) influence over Windows ProcessContainer backend selection so AppContainer vs BaseContainer is chosen purely by host capability, aligning executor and SDK behavior and unblocking a future schema-floor raise (Phase 3b).
Changes:
- Route
ContainmentBackend::ProcessContainerunconditionally through the capability-driven dispatcher inwxc-exec(removing schema/experimental gating and the plain-AppContainer arm). - Update
mxc-sdkstreaming dispatch to select BaseContainer vs AppContainer based on a direct host-capability probe (instead of schema version), and refresh tests/docs/comments accordingly. - Refactor SDK wire conformance tests: extract shared type-assertion helpers and add a new state-aware wire conformance oracle + wire it into
npm run test:unit.
Show a summary per file
| File | Description |
|---|---|
| src/core/wxc/src/main.rs | Always dispatch ProcessContainer through capability-driven fallback selection; remove version/experimental gate. |
| src/core/wxc_common/src/models.rs | Update ProcessContainer docstring to reflect capability-driven selection. |
| src/core/wxc_common/src/config_parser.rs | Remove is_base_container_version/threshold constant and associated unit tests. |
| src/core/mxc-sdk/tests/sandbox.rs | Reframe Windows integration tests as backend-agnostic ProcessContainer regression guards. |
| src/core/mxc-sdk/src/policy.rs | Update policy backend comment to describe ProcessContainer’s runtime resolution. |
| src/core/mxc-sdk/src/dispatch.rs | Change streaming ProcessContainer selection to use is_base_container_usable() probe. |
| src/backends/appcontainer/common/src/launch_diagnostics.rs | Refresh BaseContainer-not-enabled diagnostics messaging + adjust test assertion accordingly. |
| src/backends/appcontainer/common/src/base_container_runner.rs | Update BaseContainer “API unavailable” hint to remove schema/experimental-based guidance. |
| src/backends/appcontainer/common/src/appcontainer_runner.rs | Reword BFS-not-available error message to remove schema-version-based guidance. |
| sdk/tests/unit/wire-conformance.test.ts | Move shared type-level helpers to a dedicated module. |
| sdk/tests/unit/wire-conformance-state-aware.test.ts | Add state-aware public-types ↔ generated-wire conformance oracle. |
| sdk/tests/unit/conformance-helpers.ts | New shared type-level assertion helper module for conformance tests. |
| sdk/package.json | Include the new state-aware conformance test in test:unit. |
| docs/schema-codegen.md | Document the two conformance oracles and shared helper module. |
Review details
- Files reviewed: 14/14 changed files
- Comments generated: 1
- Review effort level: Low
MGudgin
pushed a commit
that referenced
this pull request
Jul 7, 2026
… explicit This change fixes a misleading comment on the mxc-sdk streaming dispatch path, flagged in review of #580. The comment claimed the non-BaseContainer streaming fallback used "plain AppContainer", but AppContainerScriptRunner::new() defaults to FilesystemMode::Bfs, so the fallback is really the AppContainer+BFS tier (still dependent on bfscfg.exe), and the AppContainer+DACL tier is genuinely unavailable on the streaming path. Details: - Reword the comment to state that streaming offers only two tiers: BaseContainer when usable, otherwise AppContainer in BFS mode (the dispatcher's Tier 2), with no Tier 3 AppContainer-DACL fallback. - Construct the fallback runner via with_filesystem_mode(FilesystemMode::Bfs) instead of new(), so the BFS choice is explicit and cannot silently drift if the new() default changes. Tests: - cargo test -p mxc-sdk (all passed); clippy -D warnings and fmt clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Generated-with: claude-opus-4.8
MGudgin
pushed a commit
that referenced
this pull request
Jul 7, 2026
…comments This change addresses bbonaby's review feedback on the Phase 3a PR. It reworks the BaseContainer E_NOTIMPL diagnostic to describe the feature as simply not enabled on the OS build (pointing at the Windows experimental-features settings) rather than referencing internal "velocity keys", and removes internal iterative-review item numbers that had leaked into test comments. Details: - launch_diagnostics: drop "velocity keys" from the three user-facing E_NOTIMPL messages in favour of neutral "feature is not enabled on this OS build" wording, and surface disabled ids as "disabled feature flags". Internal identifiers (check_velocity_keys, REQUIRED_VELOCITY_KEYS) are unchanged. - sandbox.rs: strip the "#1"/"#2" review-item references from the ProcessContainer test comments and trim the process_container_request doc comment. Tests: - cargo test -p appcontainer_common (126 passed) and -p mxc-sdk (all passed); updated the api_not_implemented assertion to match the new message. - cargo fmt + clippy -D warnings clean on both crates. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Generated-with: claude-opus-4.8
MGudgin
pushed a commit
that referenced
this pull request
Jul 7, 2026
… explicit This change fixes a misleading comment on the mxc-sdk streaming dispatch path, flagged in review of #580. The comment claimed the non-BaseContainer streaming fallback used "plain AppContainer", but AppContainerScriptRunner::new() defaults to FilesystemMode::Bfs, so the fallback is really the AppContainer+BFS tier (still dependent on bfscfg.exe), and the AppContainer+DACL tier is genuinely unavailable on the streaming path. Details: - Reword the comment to state that streaming offers only two tiers: BaseContainer when usable, otherwise AppContainer in BFS mode (the dispatcher's Tier 2), with no Tier 3 AppContainer-DACL fallback. - Construct the fallback runner via with_filesystem_mode(FilesystemMode::Bfs) instead of new(), so the BFS choice is explicit and cannot silently drift if the new() default changes. Tests: - cargo test -p mxc-sdk (all passed); clippy -D warnings and fmt clean. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Generated-with: claude-opus-4.8
b1085ad to
5b052ba
Compare
Collaborator
|
just need to fix the merge conflict and we should be good |
5b052ba to
1f56d9e
Compare
bbonaby
approved these changes
Jul 10, 2026
Member
Author
|
Closing to try to 'jog' license/cla gate. |
This change makes the Windows ProcessContainer AppContainer-vs-BaseContainer choice entirely host-capability driven: BaseContainer is preferred when usable, and AppContainer+BFS is the downlevel fallback. Schema version and --experimental no longer affect this selection. It also incorporates updates that clarify diagnostics and make the streaming fallback explicit. Details: - Route the executor through the capability-driven dispatcher unconditionally and remove the schema-version/experimental gate and obsolete parser helper. - Select the SDK streaming backend using the same BaseContainer usability probe; on downlevel hosts it explicitly creates an AppContainer+BFS runner. - Reword BaseContainer E_NOTIMPL diagnostics to describe an OS-disabled feature without internal terminology, and remove stale schema-version guidance. - Update backend-agnostic regression coverage and tidy related comments. Tests: - cargo test -p wxc_common -p appcontainer_common -p mxc-sdk - cargo clippy --workspace --all-targets -- -D warnings - cargo fmt --all -- --check - check-schema-codegen.js and check-sdk-types-codegen.js Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 6c58a97a-f189-43eb-b159-78965a028dc9 Generated-with: gpt-5.6-terra
1f56d9e to
6548b10
Compare
bbonaby
approved these changes
Jul 10, 2026
caarlos0
added a commit
to caarlos0/mxc
that referenced
this pull request
Jul 13, 2026
Integrate 4 upstream commits (Windows Sandbox Phase 0 plumbing, schema floor raise to 0.6.0 (microsoft#581), ProcessContainer/schema decoupling (microsoft#580), mxc_telemetry license fix). Resolve the sole conflict in sdk/tests/unit/sandbox.test.ts: keep this branch's "should accept proxy configuration on macOS (Seatbelt)" test (proxy accepted, version 0.7.0-alpha) over upstream's stale "not supported on macOS" assertion, since this branch adds the Seatbelt proxy support. 0.7.0-alpha remains within the raised 0.6.0-0.8.0 range. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d3191c12-2deb-452b-8379-3abbcd5eeb68 Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change makes the Windows ProcessContainer AppContainer-vs-BaseContainer
choice entirely host-capability driven: BaseContainer is preferred when usable,
and AppContainer is the downlevel fallback. Schema version and
--experimental no longer affect this selection. It also incorporates updates
that clarify diagnostics and make the streaming fallback explicit.
Details:
and remove the schema-version/experimental gate and obsolete parser helper.
on downlevel hosts it explicitly creates an AppContainer runner.
without internal terminology, and remove stale schema-version guidance.
Tests:
Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com
Copilot-Session: 6c58a97a-f189-43eb-b159-78965a028dc9
Generated-with: gpt-5.6-terra
Microsoft Reviewers: Open in CodeFlow