Always-on profiler primitives over tracing: ProfilerLayer appends a fixed-size MinimalSpanRecord per
matching span without allocating on the hot path, and ScopeHandle::finish drains them to a ProfilerSink.
Deliberately free of metric and IoC dependencies, so tests can embed the layer with a NoopSink and the data
model is usable without pulling in the subsystem.