Skip to content

Migrate development requests to version-specific parsers - #1099

Open
Gudge (MGudgin) wants to merge 3 commits into
user/gudge/version_specific_config_parsers_phase7dfrom
user/gudge/version_specific_config_parsers_phase8
Open

Migrate development requests to version-specific parsers#1099
Gudge (MGudgin) wants to merge 3 commits into
user/gudge/version_specific_config_parsers_phase7dfrom
user/gudge/version_specific_config_parsers_phase8

Conversation

@MGudgin

@MGudginGudge (MGudgin) commented Sep 3, 2026

Copy link
Copy Markdown
Member

This PR changes development and state-aware request producers to target the
exact 0.9.0-alpha contract and makes their compatibility status executable.

Details

  • Migrates 125 corpus documents and SDK request producers to 0.9.0-alpha.
  • Classifies seven intentional contract tightenings whose fixtures exercise
    rolling-only compatibility behavior.
  • Records the migrated corpus in a checked-in inventory for future audits.
  • Aligns development documentation and examples with the exact 0.9.0-alpha
    schema and documents the state-aware version boundary.

Tests

  • cargo fmt --all -- --check
  • cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • Node SDK build and unit tests; C# SDK tests (118 passed, 24 skipped).
  • Config validation, schema/version synchronization, and codegen drift gates.
Microsoft Reviewers: Open in CodeFlow

@MGudgin
Gudge (MGudgin) requested a review from a team as a code ownerSeptember 3, 2026 19:25
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 55b07a4 to 0953b3fCompareSeptember 3, 2026 19:28
CopilotAI balanced review requested due to automatic review settings September 3, 2026 19:42
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 0953b3f to a1a929eCompareSeptember 3, 2026 19:42
@MGudgin
Gudge (MGudgin) requested a review from a teamSeptember 3, 2026 19:42

CopilotAI 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.

Copilot review overview

🟡 Changes recommended

Missing request versions and lost duplicate-inventory detection are unresolved moderate issues.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 2 Medium severity · 1 Low severity

