Parent Epic: #6944 Performance Quality Gates → #7184 Enforcement → #7211 Workflow, Overrides, Alerts
File: test/e2e/benchmarks/utils/gated-metrics.ts
Size: S | Hours: ~2-3
PR open: #45444. Filed after the fact to give the change a tracked home; the PR carries the full measurement.
Problem
gated-metrics.ts documents its own exit condition:
Demote (gated → warn) when CV > 35% OR FP rate > 10% for 2+ consecutive weeks. Cadence: monthly review. Output: PR updating the array below.
Both triggers fire on onboardingNewWallet.total, over the 13 runs sampled in #45266:
|
value |
trigger |
fires |
| CV |
41.8% (mean 7672ms, sd 3204ms) |
> 35% |
yes |
| FP rate |
79% (11/14, no regression involved) |
> 10% |
yes |
So this is not an override of the process — it is the process running, roughly two months late. The monthly review the procedure calls for has not been happening, which is the second thing this ticket records.
Three gated metrics are downstream of the same ~37% per-iteration coin flip documented in #45266. Against a bimodal null, no threshold value is correct — a ceiling either sits in the gap between the two clusters and picks a side of the coin, or sits above the slow cluster and never fires at all. The metric is not noisy; it is not measuring one thing.
onboardingNewWallet.total is the clearest case. Its p75 splits into a 2257–2300ms cluster and a 6858–10478ms cluster, and the 5460ms fail ceiling sits inside the 4558ms gap. Observed failure rate 11/14 = 79%, with no regression involved (#45205, #45266).
They stay enforced today because #45266 is the fix and #45205 is the recalibration, and both are open. Neither is close, and in the meantime the gate is producing a red that carries no information about the commit.
Which metrics, and which stay
| gated metric |
line |
bimodal? |
disposition |
onboardingNewWallet.total |
47 |
yes — spill is terminal, so it propagates |
remove |
onboardingNewWallet.doneButtonToAssetList |
42 |
yes — this is the coin flip, 24/65 slow |
remove |
onboardingImportWallet.doneButtonToHomeScreen |
41 |
yes — same coin, 30/80 slow |
remove |
onboardingImportWallet.total |
46 |
no — a step follows the slow one, which absorbs the spill |
keep |
The scope is wider than onboardingNewWallet.total alone because the coin flip is a step, and it is gated directly in both flows. Within-run sd is 3279ms for onboardingNewWallet.total against 120ms for onboardingImportWallet.total; the import flow's total is a clean unimodal measurement and its 862ms between-run sd is a real calibration target, so it keeps its gate and stays with #45205.
onboardingImportWallet.doneButtonToHomeScreen additionally measures boundary placement rather than duration (planning#7531) — it has two independent reasons not to gate.
Solution
Remove the three entries from GATED_METRIC_VALUES in test/e2e/benchmarks/utils/gated-metrics.ts. Leave the threshold values in thresholds.ts untouched so the metrics keep reporting into the PR comment and Sentry — this suppresses enforcement, not measurement, and #45266 needs the series to continue in order to confirm its fix.
Add a comment at each removal naming #45266 as the condition for restoring it, so the removals are re-gated when the slow path is fixed rather than quietly becoming permanent.
Explicitly not proposed: relaxing the ceilings to swallow the slow cluster. A ceiling above 10478ms passes every observed run including any real regression up to ~5×, which converts an uninformative red into an uninformative green. Removal is the honest state, and it is visible in a way a widened threshold is not.
Acceptance Criteria
Labels
team-extension-platform, area-testSuite, area-CI
Dependencies
Blocked by: nothing — this is the interim state while the two below are open
Related: #45266 (the slow path; restoring these gates is its exit condition), #45205 (recalibration, which covers onboardingImportWallet.total), planning#7531 (step boundaries)
Parent Epic: #6944 Performance Quality Gates → #7184 Enforcement → #7211 Workflow, Overrides, Alerts
File:
test/e2e/benchmarks/utils/gated-metrics.tsSize: S | Hours: ~2-3
Problem
gated-metrics.tsdocuments its own exit condition:Both triggers fire on
onboardingNewWallet.total, over the 13 runs sampled in #45266:So this is not an override of the process — it is the process running, roughly two months late. The monthly review the procedure calls for has not been happening, which is the second thing this ticket records.
Three gated metrics are downstream of the same ~37% per-iteration coin flip documented in #45266. Against a bimodal null, no threshold value is correct — a ceiling either sits in the gap between the two clusters and picks a side of the coin, or sits above the slow cluster and never fires at all. The metric is not noisy; it is not measuring one thing.
onboardingNewWallet.totalis the clearest case. Its p75 splits into a 2257–2300ms cluster and a 6858–10478ms cluster, and the 5460ms fail ceiling sits inside the 4558ms gap. Observed failure rate 11/14 = 79%, with no regression involved (#45205, #45266).They stay enforced today because #45266 is the fix and #45205 is the recalibration, and both are open. Neither is close, and in the meantime the gate is producing a red that carries no information about the commit.
Which metrics, and which stay
onboardingNewWallet.totalonboardingNewWallet.doneButtonToAssetListonboardingImportWallet.doneButtonToHomeScreenonboardingImportWallet.totalThe scope is wider than
onboardingNewWallet.totalalone because the coin flip is a step, and it is gated directly in both flows. Within-run sd is 3279ms foronboardingNewWallet.totalagainst 120ms foronboardingImportWallet.total; the import flow'stotalis a clean unimodal measurement and its 862ms between-run sd is a real calibration target, so it keeps its gate and stays with #45205.onboardingImportWallet.doneButtonToHomeScreenadditionally measures boundary placement rather than duration (planning#7531) — it has two independent reasons not to gate.Solution
Remove the three entries from
GATED_METRIC_VALUESintest/e2e/benchmarks/utils/gated-metrics.ts. Leave the threshold values inthresholds.tsuntouched so the metrics keep reporting into the PR comment and Sentry — this suppresses enforcement, not measurement, and #45266 needs the series to continue in order to confirm its fix.Add a comment at each removal naming #45266 as the condition for restoring it, so the removals are re-gated when the slow path is fixed rather than quietly becoming permanent.
Explicitly not proposed: relaxing the ceilings to swallow the slow cluster. A ceiling above 10478ms passes every observed run including any real regression up to ~5×, which converts an uninformative red into an uninformative green. Removal is the honest state, and it is visible in a way a widened threshold is not.
Acceptance Criteria
GATED_METRIC_VALUES;onboardingImportWallet.totalremains presentonboardingNewWallet.totallands in the slow cluster no longer fails the quality gateLabels
team-extension-platform,area-testSuite,area-CIDependencies
Blocked by: nothing — this is the interim state while the two below are open
Related: #45266 (the slow path; restoring these gates is its exit condition), #45205 (recalibration, which covers
onboardingImportWallet.total), planning#7531 (step boundaries)