Summary
On codex/traits-2-impl (#204), the branch tip fails its own perf gate with no working-tree changes applied. Running the gate in a pristine git archive HEAD | tar -x checkout reports two robust regressions:
| row |
ratio |
range |
ns (old → new) |
tableau-surface/clifford/bare/s_many |
1.096x |
1.076–1.099 |
430.2 → 468.8 |
tableau-surface/clifford/generalized/s_many |
1.083x |
1.080–1.090 |
— |
Command: mise run perf-report -- --bench tableau_surface_bench --filter clifford --launches 4
Both are robust in the harness's sense — median > 1.03 and min(per-launch) > 1.03 (benchmarks/perf_regression_report.py:259) — so they aren't process-placement artifacts, and 4 launches agree.
Why it matters beyond the two rows
The practical bar for reviewing a changeset on this branch is currently "no new robust rows versus HEAD", not "the gate is green" — which is a materially weaker and much easier-to-misread criterion. Anyone who runs the gate expecting a clean baseline will spend time attributing these two rows to their own change.
There's also a nastier second-order effect: an unrelated changeset can mask this. In one measured working tree bare/s_many read 0.942x — apparently healthy — because that tree's code layout shifted the row. So the gate's baseline is not just red, it's unstably red, and a change that hides a pre-existing regression looks better than one that doesn't.
Suggested handling
Either fix s_many (the s/s_dag batch path is phase-only, so the fused body is simple enough that a 1.08–1.10x gap against legacy should be explainable), or record it in the allowlist with the measurement so the gate's baseline is genuinely green and future runs mean what they say.
Related: #208, which is why the gate's coverage is also smaller than it looks.
🤖 Generated with Claude Code
Summary
On
codex/traits-2-impl(#204), the branch tip fails its own perf gate with no working-tree changes applied. Running the gate in a pristinegit archive HEAD | tar -xcheckout reports two robust regressions:tableau-surface/clifford/bare/s_manytableau-surface/clifford/generalized/s_manyCommand:
mise run perf-report -- --bench tableau_surface_bench --filter clifford --launches 4Both are
robustin the harness's sense —median > 1.03andmin(per-launch) > 1.03(benchmarks/perf_regression_report.py:259) — so they aren't process-placement artifacts, and 4 launches agree.Why it matters beyond the two rows
The practical bar for reviewing a changeset on this branch is currently "no new robust rows versus HEAD", not "the gate is green" — which is a materially weaker and much easier-to-misread criterion. Anyone who runs the gate expecting a clean baseline will spend time attributing these two rows to their own change.
There's also a nastier second-order effect: an unrelated changeset can mask this. In one measured working tree
bare/s_manyread0.942x— apparently healthy — because that tree's code layout shifted the row. So the gate's baseline is not just red, it's unstably red, and a change that hides a pre-existing regression looks better than one that doesn't.Suggested handling
Either fix
s_many(thes/s_dagbatch path is phase-only, so the fused body is simple enough that a 1.08–1.10x gap against legacy should be explainable), or record it in the allowlist with the measurement so the gate's baseline is genuinely green and future runs mean what they say.Related: #208, which is why the gate's coverage is also smaller than it looks.
🤖 Generated with Claude Code