Size / Priority
Rationale
In production, traces go to Jaeger / Tempo / OTel-Collector. In dev, that setup is overkill. A bundled-in flame-graph / waterfall viewer for the in-process tracer surfaces span data without infra.
Design sketch
Built-in RecordingTracer already captures span data (src/tracing/RecordingTracer.ts). Add:
- HTTP endpoint:
GET /tracing/spans returns recent spans.
- SPA:
/tracing/visualizer renders flame-graph / waterfall.
Integration
Out of scope / non-goals
- OTel SDK integration — already covered.
- Long-term storage — in-memory ring buffer only.
Test plan
- Run workload; spans captured.
- Open visualizer; flame-graph rendered.
- Waterfall view alternative.
- Bundle size ≤ 100KB.
Acceptance criteria
Size / Priority
Rationale
In production, traces go to Jaeger / Tempo / OTel-Collector. In dev, that setup is overkill. A bundled-in flame-graph / waterfall viewer for the in-process tracer surfaces span data without infra.
Design sketch
Built-in
RecordingTraceralready captures span data (src/tracing/RecordingTracer.ts). Add:GET /tracing/spansreturns recent spans./tracing/visualizerrenders flame-graph / waterfall.Integration
RecordingTracer: existing data source.Out of scope / non-goals
Test plan
Acceptance criteria
/tracing/visualizerSPA.