neon-sprawl/docs/manual-qa/NEO-27.md

33 lines
1.6 KiB
Markdown

# NEO-27 — Manual QA checklist
Story: [NEO-27](https://linear.app/neon-sprawl/issue/NEO-27/e1m3-slice-3-telemetry-hook-sites-target-changed)
Plan: [`docs/plans/NEO-27-implementation-plan.md`](../plans/NEO-27-implementation-plan.md)
## Preconditions
- Game server running (`server/NeonSprawl.Server`).
- Godot client opens `client/project.godot` and runs `scenes/main.tscn`.
- In the scene, `TargetSelectionClient.log_selection_events` is enabled (`true`).
## Checks
- [ ] **`target_changed` dev token appears on lock transition**
- Press `Tab` to acquire a target lock or switch lock ids.
- Verify Godot Output prints a line prefixed with `[TargetSelectionClient] target_changed`.
- Confirm payload includes `previous`, `next`, `cause`, and `sequence`.
- [ ] **No `target_changed` log on validity-only updates**
- Hold a lock, move to force `validity` changes (`ok` ↔ `out_of_range`) without lock-id change.
- Verify `target_state_changed` behavior remains, and no new `target_changed` log is printed for id-unchanged refreshes.
- [ ] **Ability telemetry reserves are documented (not implemented)**
- Confirm comment block exists in `client/scripts/main.gd` naming `ability_cast_requested` and `ability_cast_denied`.
- Confirm comments include `TODO(E9.M1)` and reference E1.M4/E5.M1 as future wiring points.
## Expected outcome
- Slice 3 telemetry hook names are explicitly present in code/docs:
- Active hook mapping: `target_changed`.
- Reserved hook names: `ability_cast_requested`, `ability_cast_denied`.
- No production telemetry pipeline is introduced in this story.