You're right — the telemetry path itself was contributing to perceived
browser lag, not just the GPU work. Two specific sources removed:
render/mod.rs::rebuild_chunk:
- Per-chunk log::info!("rebuild_chunk {coord}: {ms}ms ...") fired
~289 times during world init, plus on every edit. Chrome's console
buffer accumulates these and DevTools recalcs on each new line.
Removed entirely. The bench toggles + FPS HUD already give us the
measurement signal; per-chunk timing was noise once verified.
web/main.js setupFpsHud:
- Was a 5 Hz setInterval that did `el.textContent = ...` and two
`classList.toggle` calls each tick (15 DOM writes/sec). Now:
* Polls at 1 Hz (the EMA already smooths)
* Only writes textContent when the displayed string actually
changes (skip is the common case once stabilized)
* Only writes class when the tier (green/warn/bad) crosses
a threshold
Same readout, ~15× fewer DOM writes.
web/main.js setupStatusLoop (HP bar):
- Same dedupe pattern. 10 Hz polling, but DOM writes only when
hp or alive changes from the last sample. Was firing 3 style
writes per tick unconditionally; now zero in steady state.
No functionality changes — every telemetry getter, every bench
toggle, every test-harness export still works (just verified via
the 18-check functional contract suite).
Wasm release built; tests 63/63 pass.