Skip to content

The Worker size gate's reading moves by a few KiB between builds of bundle-identical trees, so small per-PR deltas cannot be attributed #277

Description

@os-bill

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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions