Observation, filed unassigned from the #238 / PR #276 run. Not blocking anything — the gate works, the budget has ~2890 KiB of headroom, and every reading below is comfortably within it. What is worth recording is that the reading is not reproducible to better than a few KiB, which matters the first time someone reads a small delta as "my PR grew the bundle".
Three readings, and what differs between the trees behind them
| tree |
reading |
source |
0e26657f |
58553.98 KiB |
quoted in ci.yml's own calibration comment ("Verified on this branch, at 0e26657f") |
87880ba (main, push run #417, job 102095970086) |
58552.42 KiB |
computed from the step's Headroom to budget: 2887.58 KiB against the declared 61440 KiB budget |
PR #276 merge ref (87880ba + a two-line specifier change) |
58549.05 KiB |
the step's own Total Upload: 58549.05 KiB, measured 58549.05 / 89.34 % |
git diff --stat 0e26657f 87880ba is one file, .github/workflows/ci.yml — a workflow file, which cannot enter the Worker bundle. So the first two readings are taken over byte-identical bundle inputs and differ by 1.56 KiB.
PR #276 changes react-dom from 19.2.7 to ^19.2.7 and the matching lockfile specifier: line. No resolved version moves — react-dom stays 19.2.7(react@19.2.7) — so the installed dependency graph is identical too, and that reading is 3.37 KiB below main's.
Why it is worth a card
ci.yml's comment sets up the reading as a precise instrument: it records a 1.96 KiB agreement with the figure Cloudflare accepted, calls that 0.0033%, and concludes "the reading tracks the enforced figure". That is true of the accuracy against Cloudflare, and it is the right claim for the gate's actual job — is the bundle under the limit. It is silent on repeatability, and the three readings above suggest the noise floor for a diff-attribution question is a few KiB.
The consequence is narrow but real: a PR that moves the number by single-digit KiB has not been shown to have moved the bundle at all, and a PR whose real growth is under a few KiB is invisible. Anyone reasoning about a small delta needs a same-tree control run, not the previous commit's reading.
Not proposing a fix here — plausible causes (embedded absolute paths from differing runner temp directories, a build id, esbuild/OpenNext non-determinism) have not been measured, and the cheap first step is simply to re-run the gate twice on one unchanged commit and see how far apart the two readings land. Recording the observation so the next person does not have to re-derive it from three scattered log lines.
Related: #262 (the card that built the gate), PR #275 (where it landed), #238 / PR #276 (where this was noticed).
Observation, filed unassigned from the #238 / PR #276 run. Not blocking anything — the gate works, the budget has ~2890 KiB of headroom, and every reading below is comfortably within it. What is worth recording is that the reading is not reproducible to better than a few KiB, which matters the first time someone reads a small delta as "my PR grew the bundle".
Three readings, and what differs between the trees behind them
0e26657fci.yml's own calibration comment ("Verified on this branch, at0e26657f")87880ba(main, push run #417, job 102095970086)Headroom to budget: 2887.58 KiBagainst the declared 61440 KiB budget87880ba+ a two-line specifier change)Total Upload: 58549.05 KiB,measured 58549.05 / 89.34 %git diff --stat 0e26657f 87880bais one file,.github/workflows/ci.yml— a workflow file, which cannot enter the Worker bundle. So the first two readings are taken over byte-identical bundle inputs and differ by 1.56 KiB.PR #276 changes
react-domfrom19.2.7to^19.2.7and the matching lockfilespecifier:line. No resolved version moves —react-domstays19.2.7(react@19.2.7)— so the installed dependency graph is identical too, and that reading is 3.37 KiB below main's.Why it is worth a card
ci.yml's comment sets up the reading as a precise instrument: it records a 1.96 KiB agreement with the figure Cloudflare accepted, calls that 0.0033%, and concludes "the reading tracks the enforced figure". That is true of the accuracy against Cloudflare, and it is the right claim for the gate's actual job — is the bundle under the limit. It is silent on repeatability, and the three readings above suggest the noise floor for a diff-attribution question is a few KiB.The consequence is narrow but real: a PR that moves the number by single-digit KiB has not been shown to have moved the bundle at all, and a PR whose real growth is under a few KiB is invisible. Anyone reasoning about a small delta needs a same-tree control run, not the previous commit's reading.
Not proposing a fix here — plausible causes (embedded absolute paths from differing runner temp directories, a build id, esbuild/OpenNext non-determinism) have not been measured, and the cheap first step is simply to re-run the gate twice on one unchanged commit and see how far apart the two readings land. Recording the observation so the next person does not have to re-derive it from three scattered log lines.
Related: #262 (the card that built the gate), PR #275 (where it landed), #238 / PR #276 (where this was noticed).