Andrey Epifancev 05d1586006 perf: исправления run-all по ревью (раунд 1)
- C1: trace только на повторе 0 при числе повторов > 1 (lib/trace.ts
  shouldTrace) в scroll и scroll-coauthor: admin-контроль, control4x и
  PERF_S2_REPEATS=1 больше не теряют единственную запись (traced=1).
- I1: масштаб 2 - PERF_LOAD_TIMEOUT_MS=40 мин и PERF_TEST_TIMEOUT_MS=90 мин,
  если не заданы.
- I2: шаг aggregate падает при сбое perfkit.aggregate/копирования и если
  summary.json не создан; тесты run-all (perf/tests/test_run_all.py).
- M2: после modals_profiling останавливается preview :8081.
- README, design.md: решения раунда.

Refs #202

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 03:12:40 +04:00

12 lines
883 B
TypeScript

/**
* Трассировать ли замер (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<string, string | undefined> = process.env): boolean {
return o.repeat === 0 && o.repeats > 1 && !o.filter && env.PERF_TRACE !== '0';
}