ci: recalibrate interaction aggregate ceiling

Issue: #483
User-Visible: no
This commit is contained in:
Matysh
2026-09-07 17:20:23 +03:00
parent 862cf151a5
commit e67244c2a1
4 changed files with 20 additions and 2 deletions
+7
View File
@@ -92,6 +92,13 @@ the full profiles. The set of profiles is part of the `performance_smoke`
reuse key, so a glow-only success never stands in for a run that needed the
isometric profile.
The interaction profile keeps strict per-series, Long Task, heap, cache and
structural limits. Its aggregate `interactionSeriesMs` ceiling is 3300 ms:
enough headroom for the observed hosted-runner baseline (up to 3122.6 ms), but
still below the known failed pre-optimization result (3501.5 ms). This aggregate
is a catastrophic guard; the full workflow's base-relative comparison remains
the detector for smaller regressions.
The dedicated `performance.yml` workflow is the full comparison. It runs on
every `main` promotion, weekly and on manual dispatch for an important beta or
performance-sensitive change. It checks out the candidate and its base SHA,
@@ -13,7 +13,7 @@
},
"interactionSeriesMs": {
"stat": "median",
"hardMaxMs": 3000
"hardMaxMs": 3300
},
"hoverSeriesMs": {
"stat": "median",
@@ -19,7 +19,7 @@
"stat": "median",
"maxRegressionRatio": 0.5,
"noiseAllowanceMs": 150,
"hardMaxMs": 3000
"hardMaxMs": 3300
},
"hoverSeriesMs": {
"stat": "median",
+11
View File
@@ -245,3 +245,14 @@ for (const [smokeName, fullName] of [
'первый кадр 9 870 мс обязан краснеть');
});
}
test('interaction aggregate keeps hosted-runner headroom without weakening component gates (#483)', () => {
const smoke = readBudget('budgets-interaction-smoke.json');
const full = readBudget('budgets-large-house-interaction.json');
assert.equal(smoke.timings.interactionSeriesMs.hardMaxMs, 3300);
assert.equal(full.timings.interactionSeriesMs.hardMaxMs, 3300);
assert.equal(smoke.timings.hoverSeriesMs.hardMaxMs, 500);
assert.equal(smoke.timings.panSeriesMs.hardMaxMs, 500);
assert.equal(smoke.timings.cameraSeriesMs.hardMaxMs, 500);
assert.equal(smoke.timings.editorSeriesMs.hardMaxMs, 750);
});