evidence · 1.9 KiB

README.md

Committed at docs/evidence/coherent-shell/rust-service-surface-qemu/README.md. This is what grounds the requirements that cite it.

Open raw source

Rust service panels on the headless compositor

At 2026-09-24T06:09:24Z, tests/rust_service_surface_qemu.py ran actual cross-built Sway and Rust shell executables under QEMU user emulation, with a 568×1232 headless Pixman output and touch events injected through Sway’s headless-only card_shell test-touch fixture. The Rust package was built from the service UI source checkpoint 5e70fa8f736b58bcf3512448c6c9da8290cb8d0f:

python3 -u tests/rust_service_surface_qemu.py \
  --sway /nix/store/ildcfqicn8j22yih16x42b4mmajqq6x8-sway-unwrapped-riscv64-unknown-linux-gnu-1.12/bin/sway \
  --rust /nix/store/25x514z4808av6mq4j6bh5iyxlwjfc7b-k230-shell-rust-riscv64-unknown-linux-gnu-0.1.0/bin/k230-shell-rust \
  --output /tmp/k230-service-debug4

The result was headless-qemu-injected-touch PASS for six checks: private history changes did not alter the broker-redacted preview pixels; a failed notification action appeared in the history row; an upward header swipe closed and reopened the shade; a shade tap reached Settings below its old input-region boundary; brightness and keyboard taps reached the bounded settings worker; and fake reboot/power-off confirmation, cancellation, and denial reached the actual panel. The two history frames are first and second; the failed action, confirmation, and fake denial show the other visible states. All screenshot content is synthetic fixture text.

The harness supplies a private fake notification socket and a fake settings command. Its confirm operation returns fixture-power-blocked; it never invokes reboot, shutdown, or the board’s settings service. This proves QEMU composition and injected touch routing, not an installed image, real glass, physical input, or device power behavior. Those gates remain open for the board operator.