Repository navigation
Add W365 Agents Phase 1 development request contract - #1697
Merged
Branden Bonaby (bbonaby) merged 5 commits intoNov 10, 2026
Merged
Conversation
Add provision-only W365 settings, private adapters, contract fixtures, and generated schema and TypeScript artifacts. Keep the backend unavailable and published contracts unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The userType validation accepts "Local" and "Agentic" despite the agreed contract allowing only "HumanUser", requiring correction or an approved design change.
1 open issue
What changed in this PR
Adds the first Windows 365 for Agents contract slice to MXC’s 1.1.0-alpha development contract, preparing for the backend work tracked in #1615. Published contracts remain unchanged, and W365 execution remains unavailable.
Changes:
- Adds W365 provision request types, validation, parsing, and private adapters that preserve optional-field presence.
- Adds fixtures and parser/SDK checks for accepted inputs, rejected settings, and unavailable execution.
- Regenerates development schema and TypeScript definitions and documents the contract-only scope.
| File | Description |
|---|---|
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/w365_agents.rs |
Tests contract validation and unavailable execution. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/omitted.json |
Covers omitted settings. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/minimal.json |
Covers pool-only settings. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/local-user.json |
Covers the Local user type. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/empty-wrapper.json |
Covers an empty settings wrapper. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/complete.json |
Covers complete provision settings. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/valid/agentic-user.json |
Covers the Agentic user type. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/wrong-phase.json |
Rejects settings for another phase. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/unsupported-user-type.json |
Rejects unknown user types. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/unknown-setting.json |
Rejects unknown provision fields. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/null-settings.json |
Rejects null provision settings. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/missing-pool.json |
Rejects settings without a pool ID. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/local-policy.json |
Rejects local filesystem policy. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/invalid-guid.json |
Rejects malformed GUIDs. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/guid-trailing-newline.json |
Rejects GUIDs with trailing newlines. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/w365_agents_provision/invalid/array-wrapper.json |
Rejects array settings wrappers. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/stop/valid/w365-agents.json |
Covers stop requests with W365 IDs. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/stop/invalid/w365-settings.json |
Rejects W365 settings during stop. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/start/valid/w365-agents.json |
Covers start requests with W365 IDs. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/start/invalid/w365-settings.json |
Rejects W365 settings during start. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/start/invalid/w365-array-settings.json |
Rejects array-valued start settings. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/exec/valid/w365-agents.json |
Covers execution request fields with W365 IDs. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/exec/invalid/w365-settings.json |
Rejects W365 settings during execution. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/deprovision/valid/w365-agents.json |
Covers deprovision requests with W365 IDs. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures/deprovision/invalid/w365-settings.json |
Rejects W365 settings during deprovision. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha/fixtures.rs |
Registers W365 provision fixtures. |
src/mxc-sdk/tests/mxc_contract/v1_1_0_alpha.rs |
Includes the W365 test module. |
src/mxc-sdk/src/core/mxc_contract/registry.rs |
Registers the development W365 request root. |
src/mxc-sdk/src/core/mxc_contract/dev/state_aware/w365_agents.rs |
Defines W365 request types and GUID validation. |
src/mxc-sdk/src/core/mxc_contract/dev/state_aware/provision/mod.rs |
Adds the W365 provision variant. |
src/mxc-sdk/src/core/mxc_contract/dev/state_aware/provision/containment.rs |
Recognizes the W365 containment name. |
src/mxc-sdk/src/core/mxc_contract/dev/state_aware/mod.rs |
Exports W365 lifecycle contract types. |
src/mxc-sdk/src/core/mxc_contract/dev/schema.rs |
Adds W365 schema dispatch and checks. |
src/mxc-sdk/src/core/mxc_contract/dev/request.rs |
Routes development W365 provision parsing. |
src/mxc-sdk/src/core/mxc_contract/dev/primitives.rs |
Adds object-only optional deserialization. |
src/mxc-sdk/src/core/mxc_contract/dev/mod.rs |
Re-exports W365 development types. |
src/mxc-sdk/src/core/mxc_common/state_aware_input.rs |
Prevents contract-only inputs from becoming executable operations. |
src/mxc-sdk/src/core/mxc_common/sdk_input.rs |
Updates tests for fallible input extraction. |
src/mxc-sdk/src/core/mxc_common/config_parser.rs |
Parses W365 provision and propagates unavailable errors. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/v1_0/state_aware_tests/common.rs |
Updates the published-contract test helper. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/v0_9/state_aware_tests/common.rs |
Updates the legacy-contract test helper. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/dev/w365_agents.rs |
Adds private settings adaptation and presence tests. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/dev/state_aware.rs |
Adapts W365 provision requests into private inputs. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/dev/state_aware_tests/common.rs |
Updates the development-contract test helper. |
src/mxc-sdk/src/core/mxc_common/config_contract_adapters/dev/mod.rs |
Registers the private W365 adapter module. |
sdk/node/src/generated/v1_1_0_alpha/wire.ts |
Adds generated W365 TypeScript definitions. |
schemas/dev/mxc-config.schema.1.1.0-alpha.json |
Adds generated W365 schema definitions and routing. |
docs/development/build-and-test/schema-codegen.md |
Updates request-root counts and backend coverage. |
docs/containment-policy/dev/policy.md |
Documents W365 settings and unavailable runtime behavior. |
Review effort: Balanced
Clarify Local, HumanUser, and Agentic session identities in the design and development policy reference. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Restore shared lifecycle input and existing test helpers; refuse contract-only W365 provision at the adapter boundary. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Collaborator
|
tbyfield, you just have a merge conflict. Once that's fix I should be able to approve. |
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
Author
|
Branden Bonaby (@bbonaby) - I've resolved the merge conflict and build is clean (after a few attempts) |
Branden Bonaby (bbonaby)
approved these changes
Nov 10, 2026
Branden Bonaby (bbonaby)
deleted the
users/tbyfield/w365a-phase1-contracts
branch
November 10, 2026 17:20
6 of 11 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.

