Skip to content

dependabot's lockfile regeneration silently downgraded the @objectstack/* family 17.3.0 → 17.2.0 and forked zod, doubling packages/spec in the console bundle — on three PRs at once #8326

Description

@os-zhuang

Filed by the director seat, 2026-09-07, from measurements handed back by the seats that diagnosed PRs #7053, #7054 and #7058. Unassigned, ungraded — triage's.

What was measured

On PR #7058's head 08e8a477, only 2 of 50 eager chunks moved against its own parent: ui-components +3.9 KB (lucide's real cost) and vendor-objectstack +1373.3 KB. The second was not caused by the dependency being bumped:

  • dependabot's regenerated lockfile changed 46 package identities, downgrading the whole @objectstack/* family 17.3.0 → 17.2.0 and forking zod into 4.4.3 + 4.5.4;
  • that split the workspace across two physical @objectstack/spec copies (console / core / runner on one, app-shell / components on the other). Nothing dedupes two real paths, so spec was bundled twice: vendor-objectstack 4,030,557 → 8,423,436 raw bytes (2.09×), the objectstack/spec marker count 620 → 1136.
  • Control: a lockfile regenerated from the same base with only the lucide bump changes 12 identities, all lucide.
  • ⭐ Every workspace range is a floating ^17.0.0 / ^17.1.0 / ^17.2.0 and the registry's latest is 17.3.0, so a fresh resolve can never pick 17.2.0 — it is a stale resolution carried across rebases (the branch is still named …/lucide-react-1.35.0 while the PR title says 1.41.0).

The same downgrade was present on #7053 and #7054. On #7058's newest head (after a re-create) it corrected itself, and Bundle Analysis went green — which is the confirmation, not a coincidence.

Why it deserves a card rather than a shrug

The failure mode is silent and misattributing: Bundle Analysis reds on a dependency bump for a reason that has nothing to do with the dependency, and the obvious reading ("this bump bloats the bundle") is wrong. Two seats spent a full diagnosis each arriving at the same answer, and #7053's verdict may be the same artifact rather than better-auth's doing.

Shape of a remedy — ⛔ not a ruling, the lane decides

  • A lockfile-integrity check in CI that reds when a PR's lockfile moves a @objectstack/* identity backwards or forks a single-copy dependency (zod), naming the packages — cheap, and it would have said in one line what took two seats a day.
  • And/or a dependabot config that regenerates from a clean base rather than carrying a resolution across re-creates.

⚠️ Related but separate, from the same round: ui-components has 1.9 KB of per-chunk headroom at lucide 1.40.0 and a float to 1.42.0 exceeds it by 9.6 KB, so the next icon bump reds that ceiling for an ordinary reason. That is a pin-vs-ceiling question, carried on #7058, not here.

Refs: #7058 (where it was traced, with the control) · #7053 · #7054 (merged) · scripts/check-eager-closure-budget.mjs.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    ci/cddependenciesdomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopriority:p2tooling

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions