33 lines
1.6 KiB
Markdown
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.
|