Race feed (LAN): names drop after finish, bogus best lap, inconsistent race_result #28

Closed
opened 2026-10-20 01:05:24 +00:00 by mintopia · 3 comments
Owner

Found while verifying #27 on a 5-instance LAN race (Barcelona Oval, 3 laps, BLUR_LANSIM, recomp). Captures are local (ws_tap.py record, not in git).

  • Names vanish after finish: once the local player finishes, every racer's name/car/mods drop out of standings (all 5 racers, ~70 s on the winner's instance), and race_result standings never carry them. The live-timing classification then shows CPU 0x / Player.
  • Bogus best lap: one remote racer had best_ms 100 (page showed fastest lap 0:00.100 L1).
  • race_result inconsistent across instances: only 2 of 5 instances sent "final":true; on one instance a finished racer in P2 had a lower race_ms (154723) than the P1 winner (188122).
  • Transient unknown powerup: one remote racer's slot read as an out-of-range kind for ~1 s on one instance (once per 5-instance race).

Acceptance criteria

  • Names/cars/mods present in standings and race_result after finishing
  • best_ms never below a plausible lap time
  • race_result final and consistent on every instance
Found while verifying #27 on a 5-instance LAN race (Barcelona Oval, 3 laps, `BLUR_LANSIM`, recomp). Captures are local (`ws_tap.py record`, not in git). - **Names vanish after finish**: once the local player finishes, every racer's `name`/`car`/`mods` drop out of `standings` (all 5 racers, ~70 s on the winner's instance), and `race_result` standings never carry them. The live-timing classification then shows `CPU 0x` / `Player`. - **Bogus best lap**: one remote racer had `best_ms` 100 (page showed fastest lap `0:00.100 L1`). - **`race_result` inconsistent across instances**: only 2 of 5 instances sent `"final":true`; on one instance a finished racer in P2 had a lower `race_ms` (154723) than the P1 winner (188122). - **Transient `unknown` powerup**: one remote racer's slot read as an out-of-range kind for ~1 s on one instance (once per 5-instance race). ## Acceptance criteria - [ ] Names/cars/mods present in `standings` and `race_result` after finishing - [ ] `best_ms` never below a plausible lap time - [ ] `race_result` final and consistent on every instance
Author
Owner

Fixed in race_feed: (1) set_players merges by racer, so names/cars/mods survive the game dropping remote records after finish (cleared at teardown/reset); (2) laps/best under 5 s ignored (kMinLapS) so bogus best_ms 100 is rejected; (3) teardown now publishes final:true if a finish was seen but final was not, and finished racers race_ms is clamped monotonic by finish order. Unit test extended. Not addressed: transient unknown powerup (not in acceptance criteria). Not verified on a live LAN capture.

Fixed in race_feed: (1) set_players merges by racer, so names/cars/mods survive the game dropping remote records after finish (cleared at teardown/reset); (2) laps/best under 5 s ignored (kMinLapS) so bogus best_ms 100 is rejected; (3) teardown now publishes final:true if a finish was seen but final was not, and finished racers race_ms is clamped monotonic by finish order. Unit test extended. Not addressed: transient unknown powerup (not in acceptance criteria). Not verified on a live LAN capture.
Author
Owner

Follow-up: finished racers race_ms now = race clock at first observed finish (not cum of lap hops, which miss laps); local race_ms_ frozen from same; reset() publishes final:true if finished but not final. Unit tests cover it. Live 5-instance LAN capture not run (no game/LAN in this environment).

Follow-up: finished racers race_ms now = race clock at first observed finish (not cum of lap hops, which miss laps); local race_ms_ frozen from same; reset() publishes final:true if finished but not final. Unit tests cover it. Live 5-instance LAN capture not run (no game/LAN in this environment).
Author
Owner

Completed and merged by Harmonic (task 28).

Completed and merged by Harmonic (task 28).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
mintopia/blur#28
No description provided.