Skip to content

Phase 3b: raise the schema floor to 0.6.0-alpha, retire 0.4.0/0.5.0#581

Open
MGudgin wants to merge 1 commit into
user/gudge/versioning_phase3a_decouple_backendfrom
user/gudge/versioning_phase3b_schema_floor
Open

Phase 3b: raise the schema floor to 0.6.0-alpha, retire 0.4.0/0.5.0#581
MGudgin wants to merge 1 commit into
user/gudge/versioning_phase3a_decouple_backendfrom
user/gudge/versioning_phase3b_schema_floor

Conversation

@MGudgin

@MGudgin MGudgin commented Jun 26, 2026

Copy link
Copy Markdown
Member

Stacked PR. Base is user/gudge/versioning_phase3a_decouple_backend (Phase 3a), not main. Review/merge the stack in order (2.5 -> 3a -> 3b); this branch will be retargeted to main as its base lands.

Summary

Phase 3b of the versioning remediation. It raises the config schema floor from 0.4.0-alpha to 0.6.0-alpha: the Rust parser and the SDK now reject configs declaring 0.4.0-alpha or 0.5.0-alpha as "older than supported" (the deferred Phase 1 p1b back-dating gate), and accept 0.6.0-alpha through the dev ceiling 0.8.0-alpha. This is safe because Phase 3a decoupled Windows backend selection from the schema version, so no runtime behavior depends on the 0.4-vs-0.5 boundary anymore.

The released 0.4.0-alpha / 0.5.0-alpha stable schema files are kept as immutable historical artifacts (the repo convention never edits released stable schemas, and external configs may still reference them via $schema for editor validation); the parser simply stops accepting those versions.

Details

  • Canonical source schemas/schema-version.json: min 0.4.0-alpha -> 0.6.0-alpha.
  • Rust config_parser.rs: SUPPORTED_VERSION ">=0.4, <=0.8" -> ">=0.6, <=0.8", and the second hardcoded older-vs-newer floor classifier ">=0.4" -> ">=0.6". Converted the 0.4/0.5 acceptance tests into rejection tests (asserting older than supported); bumped incidental version literals.
  • SDK sandbox.ts: MIN_VERSION -> 0.6.0-alpha. Flipped the unit-test bound case to assert 0.5.0-alpha is rejected; bumped incidental literals; bumped the integration-test version matrix (test-helpers.ts) and the hardcoded versions in the seatbelt/microvm/wslc integration tests.
  • Corpus: migrated 80 configs in tests/configs + tests/examples from 0.4.0-alpha/0.5.0-alpha -> 0.6.0-alpha; renamed hello_world_v050.json -> hello_world_v060.json (containerId + message updated).
  • Manual smoke scripts (T3-Workloads, WinProcessContainer-Tests, run_isolation_session_resize_smoke) bumped to 0.6.0-alpha.
  • Docs: sdk/README.md compatibility table (0.4/0.5 marked retired below the floor) + examples + troubleshooting; docs/schema.md version-range table; docs/versioning.md, docs/playground-limitations.md, .github/copilot-instructions.md, assorted example snippets; check-schema-versions.js stale comment.

Deferred (follow-up, not in this PR)

  • tests/playground still encodes the obsolete version-as-AppContainer/BaseContainer switch (default 0.5.0-dev). It needs a UI rework rather than a string bump and is not CI-gated; tracked as a follow-up.

Tests

  • check-schema-versions.js, check-schema-codegen.js, check-sdk-types-codegen.js, validate-configs.js (169/169) all green.
  • cargo test -p wxc_common (357 pass; 0.4/0.5 now rejected, 0.6+ accepted); cargo clippy --workspace --all-targets -- -D warnings; cargo fmt --all -- --check.
  • cd sdk && npm run build + test:unit (181 pass); integration tests type-check.
Microsoft Reviewers: Open in CodeFlow

This PR raises the config schema floor from 0.4.0-alpha to 0.6.0-alpha. The Rust
parser and the SDK now reject configs declaring 0.4.0-alpha or 0.5.0-alpha as
"older than supported" (the deferred Phase 1 p1b back-dating gate), and accept
0.6.0-alpha through the dev ceiling 0.8.0-alpha. This is safe because Phase 3a
decoupled Windows backend selection from the schema version, so no runtime
behavior depends on the 0.4-vs-0.5 boundary anymore. The released
0.4.0-alpha/0.5.0-alpha stable schema files are kept as immutable historical
artifacts; the parser simply stops accepting those versions.

Details:
- Canonical source schemas/schema-version.json: min 0.4.0-alpha -> 0.6.0-alpha.
- Rust config_parser.rs: SUPPORTED_VERSION ">=0.4, <=0.8" -> ">=0.6, <=0.8", and
  the second hardcoded older-vs-newer floor classifier ">=0.4" -> ">=0.6".
  Converted the 0.4/0.5 acceptance tests into rejection tests and added
  "older than supported" assertions; bumped incidental version literals.
- SDK sandbox.ts: MIN_VERSION -> 0.6.0-alpha. Flipped the unit-test bound case to
  assert 0.5.0-alpha is rejected; bumped incidental literals; bumped the
  integration-test version matrix (test-helpers.ts) and the hardcoded versions in
  the seatbelt/microvm/wslc integration tests.
- Corpus: migrated 80 configs in tests/configs + tests/examples from
  0.4.0-alpha/0.5.0-alpha -> 0.6.0-alpha; renamed hello_world_v050.json ->
  hello_world_v060.json (containerId + message updated).
- Manual smoke scripts (T3-Workloads, WinProcessContainer-Tests,
  run_isolation_session_resize_smoke) bumped to 0.6.0-alpha.
- Docs: sdk/README.md compatibility table (0.4/0.5 marked retired below the
  floor) + examples + troubleshooting; docs/schema.md version-range table;
  docs/versioning.md, docs/playground-limitations.md, copilot-instructions.md,
  and assorted example snippets; check-schema-versions.js stale comment.

Deferred (recorded on the session backlog, not done here):
- The tests/playground version model still encodes the obsolete
  version-as-AppContainer/BaseContainer switch (default 0.5.0-dev). It needs a UI
  rework rather than a string bump and is not CI-gated; tracked separately.

Tests:
- check-schema-versions.js, check-schema-codegen.js, check-sdk-types-codegen.js,
  validate-configs.js (169/169) all green.
- cargo test -p wxc_common (357 pass; 0.4/0.5 now rejected, 0.6+ accepted);
  cargo clippy --workspace --all-targets -- -D warnings; cargo fmt --all -- --check.
- cd sdk && npm run build + test:unit (181 pass); integration tests type-check.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Generated-with: claude-opus-4.8
@MGudgin MGudgin requested a review from a team as a code owner June 26, 2026 20:12
Sign up for free to 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.

1 participant