@@ -97,6 +97,19 @@ bytes respectively. Initial CSS/fonts and every unrelated route/runtime budget
9797remain unchanged. A clean pinned enforcing run on the final exact head remains
9898required before release.
9999
100+ The fresh-runner confirmation topology was added after PR run
101+ [ ` 33616707003 ` ] ( https://github.com/mex-memory/mex/actions/runs/33616707003 )
102+ and integration push run
103+ [ ` 33619416840 ` ] ( https://github.com/mex-memory/mex/actions/runs/33619416840 )
104+ produced materially different Graph, Wiki, and Search failure sets for Git
105+ commits with the same tree SHA
106+ ` 950182277ee98719ec6971618cb83b597323e468 ` . The earlier confirmation logic
107+ started two child processes back-to-back on one hosted VM, so sustained host
108+ contention could satisfy both sides of the exact-metric rule. This hardening
109+ changes only confirmation allocation and provenance: ` budgets.json ` , sample
110+ counts, material thresholds, category floors, and calibration formulas remain
111+ byte-for-byte unchanged.
112+
100113## Runner contract
101114
102115` npm run benchmark:release ` builds the package and writes the bounded JSON
@@ -178,18 +191,31 @@ Deterministic failures remain immediate: built-asset bytes, outbound requests,
178191database-to-input ratios, and any unknown runtime metric never receive a retry.
179192The read and maintenance nonmutation contracts likewise remain ordinary hard
180193tests. A first pass containing only wall-clock, RSS, CPU, or browser-heap
181- breaches triggers one independent full benchmark pass on the same pinned
182- runner and exact repository HEAD only when at least one crossing could still
183- become material. A crossing is potentially material when its p95 is strictly
184- above the material threshold and at least two of its raw samples are also
185- strictly above that threshold. If every first-pass crossing is below the
186- threshold or has fewer than two supporting samples, enforcement records the
187- advisories and passes without spending another full benchmark run. CI fails a
188- noisy metric only when that exact metric breaches again, both p95 measurements
189- exceed its material threshold, and both attempts have at least two supporting
190- raw samples. This avoids treating the single maximum selected by nearest-rank
191- p95 over either ten timing samples or five memory samples as
192- distribution-level evidence. The committed p95 budgets remain the raw
194+ breaches requests one independent full benchmark pass only when at least one
195+ crossing could still become material. In CI that conditional confirmation runs
196+ in a separately allocated Ubuntu 24.04 hosted job, not as another process on
197+ the first job's VM. Both jobs measure the exact same repository HEAD and pinned
198+ Node version; a final fail-closed aggregation job validates their bounded raw
199+ reports and runner-allocation records before applying the existing exact-metric
200+ rule. A missing, malformed, same-runner, or different-HEAD confirmation is an
201+ operational failure rather than a pass. The local ` npm run benchmark:release `
202+ command remains self-contained and uses its existing in-process orchestration.
203+ Producer-specific artifact identities allow GitHub's failed-only rerun to reuse
204+ valid evidence from an earlier attempt of the same workflow run. Aggregation
205+ accepts only the same run and SHA, nondecreasing producer attempts, and evidence
206+ no newer than the finalizer attempt.
207+
208+ A crossing is potentially material when its p95 is strictly above the material
209+ threshold and at least two of its raw samples are also strictly above that
210+ threshold. If every first-pass crossing is below the threshold or has fewer
211+ than two supporting samples, enforcement records the advisories and passes
212+ without allocating a confirmation runner. CI fails a noisy metric only when
213+ that exact metric breaches on the fresh confirmation runner, both p95
214+ measurements exceed its material threshold, and both attempts have at least two
215+ supporting raw samples. This avoids treating the single maximum selected by
216+ nearest-rank p95 over either ten timing samples or five memory samples as
217+ distribution-level evidence, while preventing one contended VM from supplying
218+ both sides of the confirmation. The committed p95 budgets remain the raw
193219alert/crossing line and are not recalibrated. For each exact metric key, the
194220blocking threshold is
195221` budget + max(15% of budget, minimum excess) ` :
@@ -217,16 +243,20 @@ inconsistent raw sample evidence, are never retried as budget noise.
217243Enforcement exits 0 for a pass, 1 for a budget failure, and 2 when a pass cannot
218244produce a valid bounded report.
219245
220- The dedicated ` release-performance ` CI job installs Chromium on the pinned
221- runner, enforces the budgets, and retains the final report plus both attempt
222- reports when confirmation was required. It also retains the first raw attempt
223- when advisory sample support makes a second pass unnecessary. Runtime
224- candidates in that report are ` ceil(p95 * 1.15) ` independently for each fixture profile,
225- route, read, and maintenance operation. The committed values are copied exactly
226- from the first healthy retained pinned report; its enforcing rerun must pass
227- before Checkpoint A is considered green. Future recalibration uses the same
228- retained-report workflow. Do not derive runtime limits from an unpinned local
229- run or collapse fixture profiles into one worst-case envelope.
246+ The dedicated CI topology uses ` release-performance-attempt-1 ` , a conditional
247+ ` release-performance-attempt-2 ` , and the final required
248+ ` release-performance ` aggregation job. Each measuring job installs Chromium on
249+ the pinned image and retains its raw report and bounded decision manifest for
250+ 14 days. The final job retains the combined report; it runs even if a producer
251+ was cancelled or failed so missing evidence cannot silently skip the gate. The
252+ first raw attempt is still retained when advisory sample support makes a second
253+ runner unnecessary. Runtime candidates in that report are ` ceil(p95 * 1.15) `
254+ independently for each fixture profile, route, read, and maintenance operation.
255+ The committed values are copied exactly from the first healthy retained pinned
256+ report; its enforcing rerun must pass before Checkpoint A is considered green.
257+ Future recalibration uses the same retained-report workflow. Do not derive
258+ runtime limits from an unpinned local run or collapse fixture profiles into one
259+ worst-case envelope.
230260
231261The report is capped at 2 MiB. Response bodies, child-process diagnostics,
232262recorded request paths, asset lists, and violation lists also have explicit
0 commit comments