/** * Трассировать ли замер (scroll, scroll-coauthor). Trace снимается только на повторе 0 и только если повторов > 1: * трассированная запись помечается traced=1 и aggregate её исключает (O-9), поэтому при единственном повторе * (admin-контроль, control4x, PERF_S2_REPEATS=1) группа осталась бы без данных. Смена фильтра свода не трассируется. * PERF_TRACE=0 отключает trace полностью. */ export interface TraceOpts { repeat: number; repeats: number; filter?: boolean } export function shouldTrace(o: TraceOpts, env: Record = process.env): boolean { return o.repeat === 0 && o.repeats > 1 && !o.filter && env.PERF_TRACE !== '0'; }