📖 Description
Introduces the Phase 1 Windows 365 for Agents request contract in development version
1.1.0-alpha.containment: "w365_agents"for provision, with optionalw365Agents.provisionsettings: requiredpoolIdwhen supplied, optionaluserType(Local,HumanUser, orAgentic), and optionaluserObjectId.This is a contract-only change. Provision returns
backend_unavailable; later phases use the existing request contracts and normal ID dispatch, withw365:IDs currently returningunsupported_containment. No backend execution, network calls, Cargo feature changes, or typed W365 SDK authoring APIs are introduced. Published contracts remain unchanged.Accepting the three user-type values does not implement session authentication or checkout; those behaviors remain backend work.
Checkout/release and readiness/execution remain separate Phase 2/3 changes. The per-phase endpoint/token settings described in the design are deferred to those phases for review alongside the corresponding runtime behavior; they are not part of this initial contract slice.
🔗 References
Refs #1615
🔍 Validation
Local validation for the single commit
bfaa2c90, based on2ff2b893:src/:cargo test -p mxc-sdk --features schema-gen --test mxc_contract_v1_1_0_alpha -q— passed, 386 tests.src/:cargo test -q -p mxc-sdk --features schema-gen --lib w365_agents— passed, 4 tests.src/:cargo fmt --all -- --check— passed.node scripts/versioning/check-contract-codegen.js— passed; all three contract artifact sets match and validate, and published schemas matchorigin/main.git diff 2ff2b893 HEAD --check— passed.Earlier local validation before the Local and Agentic user-type additions:
src/:cargo build --workspace— passed.src/:cargo test --workspace -q— passed.sdk/node/:npm test— passed.sdk/dotnet/:dotnet test --solution Microsoft.Mxc.Sdk.slnx— passed, 0 failures and 114 skipped tests.sdk/node/:npm run test:integration— not passing locally. The first run could not locatemxc_ffi.dll; a rerun with the workspace debug DLL had 17 passed and 13 failed, involving unavailable packaging/PTy artifacts and offline Python setup. These failures did not exercise W365; full Node integration validation remains incomplete.The new contract scenarios are included in the existing versioning CI test selection. No live W365 infrastructure is needed or exercised by this slice.
✅ Checklist
feature-acceptedCargo.lock, thedependency-feed-checkcheck passes (see pull request builds)CLA status has not been verified locally. Copilot-instruction and dependency-feed updates are not applicable: this change does not alter build conventions or
Cargo.lock.📋 Issue Type
Microsoft Reviewers: Open in CodeFlow