Skip to content

feat: harden Jaguar Screen Waydroid with host SELinux - #52

Open
ajlennon wants to merge 82 commits into
mainfrom
feat/r26-waydroid-selinux
Open

ajlennon wants to merge 82 commits into
mainfrom
feat/r26-waydroid-selinux

Conversation

@ajlennon

Copy link
Copy Markdown
Member

Purpose

Add the R26 Jaguar Screen host foundation for running Waydroid with LmP SELinux enabled, while keeping the Android changes limited to container-awareness required by kernel-global SELinux.

Security and platform changes

  • selects selinux only for the android-container/explicit host-SELinux product contract;
  • adds the Jaguar linux-lmp-fslc-imx SELinux kernel fragment;
  • compiles a dedicated waydroid_t module and labels persistent/runtime/rootfs paths;
  • defaults waydroid_t to enforcing and rejects permissive policy outside an explicit local-development build;
  • applies one host-owned mount context to Android system/vendor/overlay mounts rather than accepting Android xattrs as host policy types;
  • preserves host-owned labels for Binder, DRM/Etnaviv, V4L2, display/audio sockets and other shared devices pending hardware AVC classification;
  • adds Jaguar Screen Waydroid provisioning, container/session/UI ordering and board evidence capture;
  • retains secure-boot/signing, OTA and mfgtool paths in the protected gate.

Focused R26 gate

Per product-owner direction, this phase runs only:

  • existing Jaguar Screen factory image;
  • existing Jaguar Screen mfgtool/recovery image;
  • exact Foundries main-jaguar-screen Android-container image.

imx8mm-jaguar-inst and the Phasora families are explicitly deprecated. Other active products are deferred, not claimed as passed.

Evidence

  • independent bootstrap PR ci: bootstrap layer gate and repair Jaguar baseline #51 passed both screen shards and was merged before this PR;
  • exact manifest sync resolved every pinned project, including the Foundries subscriber override;
  • production-shaped exact-manifest parse: 3,954 recipes, 6,137 targets, zero errors;
  • refpolicy-targeted:do_compile: 459/459 tasks passed from the exact checkout;
  • generated waydroid.pp: 114,378 bytes, module enabled, no permissive waydroid_t declaration;
  • Jaguar kernel do_kernel_configcheck: 873/873 tasks passed in the candidate preflight;
  • 56 validation unit tests and ShellCheck pass.

Remaining release gates

This PR enables the Foundries and hardware phase; it does not claim hardware acceptance. After merge, the exact manifest will be built in Foundries CI, deployed by OTA, and the development AVC evidence will be converted into narrow reviewed allow rules before the enforcing release capture and rollback evidence.

Alex J Lennon and others added 30 commits September 6, 2026 20:54
lxc meson fails with clang ThinLTO when the linker is ld.bfd; disable
meson b_lto for lxc. Bump python3-gbinder to bullseye 1.1.2 (5089d76)
for Cython 3 noexcept fixes required on Scarthgap/Python 3.12.

Co-authored-by: Cursor <cursoragent@cursor.com>
Pin the focused LmP v96 backport that corrects stale patch context for the handheld and Phasora images.

Assisted-by: Codex
Track Git's canonical renamed path in the exact baseline repair file set.

Assisted-by: Codex
Keep the gate fail-closed for candidate-added warnings while avoiding false failures when shared sstate suppresses a pre-existing baseline warning.

Assisted-by: Codex <codex@openai.com>
Run every protected tuple as an independent fail-fast-disabled matrix shard while preserving the single required Layer Adoption Gate aggregator. Keep the shared local driver full-matrix by default.

Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>

Assisted-by: Codex
Resolve protected Git LFS KAS inputs in the shared regression driver for both baseline and candidate worktrees, preserving identical local and CI preparation and failing closed if smudging does not occur.

Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>

Assisted-by: Codex
# Conflicts:
#	meta-dynamicdevices-bsp
Carry the per-ref Foundries variables through the layer-adoption overlay, preserve every bootstrap tuple immutably, and allow product BSP commits only when they contain the exact audited baseline repair.

Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>

Assisted-by: Codex
Refpolicy compiles policy text with native tools and BUILD_CC. Suppress its unused target compiler/libc defaults so exact preflight reaches and validates the Waydroid policy without building LLVM.

Signed-off-by: Alex Lennon <ajlennon@dynamicdevices.co.uk>

Assisted-by: Codex
Record the product-owner retirement and remove the corresponding image and mfgtool shards from the protected build matrix.\n\nAssisted-by: Codex <noreply@openai.com>
Run the current integration phase against the screen image and recovery tuple, while documenting that other active products remain deferred rather than deprecated.\n\nAssisted-by: Codex <noreply@openai.com>
Restrict the permissive domain to explicit development builds, add an enforcing smoke stack, record kernel and policy proof, and focus the current adoption phase on Jaguar Screen image and recovery coverage.\n\nAssisted-by: Codex <noreply@openai.com>
# Conflicts:
#	ci/layer-adoption-tuples.json
#	docs/PRODUCT_TUPLE_LIFECYCLE.md
Assisted-by: Codex <noreply@openai.com>
# Conflicts:
#	.github/actionlint.yaml
#	ci/layer-adoption-contract.json
#	ci/layer-adoption-tuples.json
#	docs/PRODUCT_TUPLE_LIFECYCLE.md
#	scripts/validation/capture-layer-state.sh
#	scripts/validation/detect-layer-adoption.py
#	scripts/validation/run-layer-adoption-regression.py
#	scripts/validation/tests/test_capture_layer_state.py
#	scripts/validation/tests/test_detect_layer_adoption.py
#	scripts/validation/tests/test_run_layer_adoption_regression.py
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