neon-sprawl/docs
VinPropane 63fecb1099 NEO-24: range-aware Tab cycle skips out-of-range anchors before POST
Previously Tab from no-lock always picked `ORDERED_IDS[0]` (alpha), so
standing next to beta and pressing Tab was denied with `out_of_range`
even though the client HUD clearly showed beta in range.

Added `PrototypeTargetConstants.next_in_range_id_after(current, world)`
which walks the cycle and returns the first anchor whose client-side
horizontal distance is within the anchor radius.
`TargetSelectionClient.request_tab_next()` prefers that pick when the
player reference is wired (same path `set_freshness_kick` uses) and
falls back to the plain cycle order when nothing is in range so the
server still owns the denial reason.

Server contract (NEO-23) untouched. Tests cover the beta pick, the
nothing-in-range fallback, and the no-player-ref regression. Plan
Decision 6 + review follow-up #3 + README + manual QA updated.
2026-04-21 23:26:56 -04:00
..
architecture docs: documentation vs implementation alignment (#7) 2026-03-30 19:03:03 -04:00
decomposition NEO-24: fix movement-driven target refresh via authoritative_ack signal 2026-04-21 22:35:41 -04:00
game-design chore: document governing design axioms (fun, cyberpunk theme) 2026-04-04 18:46:55 -04:00
manual-qa NEO-24: range-aware Tab cycle skips out-of-range anchors before POST 2026-04-21 23:26:56 -04:00
plans NEO-24: range-aware Tab cycle skips out-of-range anchors before POST 2026-04-21 23:26:56 -04:00
reviews NEO-24: range-aware Tab cycle skips out-of-range anchors before POST 2026-04-21 23:26:56 -04:00