feat(policy): add portable UI policy controls - #3221
Open
shailendra-nv wants to merge 1 commit into
Open
Conversation
Signed-off-by: Shailendra Singh <shailendras@nvidia.com>
shailendra-nv
requested review from
a team,
derekwaynecarr,
mrunalp and
sjenning
as code owners
September 8, 2026 17:02
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.
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 commit:
de2f8345c53a9afd721519b89c5e854a9a781928mise run pre-commitpasseschecks pass on native Windows x64.
clippy::result_large_errfindings incrates/openshell-server/src/config_file.rs:288andcrates/openshell-server/src/lib.rs:519. The branch introduces noadditional Clippy finding.
Windows build and static validation:
mise run --skip-tools windows:check:arm64— passmise run --skip-tools windows:build:arm64— passmise run --skip-tools windows:check:x64— pass on native x64mise run --skip-tools windows:build:x64— pass on native x64Test execution accounting:
mise run --skip-tools windows:test:arm64mise run --skip-tools windows:test:unsupported:arm64mise run --skip-tools windows:test:mxc-real:arm64mise run --skip-tools windows:test:x64mise run --skip-tools windows:test:unsupported:x64mise run --skip-tools windows:test:mxc-real:x64The five workspace failures include the same two existing
openshell-conformancefixtures on each architecture; those fixtures use Unix/usr/local/...paths with WindowsPath::is_absolute(). ARM64 also hit onetiming-sensitive OIDC assertion under full-suite load. That exact test passed
immediately in isolation. All branch-related tests passed.
The real-MXC harness reports unavailable backend or velocity facilities as
explicit
SKIPmessages, although Cargo records those early-returning tests aspassed. The table classifies them as skipped.
MXC compatibility:
0.8.0+6cd3d58f— real-MXC suites pass on ARM64 and x64mainat3a22a2b94a81da081d260b087c4c7faeb7be7f14— ARM64 builds pass both with and without
isolation_session; the real-MXCsuite passes in both configurations
0.8.0-alpha, dev0.9.0-alpha, and rolling0.9.0-devschemasGo SDK:
go build ./...— passgolangci-lint run ./...— 0 issuesgofmtgo:testtask cannot start on Windows because it always requests-racewhile CGO is disabled. Runninggo test ./...without-racepasses the changed converter package and reproduces existing Windows path and
browser-command assumptions in unrelated packages.
Checklist