mirror of
https://github.com/vladtrc/iw4L
synced 2026-10-27 10:38:49 -04:00
311c8fa336
`make bench` is one recipe over one run now. `IW4L_BENCH=1` arms an in-process recorder on the spans that already feed Perfetto, and at exit the run prints two independent reports and writes them to `iw4l-artifacts/bench/<stamp>.txt`: the waterfall from the shell command to a playable map, carrying the time each load stage held the pool alone, and frame time as a span tree whose nesting is recorded rather than declared. Neither needs a trace file or Trace Processor, and either can be MISS while the other stands. `bench-demo` and `bench-load` are gone — a goal after `bench` is a demo, `ZONE=` is a live map. A bot is no longer minted onto an id a real client already owns. The roster steps over the ids the authority and the local player hold, and a slot that still lands on the local player is retired, because `is_bot` would otherwise claim the player and nothing could drive the slot anyway. A stretch with no authority ack re-adopts the next snapshot and counts one stall; three of them still fail the link. Failing on the first turned every long frame into a permanent disconnect. The loading overlay comes down once the world is installed rather than waiting on the class-select hop, which a replay never makes — it was playing the whole demo behind `UiLayer::Loading`, with map ambience held back. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013bHwyKwUjaYmtVG1F3Ttku