feat(policy): add portable UI policy controls - #3221
Conversation
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
drew
left a comment
There was a problem hiding this comment.
Reviewed commit de2f834. Found four issues, detailed inline: global-policy ingress bypasses UI enforcement checks, MXC accepts grants suppressed by its disable flag, YAML roundtrips change the default clipboard representation, and the Go fake client shares mutable UI state.
Validation: all 10 targeted existing Rust UI tests and the Go converter/fake suites pass. Additional regression checks reproduced global-policy acceptance and the clipboard roundtrip mismatch; a Go reproduction confirmed fake-client aliasing. The MXC finding is based on the mapper and Microsoft's documented enforcement contract; Windows enforcement was not executed on this Linux host. Required branch CI was still pending when reviewed.
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
Summary
Add a platform-neutral, deny-by-default
uipolicy section and compute-drivercapability negotiation. MXC
process_containermaps the policy to MXC UIcontrols, while unsupported runtimes reject every explicit UI section before
provisioning and preserve existing behavior when the section is omitted.
Related Issue
Closes #3022
Changes
allow_graphical_ui, directionalclipboard, andallow_input_injectionpolicy controls to the Rust and protobuf models.it through gateway health output and the Go SDK.
ui: {}, when a selected driverdoes not advertise support. Docker, Podman, Kubernetes, VM, non-Windows
builds, older extensions, and MXC
isolation_sessiontherefore remaindefault-deny for the new policy surface.
process_container; keep omitted policyrestrictive and reject unknown enum values or lossy mappings.
architecture documentation, MXC documentation, policy-generation skills,
Windows validation tasks, and Go SDK conversions.
lifecycle, real-MXC schema, SDK, and end-to-end tests.
Testing
Validated head:
69ee7d145f9c4c0e0637f830a134700b5b96da70mise run pre-commiton native Windows x64windows:check:x64windows:build:x64windows:test:x64— 3,569 passed, 18 skipped, 0 failedwindows:test:unsupported:x64— all driver/feature combinations passedwindows:test:mxc-real:x64— 11 passed, 0 failed; unavailable livebackend facilities reported as explicit skips
windows:e2e:mxc:mock— 4 passed, 0 failedtests, real-MXC schema tests, and mock E2E validation
The broader Windows test aggregate also completed 3,569 Rust tests, SBOM tests,
release-range tests, and documentation tests successfully. It then reached a
Unix
bashparity task that does not apply on native Windows.MXC compatibility:
0.8.0+6cd3d58fpasses the real-MXC suites.mainat3a22a2b94a81da081d260b087c4c7faeb7be7f14builds with and without
isolation_session, and passes the real-MXC suite inboth configurations.
0.8.0-alpha, dev0.9.0-alpha, and rolling0.9.0-devschemas.Checklist