Live chart engine
Lightweight Charts paints the chart. One ingest worker owns /ws/live and decodes AXB1. The shared-memory ring and GPU overlay were removed.
This page
Lightweight Charts paints candles, indicators, and fills. There is no second candle painter.
One browser worker owns the engine live socket. It decodes JSON and AXB1 off the window thread and posts frames to the chart. That path is the default: axis.engine.transport unset or worker. Set the flag to json and reload to keep the main-thread client. If the worker cannot start, the chart uses that client once and counts the fallback.
What stayed
| Piece | Where | Role |
|---|---|---|
| AXB1 codec | src/hp/axb1/ | Binary frames on the worker socket. Prices stay int64 ticks. |
| Ingest worker | src/hp/workers/ | Owns /ws/live, coalesces forming tips, posts decoded frames. |
| Execution context | src/hp/calc/execution-context.ts | A forming tip does not commit a closed bar. |
| Isolation headers | src/hp/isolation-headers.ts | COOP / COEP / CORP for the static hosts and the offline shell. |
What was removed
The shared-memory hot ring, the cold page slot, the WebGL2 and WebGPU candle overlay, the calc worker, the HUD chip, and the axis.engine.hp.* flags are gone. Settings has no high-performance section. hp.get, hp.sample, and dev.trace are not MCP capabilities.
Stored axis.engine.hp.enabled, axis.engine.hp.gpu, and axis.engine.hp.sab values are ignored.