Skip to content

Commit b0c8be3

Browse files
committed
docs(operations): record the same-host perf variance baseline (§11, warning-first)
1 parent ef0b880 commit b0c8be3

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Performance variance baseline — 2026-09-16 (warning-first, no gate)
2+
3+
Maintenance plan §11: before any perf budget can block, establish the same-
4+
host repeat variance of the existing `npm run benchmark:perf -- --costmetrics`
5+
tool. This record is that baseline. **Warning-only: nothing in CI blocks on
6+
these numbers, and no threshold below may be turned into a blocking gate
7+
without its own owner-approved change.**
8+
9+
- Tree: `origin/dev` `ef0b880e445ff6d9d591cb5d73173f77e9d82c4d`
10+
- Environment: linux x64, AMD Ryzen 9 5950X (32 threads), Node v24.18.0,
11+
npm 11.16.0, otherwise-idle host, 5 consecutive passes of the unmodified
12+
tool (its own protocol: analyzer warm-in-process 1 warmup + 7 measured
13+
passes; CLI cold start 3 fresh processes per run). Generated
14+
`perf-latest.{md,json}` files were snapshotted per pass and restored —
15+
no generated drift is part of this PR.
16+
- Raw per-pass JSON stays local (5 snapshots); this document records the
17+
aggregate only, per the no-long-logs rule.
18+
19+
## Observed baseline and repeat variance (n=5 passes)
20+
21+
| Metric | Mean | Min–max | SD | Spread (max−min)/mean |
22+
|---|---:|---:|---:|---:|
23+
| CLI cold start, mean ms (3 procs/pass) | 73.6 | 71.4–79.9 | 3.6 | 11.6% |
24+
| CLI cold start, p95 ms | 77.3 | 72.8–92.6 | 8.6 | 25.7% |
25+
| npm tarball bytes | 1,521,793 | identical ×5 | 0 | 0% |
26+
| RSS delta bytes (report process) | 14.2 MB | 13.5–14.9 MB | 0.6 MB | 10.0% |
27+
28+
Analyzer per-fixture p50 (warm, ms):
29+
30+
| Fixture | Mean | Min–max | Spread |
31+
|---|---:|---:|---:|
32+
| perf-en-short | 0.198 | 0.193–0.207 | 7.1% |
33+
| perf-ko-short | 0.202 | 0.196–0.206 | 4.9% |
34+
| perf-en-medium | 0.358 | 0.345–0.367 | 6.2% |
35+
| perf-mixed-long | 0.352 | 0.321–0.451 | 36.9% |
36+
| perf-synth-lexicon | 0.666 | 0.655–0.678 | 3.5% |
37+
| perf-ko-medium | 0.757 | 0.734–0.817 | 11.0% |
38+
| perf-synth-mattr | 2.030 | 1.932–2.157 | 11.1% |
39+
40+
## Warning thresholds derived from the variance (advisory only)
41+
42+
A future same-host measurement is *worth a look* (not a failure) when it
43+
falls outside roughly 3× the observed same-host noise:
44+
45+
- **Tarball bytes:** deterministic (0% spread) — any change is real; flag
46+
growth > 5% versus the recorded release baseline for comment in the PR
47+
that caused it.
48+
- **CLI cold start (mean of ≥3 fresh processes):** flag beyond ±35% of
49+
73.6 ms (≈ outside 48–99 ms). Sub-±35% moves are inside plausible noise
50+
for a single run on this host.
51+
- **Analyzer per-fixture p50:** flag beyond ±50% of the fixture's baseline
52+
mean. `perf-mixed-long` alone showed 37% pure repeat noise, so smaller
53+
per-fixture moves must not be read as regressions from one run.
54+
- **p95-style figures:** the cold-start p95 varied 26% across identical
55+
passes at n=3 processes; per §11, do not quote single-run p95 values as
56+
precise, and never gate on them at this sample size.
57+
58+
## Contract notes (§11 honored)
59+
60+
- Shared CI runners are noisier than this host; these numbers are a
61+
same-host baseline, not a CI gate. A CI-side budget would need its own
62+
runner-population baseline first.
63+
- Model/backends latency is out of scope here (local deterministic analysis
64+
and process startup only); rewrite-path call/token budgets stay a separate
65+
§11 line with their own unknown/null reporting rules.
66+
- Baseline refresh: rerun the same 5-pass procedure, record SHA + environment
67+
+ reason next to the new numbers; do not overwrite this record.

0 commit comments

Comments
 (0)