Uh oh!
There was an error while loading. Please reload this page.
Migrate development requests to version-specific parsers - #1099
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
55b07a4 to
0953b3fCompare0953b3f to
a1a929eCompareThere was a problem hiding this comment.
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
New issues introduced by this change (3)
| Severity | Finding |
|---|---|
src/core/mxc-sdk/tests/state_aware.rs — The migration misses direct state-aware request literals in `src/core/mxc_engine/src/state_aware.rs:… | |
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… | |
sdk/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.
| File | Description |
|---|---|
tests/policy/state-aware-wslc-provision.json | Updates the policy fixture to 0.9. |
tests/policy/state-aware-wslc-exec.json | Updates the policy fixture to 0.9. |
tests/policy/request-wslc.json | Updates the nested policy version. |
tests/examples/wslc_hello_world.json | Updates the example to 0.9. |
tests/examples/28_telemetry_enabled.json | Targets the exact 0.9 schema. |
tests/examples/10_windows_sandbox_network_isolated.json | Updates the example to 0.9. |
tests/examples/09_windows_sandbox_hello_world.json | Updates the example to 0.9. |
tests/configs/wslc_timeout.json | Migrates the fixture to 0.9. |
tests/configs/wslc_tar_import_rootfs.json | Migrates the fixture to 0.9. |
tests/configs/wslc_tar_import_docker_save.json | Migrates the fixture to 0.9. |
tests/configs/wslc_stderr.json | Migrates the fixture to 0.9. |
tests/configs/wslc_state_aware_stop.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_start.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_provision.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_provision_with_filesystem.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_provision_rejected_proxy.json | Migrates the rejection fixture. |
tests/configs/wslc_state_aware_provision_rejected_hosts.json | Migrates the rejection fixture. |
tests/configs/wslc_state_aware_provision_rejected_denied.json | Migrates the rejection fixture. |
tests/configs/wslc_state_aware_provision_bridged.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_write_marker.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_rejected_filesystem.json | Migrates a classified divergence fixture. |
tests/configs/wslc_state_aware_exec_read_marker.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_proxy.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_exit_7.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_exit_1.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_exit_0.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_env.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_drip.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_exec_basic.json | Migrates the lifecycle fixture. |
tests/configs/wslc_state_aware_deprovision.json | Migrates the lifecycle fixture. |
tests/configs/wslc_readonly_mount.json | Migrates the fixture to 0.9. |
tests/configs/wslc_python_stdlib.json | Migrates the fixture to 0.9. |
tests/configs/wslc_python_hello.json | Migrates the fixture to 0.9. |
tests/configs/wslc_port_mapping_tcp.json | Migrates the fixture to 0.9. |
tests/configs/wslc_port_mapping_multiple.json | Migrates the fixture to 0.9. |
tests/configs/wslc_network_proxy.json | Migrates the fixture to 0.9. |
tests/configs/wslc_network_isolated.json | Migrates the fixture to 0.9. |
tests/configs/wslc_most_specific_denied_parent.json | Migrates the fixture to 0.9. |
tests/configs/wslc_large_output.json | Migrates the fixture to 0.9. |
tests/configs/wslc_filesystem.json | Migrates the fixture to 0.9. |
tests/configs/wslc_filesystem_object.json | Migrates the fixture to 0.9. |
tests/configs/wslc_exit_code.json | Migrates the fixture to 0.9. |
tests/configs/wslc_env_vars.json | Migrates the fixture to 0.9. |
tests/configs/wslc_destroy_on_exit_true.json | Migrates the fixture to 0.9. |
tests/configs/wslc_destroy_on_exit_false.json | Migrates the fixture to 0.9. |
tests/configs/wslc_denied_masking.json | Migrates the fixture to 0.9. |
tests/configs/wslc_denied_dotdot_alias.json | Migrates the fixture to 0.9. |
tests/configs/wslc_custom_registry.json | Migrates the fixture to 0.9. |
tests/configs/wslc_custom_registry_quay.json | Migrates the fixture to 0.9. |
tests/configs/wslc_custom_registry_ghcr.json | Migrates the fixture to 0.9. |
tests/configs/windows_sandbox_timeout.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_stderr.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_powershell.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_powershell_env.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_exit_code.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_echo.json | Declares the 0.9 contract. |
tests/configs/windows_sandbox_custom_timeout.json | Declares the 0.9 contract. |
tests/configs/microvm_timeout.json | Declares the 0.9 contract. |
tests/configs/microvm_timeout_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_stdlib.json | Declares the 0.9 contract. |
tests/configs/microvm_stdlib_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_network.json | Declares the 0.9 contract. |
tests/configs/microvm_network_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_multiline.json | Declares the 0.9 contract. |
tests/configs/microvm_multiline_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_large_output.json | Declares the 0.9 contract. |
tests/configs/microvm_large_output_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_hello.json | Declares the 0.9 contract. |
tests/configs/microvm_hello_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_exit_code.json | Declares the 0.9 contract. |
tests/configs/microvm_exit_code_linux.json | Declares the 0.9 contract. |
tests/configs/microvm_error.json | Declares the 0.9 contract. |
tests/configs/microvm_error_linux.json | Declares the 0.9 contract. |
tests/configs/isolation_session_timeout.json | Declares the 0.9 contract. |
tests/configs/isolation_session_streaming_smoke.json | Declares the 0.9 contract. |
tests/configs/isolation_session_stdout_stderr_interleaved.json | Declares the 0.9 contract. |
tests/configs/isolation_session_stderr.json | Declares the 0.9 contract. |
tests/configs/isolation_session_state_aware_stop.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_start.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_provision.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_provision_with_filesystem.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_state_aware_provision_rejected_ui.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_state_aware_provision_rejected_network.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_state_aware_provision_rejected_denied.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_state_aware_provision_appid.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_provision_appid_too_long.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_provision_appid_empty.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_provision_appid_control.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_write_marker.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_setx_modified.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_setx_initial.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_read_persist.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_read_marker.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_exit_2.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_exit_1.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_exit_0.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_env_modified.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_env_initial.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_env_absent.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_cwd.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_exec_basic.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_state_aware_deprovision.json | Adds the lifecycle contract version. |
tests/configs/isolation_session_powershell_interactive.json | Declares the 0.9 contract. |
tests/configs/isolation_session_one_shot_ui_rejected.json | Declares the 0.9 contract. |
tests/configs/isolation_session_one_shot_stray_config_ignored.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_one_shot_network_rejected.json | Declares the 0.9 contract. |
tests/configs/isolation_session_one_shot_network_rejected_no_local.json | Declares the 0.9 contract. |
tests/configs/isolation_session_one_shot_network_rejected_hosts.json | Declares the 0.9 contract. |
tests/configs/isolation_session_one_shot_lifecycle_rejected.json | Declares the 0.9 contract. |
tests/configs/isolation_session_hello.json | Declares the 0.9 contract. |
tests/configs/isolation_session_exit42.json | Declares the 0.9 contract. |
tests/configs/isolation_session_configid_ignored.json | Migrates a classified divergence fixture. |
tests/configs/isolation_session_concurrent_D.json | Declares the 0.9 contract. |
tests/configs/isolation_session_concurrent_C.json | Declares the 0.9 contract. |
tests/configs/isolation_session_concurrent_B.json | Declares the 0.9 contract. |
tests/configs/isolation_session_concurrent_A.json | Declares the 0.9 contract. |
tests/configs/hyperlight_timeout.json | Declares the 0.9 contract. |
tests/configs/hyperlight_pandas.json | Declares the 0.9 contract. |
tests/configs/hyperlight_networking.json | Declares the 0.9 contract. |
tests/configs/hyperlight_networking_blocked.json | Declares the 0.9 contract. |
tests/configs/hyperlight_hello.json | Declares the 0.9 contract. |
tests/configs/hyperlight_fs.json | Declares the 0.9 contract. |
tests/configs/hyperlight_exit_code.json | Declares the 0.9 contract. |
tests/configs/experimental_hello_processcontainer.json | Declares the 0.9 contract. |
tests/configs/experimental_hello_lxc.json | Declares the 0.9 contract. |
tests/configs/basic_windows_sandbox.json | Declares the 0.9 contract. |
src/testing/wxc_e2e_tests/tests/e2e_state_aware.rs | Migrates state-aware E2E inputs. |
src/testing/wxc_e2e_tests/tests/e2e_isolation_session_policy.rs | Migrates policy E2E inputs. |
src/ffi/mxc_ffi/src/state_aware.rs | Migrates FFI lifecycle tests. |
src/ffi/mxc_ffi/examples/attached_console_ffi.rs | Versions FFI example requests. |
src/core/wxc_common/src/config_parser.rs | Classifies residual divergences, but duplicate fixture-path detection must be retained (moderate, 1 vote). |
src/core/mxc-sdk/tests/state_aware.rs | Migrates lifecycle tests; seven direct request literals elsewhere still require versions (moderate, 1 vote). |
src/core/mxc-sdk/tests/isolation_session.rs | Migrates IsolationSession SDK tests. |
src/core/mxc-sdk/README.md | Updates Rust lifecycle examples. |
src/core/mxc-sdk/examples/sta_probe.rs | Versions lifecycle requests. |
src/core/mxc-sdk/examples/isolation_session_console.rs | Versions lifecycle requests. |
sdk/node/tests/unit/state-aware.test.ts | Updates lifecycle envelope expectations. |
sdk/node/tests/unit/state-aware-types.test.ts | Updates lifecycle type tests. |
sdk/node/tests/unit/sandbox.test.ts | Updates development policy tests. |
sdk/node/tests/integration/wslc-e2e.test.ts | Migrates WSLC integration requests. |
sdk/node/tests/integration/microvm-filesystem.test.ts | Migrates MicroVM integration requests. |
sdk/node/src/state-aware-helper.ts | Changes lifecycle defaults; related public JSDoc still documents 0.8 (nit, 2 votes). |
sdk/node/README.md | Updates schema guidance, but remaining 0.8/development guidance conflicts with the new boundary (nit, 1 vote). |
sdk/dotnet/README.md | Documents 0.9 development defaults. |
sdk/dotnet/Microsoft.Mxc.Sdk/SchemaVersions.cs | Sets managed state-aware constants to 0.9. |
sdk/dotnet/Microsoft.Mxc.Sdk.Tests/MxcSandboxTests.cs | Updates the WSLC serialization golden. |
sdk/dotnet/Microsoft.Mxc.Sdk.Tests/MxcLifecycleTests.cs | Updates lifecycle default assertions. |
schemas/schema-version.json | Sets state-aware defaults to 0.9. |
docs/wsl/wsl-container-getting-started.md | Updates a WSLC example, but two older incompatible examples remain (nit, 1 vote). |
docs/windows-sandbox/windows-sandbox.md | Updates Windows Sandbox examples. |
docs/version-specific-parser-migration-inventory.md | Records migrated documents and residual divergences. |
docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md | Updates lifecycle examples, but contradictory 0.6–0.8 version rules remain (nit, 1 vote). |
docs/state-aware-lifecycle/mxc-state-aware-sandbox-api-overview.md | Updates lifecycle examples, but the graduation section retains an invalid 0.6 boundary (nit, 1 vote). |
docs/schema.md | Documents the exact schema, but currently overstates runtime version enforcement (nit, 1 vote). |
docs/isolation-session/oneshot.md | Updates 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_optionsstill calls only the rolling parser (config_parser.rs:342-357), anddocs/versioning.md:98-105explicitly 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-devregardless of declared version. That conflicts with this PR’s exact 0.9 contract boundary and withdocs/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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
a1a929e to
2afb453CompareThere was a problem hiding this comment.
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
New issues introduced by this change (1)
| Severity | Finding |
|---|---|
src/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)
| Severity | Finding |
|---|---|
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment | |
src/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 | |
sdk/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-alphaand0.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-alphawhile selecting the development-onlywslccontainment. 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 to0.9.0-alphatoo.
"version": "0.9.0-alpha",
Uh oh!
There was an error while loading. Please reload this page.
2afb453 to
158f787CompareThere was a problem hiding this comment.
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
Pre-existing issues (2)
| Severity | Finding |
|---|---|
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment | |
sdk/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)
| Severity | Finding |
|---|---|
src/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 | |
src/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-alphaand0.7.0-alpha, although this document now states those published contracts are one-shot-only. The current experimental shape should use0.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 to0.9.0-alphaas 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-devand that the parser accepts them regardless of the declared schema. This PR is moving producers to the exact0.9.0-alphacontract 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) |
158f787 to
6c3619eCompareThere was a problem hiding this comment.
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
Pre-existing issues (2)
| Severity | Finding |
|---|---|
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment | |
sdk/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-alphacontract, but the guidance immediately below still says all new code should use0.8.0-alphaand that these features live in0.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_stdoutbelow builds itsexecenvelope without aversion, 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’sjson!object as well.
let provision = r#"{"version":"0.9.0-alpha","phase":"provision","containment":"isolation_session",
6c3619e to
a008322CompareThere was a problem hiding this comment.
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
Pre-existing issues (2)
| Severity | Finding |
|---|---|
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment | |
sdk/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), anddocs/versioning.md:95-105explicitly 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:
a008322 to
4b7b384CompareThere was a problem hiding this comment.
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
New issues introduced by this change (3)
| Severity | Finding |
|---|---|
sdk/node/src/state-aware-helper.ts — This new rejection escapes as a plain Error, but the public lifecycle contract documents all… | |
sdk/node/src/state-aware-types.ts — This public literal duplicates STATE_AWARE_VERSION, but the schema-version drift gate only checks… | |
sdk/node/README.md — The compatibility note immediately below still says state-aware lifecycle requests live in… |
Pre-existing issues (2)
| Severity | Finding |
|---|---|
src/core/wxc_common/src/config_parser.rs — The direct collect() silently overwrites duplicate fixture paths, removing the uniqueness check… View comment | |
sdk/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 acceptsversion?: string, defaults toSUPPORTED_VERSION, and permits any range-validated override. The SDK now exposes a literalStateAwareSchemaVersionand 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_startnow emits the exact 0.9 contract, but the sharedexec_capture_stdouthelper below still omitsversion. 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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
4b7b384 to
d1ac5acCompareThere was a problem hiding this comment.
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)
| Severity | Finding |
|---|---|
sdk/node/README.md — The compatibility note immediately below still says state-aware lifecycle requests live in… View resolved comment | |
sdk/node/src/state-aware-types.ts — This public literal duplicates STATE_AWARE_VERSION, but the schema-version drift gate only checks… View resolved comment | |
sdk/node/src/state-aware-helper.ts — This new rejection escapes as a plain Error, but the public lifecycle contract documents all… View resolved comment | |
sdk/node/src/state-aware-helper.ts — Changing this public default leaves WslcProvisionConfig.version documented as filling in… View resolved comment | |
src/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) and0.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 registered0.9.0-alphashape (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) and0.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 to0.9.0-alphaas well.
"version": "0.9.0-alpha",
sdk/node/README.md:67
- The unchanged guidance immediately below still says to pick
0.8.0-alphafor new code “on any supported platform,” but the newly documented experimental backends are not present in that exact contract and now require0.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.
d1ac5ac to
8c19352CompareThere was a problem hiding this comment.
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
New issues introduced by this change (1)
| Severity | Finding |
|---|---|
src/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) and0.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",
Uh oh!
There was an error while loading. Please reload this page.
8c19352 to
afffb58CompareThere was a problem hiding this comment.
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
New issues introduced by this change (1)
| Severity | Finding |
|---|---|
tests/scripts/run_wslc_state_aware_tests.ps1 — The parallel Invoke-StateAwareStreaming helper still serializes its supported -Request input… |
Issues resolved since last review (1)
| Severity | Finding |
|---|---|
src/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?: stringand says arbitrary versions are range-validated againstMIN_VERSION/SUPPORTED_VERSION(lines 254–440 and again in the wire/type sections). That contradicts the newly shippedStateAwareSchemaVersion = '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) and0.7.0-alpha(Rust, line 187). Those published exact contracts do not include the development-onlywslccontainment, so update both examples to0.9.0-alphaas well; otherwise the guide continues teaching rolling-only request shapes.
"version": "0.9.0-alpha",
Uh oh!
There was an error while loading. Please reload this page.
afffb58 to
c2d2d20CompareThere was a problem hiding this comment.
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)
| Severity | Finding |
|---|---|
tests/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 omitsversion. 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.
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
c2d2d20 to
92581c4Compare


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
rolling-only compatibility behavior.
schema and documents the state-aware version boundary.
Tests
cargo fmt --all -- --checkcargo check --workspace --all-targetscargo clippy --workspace --all-targets -- -D warningscargo test --workspaceMicrosoft Reviewers: Open in CodeFlow