# NEO-26 — Manual QA checklist | Field | Value | |--------|--------| | **Key** | NEO-26 | | **Title** | E1.M3: SelectionEvent surface + debug or HUD consumer | | **Linear** | [NEO-26](https://linear.app/neon-sprawl/issue/NEO-26/e1m3-selectionevent-surface-debug-or-hud-consumer) | | **Plan** | [`docs/plans/NEO-26-implementation-plan.md`](../plans/NEO-26-implementation-plan.md) | Pair client (**F5**) with the server. Open the Godot **Output** dock. ## 1. `log_selection_events` - [ ] Select **`TargetSelectionClient`** in the scene tree; set **`log_selection_events`** to **On** in the Inspector. - [ ] Run with server. Press **Tab** to lock a target: Output shows a line **`[TargetSelectionClient] SelectionEvent`** with `cause=tab`, `previous` null or prior id, `next` = locked id. - [ ] Press **Esc** to clear: next line shows **`cause=clear`**, `next` null when lock cleared. - [ ] Turn **`log_selection_events`** **Off**; Tab / Esc no longer print selection lines (HUD from NEO-24 unchanged). ## 2. Movement GET (validity-only) - [ ] With logging **off**, lock **alpha**, **WASD** until HUD shows **`Validity: out_of_range`** (NEO-24 soft lock). No requirement for extra **Output** lines from NEO-26 here — **id-only** events suppress **`validity`-only** GET updates. ## 3. Subscription sanity (optional) - [ ] In a throwaway local script or remote inspector, **`connect`** to **`selection_event`** and confirm the same payloads as printed when logging is on.