neon-sprawl/docs/plans
VinPropane 435a32b3b3 NEO-24: fix movement-driven target refresh via authoritative_ack signal
Review 2026-04-21 caught that the hybrid soft-lock refresh path is
unreachable during normal WASD locomotion. `main.gd` was wiring
`TargetSelectionClient` to `PositionAuthorityClient.authoritative_position_received`,
which only fires on boot sync and move-rejection resync — successful
`move-stream` 200s are intentionally silent to avoid RTT rubber-banding.
So walking out of an alpha/beta radius never triggered the throttled
`GET /target` the HUD depends on, and validity stayed stuck at `ok`.

Add a separate `authoritative_ack(world)` signal on `PositionAuthorityClient`
emitted from both `BOOT_GET` 200 and successful `move-stream` 200, and
switch `TargetSelectionClient` (+ `main.gd`) to it. The snap signal keeps
its current semantics so rubber-band suppression is untouched; the ack
signal is a pure heartbeat that cooldown-throttled consumers can hook.

Also adds an integration test that wires both real clients together (per
the review's suggestion 1) so renames or mis-wires between the two
scripts fail loudly rather than silently skipping the end-to-end path.

- `client/scripts/position_authority_client.gd`: new `authoritative_ack`
  signal; extracted `_parse_world_from_response` helper to share JSON
  parse across `BOOT_GET` and `STREAM_POST`; emit ack from both.
- `client/scripts/target_selection_client.gd`: rename
  `on_authoritative_position_snap` to `on_authoritative_ack`; drop
  `apply_as_snap` gate (no longer meaningful).
- `client/scripts/main.gd`: connect the new signal.
- `client/test/position_authority_client_test.gd`: assert ack on boot
  200 and stream 200.
- `client/test/target_selection_client_test.gd`: rename tests for new
  handler.
- `client/test/target_refresh_on_locomotion_test.gd`: new integration
  suite wiring real authority + target clients.
- Plan Decision 3 + Tests row + Files-to-modify row updated.
- `docs/reviews/2026-04-21-NEO-24.md`: committed with blocking issue +
  suggestions struck through with `Done.` notes per
  planning-implementation-docs rule.
- `docs/decomposition/modules/documentation_and_implementation_alignment.md`:
  E1.M3 row now reflects NEO-24 landed.
- `client/README.md` + `docs/manual-qa/NEO-24.md`: refreshed signal names
  so the soft-lock refresh description matches the wiring.

Tests: 88/88 GdUnit headless passed locally.
2026-04-21 22:35:41 -04:00
..
E1M3-prototype-backlog.md chore: address E1.M3 docs review (Slice 3 anchor, Linear pointers) 2026-04-17 20:48:53 -04:00
NEO-5-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-6-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-7-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-8-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-9-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-10-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-11-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-12-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-13-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-14-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-15-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-16-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-17-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-18-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-19-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-20-implementation-plan.md chore: point docs and rules at Linear NEO issue ids 2026-04-13 13:15:32 -04:00
NEO-22-implementation-plan.md NEO-22: Unit-test WASD locomotion pure helpers 2026-04-17 20:16:25 -04:00
NEO-23-implementation-plan.md NEO-23: add targeting HTTP API (TargetState v1, select intent) 2026-04-17 21:06:59 -04:00
NEO-24-implementation-plan.md NEO-24: fix movement-driven target refresh via authoritative_ack signal 2026-04-21 22:35:41 -04:00
NEON-29-implementation-plan.md NEON-29: Fix nav column steer ping-pong — path lookahead + air bee-line 2026-04-12 18:03:47 -04:00
internal-content-authoring.md chore: Epic 2 E2.M1 stub, content CI validation, doc follow-ups 2026-04-03 21:27:52 -04:00