Repository navigation
Retire pre-v0.9 runtime compatibility vestiges - #1397
Conversation
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
There was a problem hiding this comment.
Follow-up on October 5, 2026 (PR head 566c850): Reverified the 18 filed findings: 16 addressed, the retired-schema deletion concern (#14 in the attribution ledger) is moot after restoring those artifacts and clarifying the rule, and the backend-guide claim (#22) is only partially addressed. The LXC guide is fixed, but the Bubblewrap guide still claims impossible direct-request runtime rejections; that remaining portion has a new inline comment at docs/bwrap-support/bubblewrap-backend.md:16 (comment 4189887434). The unchanged NanVix roadmap parenthetical from the broader source review now has its own general PR comment (6005307614).
All nine original review threads were already resolved when checked. The review below describes the earlier 7a2c10f tree and is retained as historical evidence; its findings are not all currently open.
Review summary
Reviewed the fetched 7a2c10f head against the PR's 058b5c5 base, including the 119-file diff and nearby tests. No attributable High-severity security or policy-enforcement issue was established. ScriptRunner::run already validates Hyperlight requests before execute (src/core/wxc_common/src/script_runner.rs:32-48); omitted-network deny defaults remain in the touched backends; validateStableHistory still rejects edits/removals of retained published schemas, with floor-boundary tests at scripts/versioning/tests/check-contract-codegen.test.js:233-265. No third-party dependency was added. This is a COMMENT review, not a request to block the draft.
Findings without an added-line anchor
- Medium (documentation drift) — deleted networking specification still has readers.
docs/process-container/networking.md:254says to see "the parent doc on the last 4";docs/bwrap-support/bubblewrap-backend.md:386-387invokes the GA networking spec, anddocs/schema.md:47,55refers to its shared model-2 policy. Attribution:newly_exposed_by_change— this PR deletesdocs/sandbox-policy/0.8.0/networking/networking.md, making these retained references unusable. Fix: Move the needed connectivity-model/out-of-scope explanation to retained documentation and point these references there. - Low (simplicity) — AppContainer
NetworkManageris now a forwarding layer.src/backends/process_container/common/src/network_manager.rs:12-53contains onlyProxyCoordinator, forwardsproxy_address/stop_all, and checks enablement before forwardingstart. Attribution:newly_exposed_by_change— removing the firewall implementation leaves the existing layer without a separate resource responsibility. Fix: Own the coordinator directly at its one production caller, keeping the enablement check. - Low (simplicity) — LXC retains a hostname-expansion pipeline for CIDRs.
src/backends/lxc/common/src/network_iptables.rs:97-113,579-610still holdsResolvedDestinationsvectors and formats/reparses destination strings after this PR removes hostname expansion. Attribution:newly_exposed_by_change— the multi-address case that justified these structures is gone. Fix: Carry typed CIDR/family through lowering and remove the redundant resolution stage. - Low (release instructions) — the stable-schema deletion exception is documented inconsistently.
.github/copilot-instructions.md:77still says never editschemas/stable/, while this PR deliberately deletes three below-floor files anddocs/versioning.md:161-164now permits below-floor deletion. Attribution:introduced_by_change— the exception and deleted artifacts are new; the unchanged instruction now conflicts with them. Fix: If below-floor deletion is approved, update the contributor instruction to distinguish removal of retired artifacts from mutation of retained schemas. - Low (maintainability) — an orphaned doc comment describes the wrong field.
src/core/wxc_common/src/models.rs:949-951now places "Whether backends supply the defaultprocess.envblock" abovecontainer_id. Attribution:introduced_by_change— removing the compatibility field stranded its old comment. Fix: Remove that line. - Low (maintainability) — dead host-list error constant.
src/core/wxc_common/src/error.rs:66-70is byte-identical to the base, butHOST_LISTS_NOT_SUPPORTED_MSGlost both call sites in this PR and still describes retiredallowedHosts/defaultPolicyfields. Attribution:newly_exposed_by_change— the PR removed its remaining users. Fix: Delete the constant. - Low (documentation) — remaining legacy vocabulary in WSLc diagnostics and roadmap.
src/backends/wslc/common/src/wsl_container_runner.rs:896-910still tells direct callers to supplynetwork.proxy's URL form rather thanruntimeConfig.networkProxy, anddocs/linux-wsl-roadmap-june-2026.md:341says removed WSLc rule builders are "retained". Attribution:newly_exposed_by_change— the wire forms and functions these unchanged lines describe were removed by this PR; the roadmap is byte-identical to the base, while the WSLc message survives unchanged inside a modified file. Fix: Update the diagnostic and roadmap to match supported policy and removed implementation. - Low (documentation) — workflow and .NET source comments retain retired labels.
.github/workflows/Build.Linux.Job.yml:181-183still calls the test proxybuiltinTestServer;sdk/dotnet/Microsoft.Mxc.Sdk/V1/ContainerRequestSections.cs:181,197,209still labels the directional fields schema 0.8 while this PR updates the generated reference to supported directional policy. Attribution:newly_exposed_by_change— these byte-identical comments become misleading after the built-in proxy/schema retirement. Fix: Update the workflow and XML docs along with the reference.
Verified pre-existing; not attributed to this PR
- Windows direct-request proxy fallback (
src/backends/process_container/common/src/base_container_runner.rs:347-350) and Bubblewrap remote-proxy resolution (src/backends/bubblewrap/common/src/proxy_network.rs:343-379) are already present at the base without a newly reachable path established here. - The old authoring-guide pointer to nonexistent
createConfigFromPolicy()predates this PR; its new link accurately promises only the supported request shape. - Historical Windows Firewall rules could already outlive a crash or intentionally preserved policy; the old manager tracked only rules created during its own lifetime, so this PR does not establish a new upgrade-only failure.
The GitHub combined diff endpoint returned HTTP 406 (>20,000 lines). The review uses the fetched PR head, whose OID and merge-base exactly match GitHub's head/base metadata. Inline anchors below were checked against added lines in that local PR diff. No host-dependent runtime tests were run for this attribution pass.
|
Addressed the unanchored findings from the review summary:
I replied to and resolved the nine anchored review threads separately. The latest executable tree passed local workspace/Linux checks and the native macOS job on the prior head; the subsequent commits affect only schema artifacts and documentation. |
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Security-sensitive cross-platform networking and cleanup changes need human review of native-host validation, including the untested live LXC path.
Review effort: Balanced
Findings: None
Resolved since last review (1)
|
Low (documentation drift) — NanVix's roadmap comparison still names a removed egress filter. Attribution: This sentence is outside the PR's added lines, so I am leaving it as a general comment rather than forcing an inline anchor. The previously filed WSLc roadmap observation has been addressed separately. |
566c850 to
521eb53
Compare
|
Addressed the NanVix roadmap comment (6005307614) in 521eb53. The comparison now retains per-guest scoping but describes NanVix networking as coherent all-deny or unrestricted; it no longer claims a per-destination egress filter. The same sentence also reflects Hyperlight networking under supported contracts. |
521eb53 to
5102a7a
Compare
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
Cross-platform sandbox networking and proxy ownership changes warrant human review, especially with native macOS and live LXC runtime validation not run locally.
Review effort: Balanced
Findings: 1
355ab53 to
aa593ee
Compare
aa593ee to
e5136d7
Compare
e5136d7 to
da25e80
Compare
| @@ -280,7 +281,10 @@ proxy peer identity, and host-loopback allow fail with a typed unsupported-polic | |||
| ## 3. WFP enforcement | |||
|
|
|||
| PSEC applies outbound WFP filters in the OS's elevated context and owns their lifetime. AppContainer fallback does not | |||
| install directional WFP filters. | |||
| install directional WFP filters. It uses capabilities for supported direction | |||
| defaults and keeps the external runtime proxy setup. Its network audit records retain the firewall fields with | |||
This PR removes pre-v0.9 compatibility from request normalization and backend execution. It deletes redundant default-environment and network markers, unreachable host-list/proxy paths, the built-in test proxy, and obsolete CLI testing switches while preserving directional enforcement and caller-managed proxy behavior. Details * Keep supported directional policy and external runtime proxies fail closed. * Redact non-string proxy diagnostics before writing to a sink. * Preserve immutable published schemas and clarify backend guidance. Tests * cargo fmt --all -- --check and cargo test --workspace --quiet: passed. * cargo check --workspace --all-targets --all-features --quiet: passed. * cargo clippy --workspace --all-targets --all-features --quiet -- -D warnings: passed. * Feature suite: 3293 passed, 3 ignored; redaction regression passed. * Linux LXC/Bwrap: 603 passed; host suite and macOS target check passed. * Schema history: 9 passed; contract codegen check passed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 7570a662-a429-46d2-aa24-47fae6655cc4 Generated-with: gpt-6-sol
da25e80 to
c51a59d
Compare
|
|
||
| ## `Microsoft.Mxc.Sdk.V1.NetworkEgressPolicy` | ||
|
|
||
| Schema-0.8 outbound network policy. |
There was a problem hiding this comment.
thank you for this!


📖 Description
This PR removes pre-v0.9 compatibility from request normalization and backend execution. It deletes redundant default-environment and network markers, unreachable host-list/proxy paths, the built-in test proxy, and obsolete CLI testing switches while preserving directional enforcement and caller-managed proxy behavior. It also redacts non-string proxy values before diagnostics are logged.
Details
🔗 References
Alternative to the stacked sequence #1421, #1422, #1423, #1424, and #1426. Merge this PR or the stack, not both. Follows #1382 and #1383.
🔍 Validation
Tests
src/,cargo fmt --all -- --check: passed.cargo check --workspace --all-targets --all-features --quiet: passed.cargo clippy --workspace --all-targets --all-features --quiet -- -D warnings: passed.cargo test --workspace --quiet: passed.cargo test -p mxc-sdk --lib --features wslc,isolation_session,microvm,hyperlight --quiet: 3,293 passed, 3 ignored.cargo test -p mxc-sdk --lib non_string_proxy_values_in_comments_are_redacted --quiet: 1 passed on Windows.cargo check -p mxc-sdk --all-targets --target x86_64-apple-darwin --quiet: passed.src/,cargo check -p mxc-sdk --all-targets --quiet: passed.cargo test -p mxc-sdk --lib lxc::common --quiet -- --test-threads=1: 302 passed.cargo test -p mxc-sdk --lib bubblewrap::common --quiet -- --test-threads=1: 301 passed.cargo build -p lxc -p unix_test_proxy --quiet: passed;bash ../tests/scripts/run_bwrap_directional_test.sh: nine checks passed.node --test scripts/versioning/tests/check-contract-codegen.test.js: 9 passed;node scripts/versioning/check-contract-codegen.js --check: passed on the combined commit.✅ Checklist
Cargo.lock, thedependency-feed-checkcheck passes (see docs/pull-requests.md)📋 Issue Type
GitHub Actions runs the PR validation build automatically. The ADO pipeline
(
MXC-PR-Build) is the Azure version of the PR pipeline, kept in parity with the GitHubActions build; it runs on merge to
main, and Microsoft reviewers with write access can trigger iton a PR with
/azp run. See docs/pull-requests.md.If the
dependency-feed-checkcheck fails on a new dependency, the crate must be added tothe feed before the PR can pass. See docs/pull-requests.md
for the steps.
Microsoft Reviewers: Open in CodeFlow