# Separate metadata deadline and board overview checks Observed 2026-09-23 on the physical board. These interactions are **injected touch**, not physical-finger evidence. The board still ran image source `03cbade`; the source-built launcher wrapper `/nix/store/fajixpwc8gvsz1h4pf4c4hksyjqzjasg-k230-touch-launcher` and base binary `/nix/store/lrir8irpf6q81ffcgqr2r73zxpgvjf32-k230-touch-launcher-riscv64-unknown-linux-gnu-0.1/bin/k230-touch-launcher` were transferred/imported with hash verification. Launcher source is `e297d6e`, unchanged in the later image build. This is transferred-package proof, not final-image installation proof. The old launcher borrowed the 200 ms animation deadline for asynchronous Sway/JQ metadata. A Terminal selection encountered a visible metadata timeout and no windows even though Terminal and Monitor existed. The correction gives metadata 500 ms while retaining the independent 200 ms transition cap and cancellation/reaping behavior. `benchmark.py` on the board measured 20 observations of each subprocess path, idle and with one synthetic CPU worker. Raw timing and exit status are in `benchmark.json`; all 120 invocations exited zero. Catalog median/p95/maximum were 83.8195/120.601/122.324 ms idle and 150.8995/181.696/195.023 ms with that load (nearest-rank p95). These measurements show little headroom in the old deadline; they do not measure optical response or prove a universal maximum. The synthetic worker was terminated after the benchmark. The exact `check.py` was transferred to `/run/gesture-catalog-acceptance.py` and executed with the installed Python 3.14.7, `/run/inject-tap.sh`, `/dev/input/event1`, the production window catalog and Sway IPC helpers. In `overview` mode it explicitly showed wvkbd, verified the 400-pixel keyboard reservation, then completed 20 Up/Down cycles. Every cycle confirmed a changed Windows header plus two rendered window-card fills, a live catalog count of two, and the original Applications header on return. Built-in Apps cards share the window-card color, so color alone is deliberately insufficient. `overview.json` records the full pass. In `focus` mode the coordinator first focused the existing Monitor. The helper entered overview and selected the existing Terminal card. It verified the launcher identity had exited, Terminal was focused, and the Foot/htop process sets were unchanged. The board result proves the completed focus handoff; the release-before-focus ordering is separately covered by the production-client host fixture in `tests/test_launcher_navigation.py` (three tests passed). No duplicate application was needed. The native screenshots used for raster assertions are temporary and deleted by the helper; it retains no window titles. Its pure-Python PNG decoding adds substantial observation time, so the overall trial duration is not a gesture latency measurement. The prior helper's 3-second injection timeout aborted one run; that run was not counted. This version uses a bounded 10-second injection timeout, rejects Apps as an overview, preserves per-cycle progress, and returns a failing exit status when an assertion fails. Final-image regression, stale/empty board cases, rollback, and sharp physical-finger camera acceptance remain separate gates.