neon-sprawl/docs/plans
VinPropane d6ef4fd811 NEO-24: race-free target/select via optional positionHint
Followup #5: after locking alpha, walking into beta's ring, stopping and
pressing Tab could still return `out_of_range` even when client and server
agreed on position (Δ=0). The freshness-kick move-stream POST and the
target/select POST race on separate HTTP connections so the select can be
validated against a stale stored snap.

Extend TargetSelectRequest v1 with an optional positionHint {x,y,z}.
Server uses the hint for the radius check and for the echoed
targetState.validity; the hint is advisory and does not write to the
position store (move-stream stays the sole write path). Client attaches
the hint automatically whenever set_freshness_kick(...) is wired, so
headless unit tests that skip the wiring fall through to the no-hint
behavior. Freshness kick is kept in place to refresh the stored snap for
later validity GETs but is no longer load-bearing for denial correctness.

Server: 3 new tests (hint accepts when stored is stale, hint-far denies,
hint never writes to position store). Client: 1 new test asserting the
hint is in the POST body when wired. All 62 server + 96 client tests
pass.

Plan Decision 8, review follow-up #5, manual QA section 6, and NEO-23
contract notes updated. New bruno request exercises the hint path.
2026-04-21 23:52:20 -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-24: race-free target/select via optional positionHint 2026-04-21 23:52:20 -04:00
NEO-24-implementation-plan.md NEO-24: race-free target/select via optional positionHint 2026-04-21 23:52:20 -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