New issues introduced by this change (3)
SeverityFinding
Medium severitysrc/​core/​mxc-sdk/​tests/​state_aware.rs — The migration misses direct state-aware request literals in `src/core/mxc_engine/src/state_aware.rs:…
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check…
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in…
What changed in this PR

Migrates development and state-aware request producers and fixtures to the exact 0.9.0-alpha contract.

Changes:

  • Updates 125 corpus documents and SDK request producers.
  • Classifies seven intentional parser compatibility differences.
  • Adds migration inventory and aligns documentation and examples.
FileDescription
tests/​policy/​state-aware-wslc-provision.jsonUpdates the policy fixture to 0.9.
tests/​policy/​state-aware-wslc-exec.jsonUpdates the policy fixture to 0.9.
tests/​policy/​request-wslc.jsonUpdates the nested policy version.
tests/​examples/​wslc_hello_world.jsonUpdates the example to 0.9.
tests/​examples/​28_telemetry_enabled.jsonTargets the exact 0.9 schema.
tests/​examples/​10_windows_sandbox_network_isolated.jsonUpdates the example to 0.9.
tests/​examples/​09_windows_sandbox_hello_world.jsonUpdates the example to 0.9.
tests/​configs/​wslc_timeout.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_tar_import_rootfs.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_tar_import_docker_save.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_stderr.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_state_aware_stop.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_start.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_provision.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_provision_with_filesystem.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_provision_rejected_proxy.jsonMigrates the rejection fixture.
tests/​configs/​wslc_state_aware_provision_rejected_hosts.jsonMigrates the rejection fixture.
tests/​configs/​wslc_state_aware_provision_rejected_denied.jsonMigrates the rejection fixture.
tests/​configs/​wslc_state_aware_provision_bridged.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_write_marker.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_rejected_filesystem.jsonMigrates a classified divergence fixture.
tests/​configs/​wslc_state_aware_exec_read_marker.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_proxy.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_exit_7.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_exit_1.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_exit_0.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_env.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_drip.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_exec_basic.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_state_aware_deprovision.jsonMigrates the lifecycle fixture.
tests/​configs/​wslc_readonly_mount.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_python_stdlib.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_python_hello.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_port_mapping_tcp.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_port_mapping_multiple.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_network_proxy.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_network_isolated.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_most_specific_denied_parent.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_large_output.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_filesystem.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_filesystem_object.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_exit_code.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_env_vars.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_destroy_on_exit_true.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_destroy_on_exit_false.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_denied_masking.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_denied_dotdot_alias.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_custom_registry.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_custom_registry_quay.jsonMigrates the fixture to 0.9.
tests/​configs/​wslc_custom_registry_ghcr.jsonMigrates the fixture to 0.9.
tests/​configs/​windows_sandbox_timeout.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_stderr.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_powershell.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_powershell_env.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_exit_code.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_echo.jsonDeclares the 0.9 contract.
tests/​configs/​windows_sandbox_custom_timeout.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_timeout.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_timeout_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_stdlib.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_stdlib_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_network.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_network_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_multiline.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_multiline_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_large_output.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_large_output_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_hello.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_hello_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_exit_code.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_exit_code_linux.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_error.jsonDeclares the 0.9 contract.
tests/​configs/​microvm_error_linux.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_timeout.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_streaming_smoke.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_stdout_stderr_interleaved.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_stderr.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_state_aware_stop.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_start.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_provision.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_provision_with_filesystem.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_state_aware_provision_rejected_ui.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_state_aware_provision_rejected_network.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_state_aware_provision_rejected_denied.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_state_aware_provision_appid.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_provision_appid_too_long.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_provision_appid_empty.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_provision_appid_control.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_write_marker.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_setx_modified.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_setx_initial.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_read_persist.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_read_marker.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_exit_2.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_exit_1.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_exit_0.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_env_modified.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_env_initial.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_env_absent.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_cwd.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_exec_basic.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_state_aware_deprovision.jsonAdds the lifecycle contract version.
tests/​configs/​isolation_session_powershell_interactive.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_one_shot_ui_rejected.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_one_shot_stray_config_ignored.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_one_shot_network_rejected.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_one_shot_network_rejected_no_local.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_one_shot_network_rejected_hosts.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_one_shot_lifecycle_rejected.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_hello.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_exit42.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_configid_ignored.jsonMigrates a classified divergence fixture.
tests/​configs/​isolation_session_concurrent_D.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_concurrent_C.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_concurrent_B.jsonDeclares the 0.9 contract.
tests/​configs/​isolation_session_concurrent_A.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_timeout.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_pandas.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_networking.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_networking_blocked.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_hello.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_fs.jsonDeclares the 0.9 contract.
tests/​configs/​hyperlight_exit_code.jsonDeclares the 0.9 contract.
tests/​configs/​experimental_hello_processcontainer.jsonDeclares the 0.9 contract.
tests/​configs/​experimental_hello_lxc.jsonDeclares the 0.9 contract.
tests/​configs/​basic_windows_sandbox.jsonDeclares the 0.9 contract.
src/​testing/​wxc_e2e_tests/​tests/​e2e_state_aware.rsMigrates state-aware E2E inputs.
src/​testing/​wxc_e2e_tests/​tests/​e2e_isolation_session_policy.rsMigrates policy E2E inputs.
src/​ffi/​mxc_ffi/​src/​state_aware.rsMigrates FFI lifecycle tests.
src/​ffi/​mxc_ffi/​examples/​attached_console_ffi.rsVersions FFI example requests.
src/​core/​wxc_common/​src/​config_parser.rsClassifies residual divergences, but duplicate fixture-path detection must be retained (moderate, 1 vote).
src/​core/​mxc-sdk/​tests/​state_aware.rsMigrates lifecycle tests; seven direct request literals elsewhere still require versions (moderate, 1 vote).
src/​core/​mxc-sdk/​tests/​isolation_session.rsMigrates IsolationSession SDK tests.
src/​core/​mxc-sdk/​README.mdUpdates Rust lifecycle examples.
src/​core/​mxc-sdk/​examples/​sta_probe.rsVersions lifecycle requests.
src/​core/​mxc-sdk/​examples/​isolation_session_console.rsVersions lifecycle requests.
sdk/​node/​tests/​unit/​state-aware.test.tsUpdates lifecycle envelope expectations.
sdk/​node/​tests/​unit/​state-aware-types.test.tsUpdates lifecycle type tests.
sdk/​node/​tests/​unit/​sandbox.test.tsUpdates development policy tests.
sdk/​node/​tests/​integration/​wslc-e2e.test.tsMigrates WSLC integration requests.
sdk/​node/​tests/​integration/​microvm-filesystem.test.tsMigrates MicroVM integration requests.
sdk/​node/​src/​state-aware-helper.tsChanges lifecycle defaults; related public JSDoc still documents 0.8 (nit, 2 votes).
sdk/​node/​README.mdUpdates schema guidance, but remaining 0.8/development guidance conflicts with the new boundary (nit, 1 vote).
sdk/​dotnet/​README.mdDocuments 0.9 development defaults.
sdk/​dotnet/​Microsoft.Mxc.Sdk/​SchemaVersions.csSets managed state-aware constants to 0.9.
sdk/​dotnet/​Microsoft.Mxc.Sdk.Tests/​MxcSandboxTests.csUpdates the WSLC serialization golden.
sdk/​dotnet/​Microsoft.Mxc.Sdk.Tests/​MxcLifecycleTests.csUpdates lifecycle default assertions.
schemas/​schema-version.jsonSets state-aware defaults to 0.9.
docs/​wsl/​wsl-container-getting-started.mdUpdates a WSLC example, but two older incompatible examples remain (nit, 1 vote).
docs/​windows-sandbox/​windows-sandbox.mdUpdates Windows Sandbox examples.
docs/​version-specific-parser-migration-inventory.mdRecords migrated documents and residual divergences.
docs/​state-aware-lifecycle/​mxc-state-aware-sandbox-api.mdUpdates lifecycle examples, but contradictory 0.6–0.8 version rules remain (nit, 1 vote).
docs/​state-aware-lifecycle/​mxc-state-aware-sandbox-api-overview.mdUpdates lifecycle examples, but the graduation section retains an invalid 0.6 boundary (nit, 1 vote).
docs/​schema.mdDocuments the exact schema, but currently overstates runtime version enforcement (nit, 1 vote).
docs/​isolation-session/​oneshot.mdUpdates IsolationSession examples to 0.9.
Suppressed comments (5)

docs/schema.md:379

  • This states a runtime requirement that is not enforced yet. load_mxc_request_with_options still calls only the rolling parser (config_parser.rs:342-357), and docs/versioning.md:98-105 explicitly says the exact contract is future authority. Please distinguish “SDK producers/the exact contract target 0.9” from runtime acceptance so users are not told that older state-aware markers are currently rejected.
State-aware envelopes currently require the exact `0.9.0-alpha` development
contract. The published `0.6.0-alpha`, `0.7.0-alpha`, and `0.8.0-alpha`
contracts contain only one-shot request roots. The state-aware field shape is
documented by the exact development schema:

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api-overview.md:307

  • This example now uses the exact 0.9 contract, but the overview’s “Graduation and scope” section still says the state-aware API shipped stable from 0.6. That contradicts the new boundary documented in docs/schema.md: published 0.6–0.8 contracts contain only one-shot roots. Update the overview so readers are not told that an invalid older-version state-aware envelope is supported.
 "version": "0.9.0-alpha",

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • Updating this example to 0.9 leaves contradictory version rules elsewhere in this same API specification: §6.1 says callers can target any version in the supported range, while §13 says the state-aware surface is stable from 0.6 and still shows 0.6/0.7 state-aware envelopes. The exact contracts for 0.6–0.8 are one-shot only, so these sections need to state that state-aware requests currently require exactly 0.9.0-alpha.
 "version": "0.9.0-alpha",

docs/wsl/wsl-container-getting-started.md:335

  • This file still contains two earlier WSLC SDK examples that declare 0.6.0-alpha and 0.7.0-alpha (docs/wsl/wsl-container-getting-started.md:149,187). Since published 0.6–0.8 exact contracts do not include the WSLC containment, those examples remain incompatible with the exact parser even though the later JSON example was migrated. Update all WSLC request examples in this guide to 0.9.0-alpha.
 "version": "0.9.0-alpha",

sdk/node/README.md:63

  • The guidance immediately below this updated exact-schema link still says to use 0.8 for all new code and that experimental/state-aware shapes live in 0.9.0-dev regardless of declared version. That conflicts with this PR’s exact 0.9 contract boundary and with docs/schema.md, which says published 0.6–0.8 roots are one-shot only. Distinguish stable one-shot usage from development/state-aware usage and describe the rolling parser only as the temporary runtime authority.
| `0.9.0-alpha` | Dev (experimental backends, the `experimental.*` block, state-aware sandbox lifecycle) | [`schemas/dev/mxc-config.schema.0.9.0-alpha.json`](https://github.com/microsoft/mxc/blob/main/schemas/dev/mxc-config.schema.0.9.0-alpha.json) |

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment threadsrc/core/mxc-sdk/tests/state_aware.rs
Comment threadsrc/core/wxc_common/src/config_parser.rs Outdated
Comment threadsdk/node/src/state-aware-helper.ts

CopilotAI 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.

Copilot review overview

🟡 Changes recommended

A state-aware test producer still omits the required version, and two documentation examples remain inconsistent.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 1 High severity · 2 Medium severity · 1 Low severity

New issues introduced by this change (1)
SeverityFinding
High severitysrc/​core/​mxc-sdk/​tests/​isolation_session.rs — The migration in this file is incomplete: exec_capture_stdout at lines 264–270 still builds a…
Pre-existing issues (3)
SeverityFinding
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment
Medium severitysrc/​core/​mxc-sdk/​tests/​state_aware.rs — The migration misses direct state-aware request literals in `src/core/mxc_engine/src/state_aware.rs:… View comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View comment
Suppressed comments (2)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • Section 13.2 later in this document still presents state-aware IsolationSession envelopes with versions 0.6.0-alpha and 0.7.0-alpha (lines 1995 and 2011). That contradicts the new exact boundary—published 0.6–0.8 contracts are one-shot only—and gives readers examples that exact dispatch rejects. Recast the pre-graduation example as 0.9 development and use a clearly hypothetical later version for the graduated shape.
 "version": "0.9.0-alpha",

