Skip to content

fix(ci): close every open Dependabot alert - #77

Merged
Heiko-W merged 1 commit into
mainfrom
chore/dependabot-2026-09
Sep 6, 2026
Merged

fix(ci): close every open Dependabot alert#77
Heiko-W merged 1 commit into
mainfrom
chore/dependabot-2026-09

Conversation

@Heiko-W

@Heiko-W Heiko-W commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Seven alerts, six high. All build- or test-time packages — none reaches the browser bundle, and the bundle is byte-for-byte the same size afterwards. A compromised build chain is the supply side of the same threat, so they are closed rather than triaged away.

package from to parent's declared range
browserslist 4.28.5 / 4.28.6 4.28.9 ^4.24.0 — inside
fast-uri 3.1.5 3.1.7 ^3.0.1 — inside (the existing pin was one patch short)
esbuild 0.27.7 0.28.2 ^0.27.0outside, see below

The one that was open on purpose

SECURITY.md recorded esbuild GHSA-g7r4-m6w7-qqqr as a deliberate exception, and the reasoning was sound: the fix is 0.28.1 and tsup@8.5.1 declares ^0.27.0. tsup is still 8.5.1 and still declares ^0.27.0 — what changed is the measurement, not the upstream.

vite, the toolchain that builds the shipped bundle, declares esbuild as an optional peer at ^0.27.0 || ^0.28.0 and carries ^0.28.1 in its own devDependencies. That leaves tsup as the sole objector, and tsup's job here is build:libs for the three workspace packages. Verified rather than assumed, because a 0.x minor is breaking by convention: build:libs on 0.28.2 emits byte-identical output (jmap ESM 89.10 KB, DTS 216.45 KB, map 337.49 KB — the same three numbers as on 0.27.7) and the full gate passes, dist contract and size budget included.

Nothing was dismissed. SECURITY.md §5 now states there are no open alerts, and the override carries a note to drop it the moment tsup declares ^0.28.

A flake, measured instead of re-run

The gate that ran these updates failed once on the B61 rail test, and four isolated re-runs were green. Rather than call it and move on: it took its baseline the moment the first Inbox row was visible, and this suite signs in with two delegated accounts — so there are three Inbox rows (alice at y=93, the shared ones at y=389 and y=481) whose sections arrive one sync pass apart, each moving the rows above it. The failing baseline was 224, which is not where any of the three ends up. It was a value from the middle of the settling. It now waits for the row to hold still.

The assertion still has teeth — moved above the folder list, the card takes the Inbox row from y=93 to y=215 and the test goes red.

pnpm gate green: 5 952 unit, 20 integration, 255 e2e, 293.64 kB gz.

Seven alerts, six of them high. All are build- or test-time packages --
none reaches the browser bundle, and the bundle is byte-for-byte the
same size afterwards -- but a compromised build chain is the supply
side of the same threat, so they are closed rather than triaged away.

  browserslist  4.28.5/4.28.6 -> 4.28.9   (@babel/helper-compilation-targets wants ^4.24.0)
  fast-uri      3.1.5         -> 3.1.7    (ajv@8.20.0 wants ^3.0.1; the existing pin was one patch short)
  esbuild       0.27.7        -> 0.28.2   (see below)

esbuild is the one that had been left open on purpose since 2026-08-18,
and the reasoning in SECURITY.md was sound at the time: the fix is
0.28.1, tsup@8.5.1 declares ^0.27.0, and an override would step outside
a declared range. tsup is still 8.5.1 and still declares ^0.27.0, so
what changed is the measurement, not the upstream.

vite -- the toolchain that builds the shipped bundle -- declares esbuild
as an optional peer at `^0.27.0 || ^0.28.0` and carries ^0.28.1 in its
own devDependencies. That leaves tsup as the sole objector, and tsup's
job here is `build:libs` for the three workspace packages. Verified
rather than assumed, because a 0.x minor is breaking by convention:
build:libs on 0.28.2 emits byte-identical output (jmap ESM 89.10 KB,
DTS 216.45 KB, map 337.49 KB -- the same three numbers as on 0.27.7),
and the full gate passes including the dist contract and the size
budget. Nothing was dismissed.

Also hardens the B61 rail test, which failed once in the gate that ran
these updates and was green on four isolated re-runs -- the shape of a
race, and worth the measurement rather than a re-run. It took its
baseline as soon as the first Inbox row was visible. This suite signs in
with two delegated accounts, so there are THREE Inbox rows (alice at
y=93, the shared ones at y=389 and y=481) whose sections arrive one sync
pass apart, each moving the rows above it. The failing baseline was 224
-- not where any of the three ends up, i.e. a value from the middle of
the settling. It now waits for the row to hold still before measuring.
The assertion still has teeth: moved above the folder list, the card
takes the Inbox row from y=93 to y=215 and the test goes red.
@Heiko-W
Heiko-W merged commit ea9fe47 into main Sep 6, 2026
2 checks passed
@Heiko-W
Heiko-W deleted the chore/dependabot-2026-09 branch September 6, 2026 13:01
@Heiko-W Heiko-W mentioned this pull request Sep 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant