evidence · 7.3 KiB

README.md

Committed at docs/evidence/coherent-shell/interruption-gate-2026-10-10/README.md. This is what grounds the requirements that cite it.

Open raw source

Live interruption gate 4.3 — 2026-10-10

All five named cases passed on the newly built compositor and unchanged selected Rust shell. Results, command output and provenance preserve exact commands, source revisions, executable hashes, UTC timestamps and capture origins. This completes task 4.3’s named QEMU integration gate. The separate operator report records the user’s acceptance without asking them to repeat existing checks.

CARD_SHELL_SWAY=/nix/store/awym9l5znn6599q37wnhnnch77ggghjh-sway-unwrapped-riscv64-unknown-linux-gnu-1.12/bin/sway \
CARD_SHELL_CLIENT=/nix/store/yjb89ap4bq5vb29szdzkr5sv9lpw1sz6-card-composition-probe-client-0.1/bin/card-composition-probe-client \
K230_SHELL_RUST=/nix/store/q2rxmp980f9kxi962f29333z9pbixvbk-k230-shell-rust-riscv64-unknown-linux-gnu-0.1.0/bin/k230-shell-rust \
python3 tests/test_shell_motion.py --case reverse --case retarget --case unmap \
  --case refusal --case private-no-flash --output /home/jadams/tmp/k230-m43-proof3

Cancellation correction and observations

Back previously called immediate cs_leave, resetting an unfinished entry or expansion. Second contact used the same immediate path. The policy now seeds reversal from the current progress, offset and anchor; canceled contact streams remain consumed until release. Entry-mode releases drain through the same blocked-contact handling as other modes. Ordinary Back and hard-loss restoration retain their established paths. This fixes the existing command, without adding the successor’s side-edge gesture.

The prior compositor fails both early cancellation checks: control identities/results, Back failure, second-contact failure. Controls used the committed 844be7e0 fixture; its held-entry checks are unchanged in the final fixture. The later raw-capture change affects only unfinished expansion.

All eight task-4.1/4.2 compatibility cases pass on the new compositor: result, output. That run used committed d5eb34e4; the eight cases and default PNG capture have identical behavior in the final fixture. The host policy suite passes all 38 cases, including exact preservation of current geometry, stream drainage and normal/reduced-motion reversal: host output.

The expansion fixture reads actual raw PPM screencopy pixels, checks an intermediate row, sends the interruption and queries its state before encoding the evidence PNG. This avoids spending the 160ms live input window encoding and decoding PNG. It does not slow the product animation or inject a fabricated policy timestamp. Final recovery requires both the settled IPC mode and actual destination pixels, since a screencopy can precede the next IPC state.

Build and retained dependencies

The guarded component build succeeds, producing /nix/store/dicjv65r9b3gkmwhmdj2k11vzj6bnjsj-k230-card-shell. Only five changed compositor/wrapper derivations build. The prior task-4.2 retention repair preserves unchanged graphics outputs; no Cairo/Pango/HarfBuzz, kernel, image or Rust rebuild occurs. Input comparison shows identical old/new Sway dependency derivations and exactly the three changed adapter/policy source inputs, with copied store bytes matching committed source.

The verified retention receipt extends the previous all-output farm to 10,266 currently realized paths, including 13 new component paths. The durable root is ~/.local/state/tdisplay-k230/retained-builds/coherent-interruption-2026-10-10/build-closure. Every retained path passed validity checking; the new compositor’s actual GC-root query resolves to this root. Global GC policy and prior roots are unchanged; unrealized outputs are not rebuilt just for pinning. The earlier specific GC deletion event remains unverified.

Ownership and remaining gates

Worktree /home/jadams/tmp/k230-coherent-closeout-2026-10-10, branch closeout/coherent-integration-2026-10-10, task base b156d47d. Owned paths: motion and policy fixtures, adapter and policy source, this evidence directory, blob inventory, coherent task record and its work-board override. No board or serial reservation was taken. The temporary build slot is released.

Evidence class: headless Pixman, RISC-V processes under QEMU user emulation, native Wayland clients and injected wlroots input. Settings inputs are synthetic; audio and notification services are unavailable. Captures contain synthetic content. The absence checks cover sampled composed frames, not every output presentation or camera-visible instant. No physical latency measurement, board installation, system-mode boot or real-finger feel is claimed.

The umbrella is 29/39 complete and remains open. Accessibility task 1.5 and the separately named physical/trace/polish gates remain. The existing operator command for task 5.2 remains python3 tools/capture-feature.py coherent-cards --provenance real-touch --duration 60 --description 'Card motion and close recovery on glass' --output-dir docs/evidence/coherent-cards, with an identified installed artifact, board reservation and actual camera proof. This host closeout does not perform it.