docs/wsl/wsl-container-getting-started.md:335

  • The TypeScript example earlier in this document (line 149) still passes 0.6.0-alpha while selecting the development-only wslc containment. That request is invalid under the exact contracts because published 0.6 has no WSLC containment, so this leaves one of the getting-started producers on rolling-only behavior. Update that example to 0.9.0-alpha too.
 "version": "0.9.0-alpha",

Comment threadsrc/core/mxc-sdk/tests/isolation_session.rs
CopilotAI review requested due to automatic review settings September 4, 2026 19:01
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 2afb453 to 158f787CompareSeptember 4, 2026 19:01

CopilotAI 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.

Copilot review overview

🔵 Needs a closer look

The broad contract migration and unresolved versioning documentation inconsistencies warrant final human review.

Review tier: Balanced
Findings: 1 Medium severity · 1 Low severity

Pre-existing issues (2)
SeverityFinding
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View comment
Issues resolved since last review (2)
SeverityFinding
High severitysrc/​core/​mxc-sdk/​tests/​isolation_session.rs — The migration in this file is incomplete: exec_capture_stdout at lines 264–270 still builds a… View resolved comment
Medium severitysrc/​core/​mxc-sdk/​tests/​state_aware.rs — The migration misses direct state-aware request literals in `src/core/mxc_engine/src/state_aware.rs:… View resolved comment
Suppressed comments (3)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • The migration is incomplete later in this document: the graduation scenario at lines 1989–2005 still presents state-aware IsolationSession envelopes as versions 0.6.0-alpha and 0.7.0-alpha, although this document now states those published contracts are one-shot-only. The current experimental shape should use 0.9.0-alpha, and the hypothetical graduated shape should use a future version after 0.9.
 "version": "0.9.0-alpha",

docs/wsl/wsl-container-getting-started.md:335

  • This guide still has a TypeScript WSLC example at line 149 using 0.6.0-alpha. Since WSLC is a development-only containment and this PR is migrating its request producers to the exact 0.9 contract, that example continues to generate a request which only works through rolling-parser compatibility. Please migrate that example to 0.9.0-alpha as well.
 "version": "0.9.0-alpha",

sdk/node/README.md:63

  • The updated 0.9 row conflicts with the note below it, which still says these development-only surfaces live in 0.9.0-dev and that the parser accepts them regardless of the declared schema. This PR is moving producers to the exact 0.9.0-alpha contract specifically because published versions do not contain those roots; please update the note so users are not told that an older declaration is interchangeable.
| `0.9.0-alpha` | Dev (experimental backends, the `experimental.*` block, state-aware sandbox lifecycle) | [`schemas/dev/mxc-config.schema.0.9.0-alpha.json`](https://github.com/microsoft/mxc/blob/main/schemas/dev/mxc-config.schema.0.9.0-alpha.json) |

CopilotAI review requested due to automatic review settings September 4, 2026 19:36
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 158f787 to 6c3619eCompareSeptember 4, 2026 19:36

CopilotAI 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.

Copilot review overview

🔵 Needs a closer look

A test helper still relies on omitted-version fallback, preventing complete exact-parser migration.

Review tier: Balanced
Findings: 1 Medium severity · 1 Low severity

Pre-existing issues (2)
SeverityFinding
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View comment
Suppressed comments (2)

sdk/node/README.md:63

  • This updated schema row now points consumers to the exact 0.9.0-alpha contract, but the guidance immediately below still says all new code should use 0.8.0-alpha and that these features live in 0.9.0-dev. That leaves SDK users with contradictory version instructions; distinguish stable-only code from development features and name the exact contract consistently.
| `0.9.0-alpha` | Dev (experimental backends, the `experimental.*` block, state-aware sandbox lifecycle) | [`schemas/dev/mxc-config.schema.0.9.0-alpha.json`](https://github.com/microsoft/mxc/blob/main/schemas/dev/mxc-config.schema.0.9.0-alpha.json) |

src/core/mxc-sdk/tests/isolation_session.rs:229

  • The migration is still incomplete in this test module: exec_capture_stdout below builds its exec envelope without a version, so every test using that helper still depends on the rolling parser’s omitted-version fallback and will fail version probing when exact dispatch becomes authoritative. Add "version": "0.9.0-alpha" to that helper’s json! object as well.
 let provision = r#"{"version":"0.9.0-alpha","phase":"provision","containment":"isolation_session",

CopilotAI review requested due to automatic review settings September 4, 2026 20:05
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 6c3619e to a008322CompareSeptember 4, 2026 20:05

CopilotAI 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.

Copilot review overview

🔵 Needs a closer look

The broad parser and SDK migration has mixed readiness assessments and an unresolved documentation nit.

Review tier: Balanced
Findings: 1 Medium severity · 1 Low severity

Pre-existing issues (2)
SeverityFinding
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View comment
Suppressed comments (1)

docs/schema.md:383

  • This says state-aware envelopes currently require 0.9, but production still calls the rolling parser (config_parser.rs:352,457-485), and docs/versioning.md:95-105 explicitly says exact dispatch is not authoritative yet. Older state-aware declarations are therefore still accepted at runtime during this transition. Please distinguish the exact contract/authoring target from current production enforcement.
State-aware envelopes currently require the exact `0.9.0-alpha` development
contract. The published `0.6.0-alpha`, `0.7.0-alpha`, and `0.8.0-alpha`
contracts contain only one-shot request roots. The state-aware field shape is
documented by the exact development schema:

CopilotAI review requested due to automatic review settings September 4, 2026 21:00
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from a008322 to 4b7b384CompareSeptember 4, 2026 21:00

CopilotAI 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.

Copilot review overview

🟡 Changes recommended

Moderate issues remain in Node error typing, version-drift protection, and exact-version coverage for lifecycle exec tests.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 3 Medium severity · 2 Low severity

New issues introduced by this change (3)
SeverityFinding
Medium severitysdk/​node/​src/​state-aware-helper.ts — This new rejection escapes as a plain Error, but the public lifecycle contract documents all…
Medium severitysdk/​node/​src/​state-aware-types.ts — This public literal duplicates STATE_AWARE_VERSION, but the schema-version drift gate only checks…
Low severitysdk/​node/​README.md — The compatibility note immediately below still says state-aware lifecycle requests live in…
Pre-existing issues (2)
SeverityFinding
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View comment
Suppressed comments (2)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • The examples now require 0.9.0-alpha, but this document still states at lines 436–440 that each config accepts version?: string, defaults to SUPPORTED_VERSION, and permits any range-validated override. The SDK now exposes a literal StateAwareSchemaVersion and rejects every other value, so the normative API description needs to be updated along with these examples.
 "version": "0.9.0-alpha",

src/core/mxc-sdk/tests/isolation_session.rs:254

  • provision_and_start now emits the exact 0.9 contract, but the shared exec_capture_stdout helper below still omits version. Every lifecycle test using that helper therefore falls back to the rolling parser and will fail version probing before exec once exact dispatch becomes authoritative. Stamp the helper's exec envelope too.

Comment threadsdk/node/src/state-aware-helper.ts Outdated
Comment threadsdk/node/src/state-aware-types.ts Outdated
Comment threadsdk/node/README.md
CopilotAI review requested due to automatic review settings September 4, 2026 23:55
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 4b7b384 to d1ac5acCompareSeptember 4, 2026 23:55

CopilotAI 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.

Copilot review overview

🔵 Needs a closer look

The Node SDK guidance still recommends a contract invalid for the documented experimental backends.

Review tier: Balanced
Findings: None

Issues resolved since last review (5)
SeverityFinding
Low severitysdk/​node/​README.md — The compatibility note immediately below still says state-aware lifecycle requests live in… View resolved comment
Medium severitysdk/​node/​src/​state-aware-types.ts — This public literal duplicates STATE_AWARE_VERSION, but the schema-version drift gate only checks… View resolved comment
Medium severitysdk/​node/​src/​state-aware-helper.ts — This new rejection escapes as a plain Error, but the public lifecycle contract documents all… View resolved comment
Low severitysdk/​node/​src/​state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View resolved comment
Medium severitysrc/​core/​wxc_common/​src/​config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View resolved comment
Suppressed comments (3)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • The worked graduation scenario later in this document still shows state-aware envelopes with 0.6.0-alpha (line 1989) and 0.7.0-alpha (line 2005), even though those published contracts are one-shot-only under the boundary documented by this change. Update that scenario to use the registered 0.9.0-alpha shape (and describe any future graduated version symbolically) so the document does not present impossible state-aware contracts.
 "version": "0.9.0-alpha",

docs/wsl/wsl-container-getting-started.md:335

  • The earlier runnable TypeScript and Rust WSLC examples in this same guide still declare 0.6.0-alpha (line 149) and 0.7.0-alpha (line 187). WSLC is absent from those exact published contracts, so those examples will fail once exact dispatch becomes authoritative. Update both development-backend examples to 0.9.0-alpha as well.
 "version": "0.9.0-alpha",

sdk/node/README.md:67

  • The unchanged guidance immediately below still says to pick 0.8.0-alpha for new code “on any supported platform,” but the newly documented experimental backends are not present in that exact contract and now require 0.9.0-alpha. Qualify that recommendation as applying only to stable/non-experimental backends so it does not direct WSLC, MicroVM, Windows Sandbox, Hyperlight, or IsolationSession users to an invalid contract.
| `0.9.0-alpha` | Dev (experimental backends, the `experimental.*` block, state-aware sandbox lifecycle) | [`schemas/dev/mxc-config.schema.0.9.0-alpha.json`](https://github.com/microsoft/mxc/blob/main/schemas/dev/mxc-config.schema.0.9.0-alpha.json) |
Pick `0.8.0-alpha` for new code on any supported platform.
> **Stable schemas document only the non-experimental surface.** Experimental backends (`windows_sandbox`, `wslc`, `microvm`, `hyperlight`, `isolation_session`), the `experimental.*` block, and state-aware lifecycle are defined by the registered exact `0.9.0-alpha` development contract. State-aware SDK calls stamp and require that exact version. During Phase 8, production executor requests still run through the rolling `wxc_common::wire` parser, so some rolling-parser compatibility behavior remains until exact dispatch becomes authoritative; `--experimental` is still required to activate experimental backends.

CopilotAI review requested due to automatic review settings September 5, 2026 05:02
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from d1ac5ac to 8c19352CompareSeptember 5, 2026 05:02

CopilotAI 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.

Copilot review overview

🟡 Changes recommended

A critical versionless-request issue must be fixed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 1 High severity

New issues introduced by this change (1)
SeverityFinding
High severitysrc/​core/​mxc_engine/​src/​state_aware.rs — This module still builds versionless state-aware requests at lines 961, 972, and 1001. The latter…
Suppressed comments (1)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • The same document's §13.2 worked scenario still shows state-aware provision requests using 0.6.0-alpha (line 1989) and 0.7.0-alpha (line 2005). That now contradicts this 0.9-only boundary and presents shapes that no registered state-aware contract accepts. Update the current experimental example to 0.9 and make the post-graduation version explicitly hypothetical.
 "version": "0.9.0-alpha",

Comment threadsrc/core/mxc_engine/src/state_aware.rs
CopilotAI review requested due to automatic review settings September 5, 2026 05:46
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from 8c19352 to afffb58CompareSeptember 5, 2026 05:46

CopilotAI 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.

Copilot review overview

🟡 Changes recommended

The WSLC streaming helper still emits unversioned requests, leaving a moderate exact-dispatch compatibility issue.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review tier: Balanced
Findings: 1 Medium severity

New issues introduced by this change (1)
SeverityFinding
Medium severitytests/​scripts/​run_wslc_state_aware_tests.ps1 — The parallel Invoke-StateAwareStreaming helper still serializes its supported -Request input…
Issues resolved since last review (1)
SeverityFinding
High severitysrc/​core/​mxc_engine/​src/​state_aware.rs — This module still builds versionless state-aware requests at lines 961, 972, and 1001. The latter… View resolved comment
Suppressed comments (2)

docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md:853

  • The examples now use 0.9, but this same API document still specifies version?: string and says arbitrary versions are range-validated against MIN_VERSION/SUPPORTED_VERSION (lines 254–440 and again in the wire/type sections). That contradicts the newly shipped StateAwareSchemaVersion = '0.9.0-alpha' API and runtime rejection of every other value; update those contract sections so consumers are not told that version negotiation remains supported.
 "version": "0.9.0-alpha",

docs/wsl/wsl-container-getting-started.md:335

  • This guide still has two WSLC producers above that declare 0.6.0-alpha (TypeScript, line 149) and 0.7.0-alpha (Rust, line 187). Those published exact contracts do not include the development-only wslc containment, so update both examples to 0.9.0-alpha as well; otherwise the guide continues teaching rolling-only request shapes.
 "version": "0.9.0-alpha",

Comment threadtests/scripts/run_wslc_state_aware_tests.ps1
CopilotAI review requested due to automatic review settings September 5, 2026 19:39
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from afffb58 to c2d2d20CompareSeptember 5, 2026 19:39

CopilotAI 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.

Copilot review overview

🔵 Needs a closer look

The broad contract migration needs human review, and an exec helper still omits the required version.

Review tier: Balanced
Findings: None

Issues resolved since last review (1)
SeverityFinding
Medium severitytests/​scripts/​run_wslc_state_aware_tests.ps1 — The parallel Invoke-StateAwareStreaming helper still serializes its supported -Request input… View resolved comment
Suppressed comments (1)

src/core/mxc-sdk/tests/isolation_session.rs:254

  • This lifecycle migration still calls exec_capture_stdout, whose request immediately below omits version. The current rolling parser accepts that legacy omission, but the exact contract requires a registered declaration, so this test will fail at parsing when exact dispatch becomes authoritative instead of exercising exec. Add the development version to the shared helper as well.

Gudgeand others added 3 commits September 5, 2026 14:34
This PR migrates development requests, producers, and the configuration corpus to registered version-specific contracts.
Details
* Move experimental and state-aware requests to the 0.9 development contract while retaining published-version compatibility coverage.
* Update SDK producers, examples, documentation, schema references, and the migration inventory.
* Preserve the seven classified contract tightenings and duplicate-path detection in the differential corpus harness.
* Add missing versions to state-aware Rust test requests and correct the documented WSLC default.
* Scrub non-corpus workflows, scripts, E2E requests, and playground producers so every complete development request emits 0.9.0-alpha.
Tests
* `cargo fmt --all -- --check`
* `cargo check --workspace --all-targets`
* `cargo clippy --workspace --all-targets -- -D warnings`
* `cargo test --workspace`
* `npm run build` and `npm test`
* `dotnet test --solution Microsoft.Mxc.Sdk.slnx`
* Schema, configuration, versioning, and code-generation checks
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0f04437d-4a05-487a-b402-4ed4c774e8e0
This PR fixes the remaining engine test producers and lifecycle examples before authoritative exact dispatch.
Details
* Give the three remaining engine lifecycle test requests an exact development version.
* Use the current state-aware version in the graduation example and mark its future contract explicitly hypothetical.
Tests
* cargo fmt --all -- --check
* cargo check -p wxc_common -p mxc_engine --all-targets
* cargo clippy -p wxc_common -p mxc_engine --all-targets -- -D warnings
* cargo test -p wxc_common -p mxc_engine --lib passed, including state-aware error classification and provider cleanup.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0f04437d-4a05-487a-b402-4ed4c774e8e0
This PR fixes remaining state-aware request defaults and version guidance while preserving precise migration diagnostic expectations.
Details
* Pin the exact paths for the seven classified development-contract tightenings, including structural network enum diagnostics.
* Default versionless inline streaming requests to 0.9.0-alpha on a clone, preserving explicit versions and caller input.
* Align state-aware SDK/wire version documentation and WSLC examples with the existing exact development contract.
Tests
* cargo fmt --all -- --check; cargo check -p wxc_common -p mxc_engine --all-targets; cargo clippy -p wxc_common -p mxc_engine --all-targets -- -D warnings.
* cargo test -p wxc_common -p mxc_engine --lib, including corpus divergence expectations.
* Manual PowerShell AST-based execution of both helpers' JSON-selection blocks: 16 checks passed for missing/explicit versions, caller immutability, fixture substitution, and ConfigFile precedence. The streaming missing-version check failed before the fix.
* Live WSLC E2E was not run; the changed request-construction path was exercised without launching a backend.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 0f04437d-4a05-487a-b402-4ed4c774e8e0
@MGudgin
Gudge (MGudgin)force-pushed the user/gudge/version_specific_config_parsers_phase8 branch from c2d2d20 to 92581c4CompareSeptember 5, 2026 21:36
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@MGudgin