linear_sphere_sweep returns only a capped hit table (no count) and its
slots flood with world-geometry actors, starving real enemies behind the
player (crash: nil num_hits compare; then silent no-marks). Candidates
now come from smart_tag_system._unit_extension_data (alive, breed-typed,
in range) — geometry can't interfere, LOS gates still apply unless
omni_mark_ignore_los. OMNI-DIAG candidate/reject logging kept, gated on
debug_mode.
- omni_mark: full-sphere sweep (linear_sphere_sweep capsule covering max_range
around the player) replaces the forward-only ping raycast, so enemies behind
you / off-screen become mark candidates
- omni_mark_ignore_los: optional sub-toggle, skips line-of-sight checks entirely
- prefer nearest unit on score ties (sweep hit order is arbitrary)
- bypass FOV dot gate in is_target_pingable when omni_mark is on
- LOS check budget 10 -> 16 per frame