Skip to content

deps(dashboard): settle the transitive advisory tail in one pass - #94

Merged
blitzcrieg1 merged 1 commit into
masterfrom
deps/transitive-tail
Aug 22, 2026
Merged

deps(dashboard): settle the transitive advisory tail in one pass#94
blitzcrieg1 merged 1 commit into
masterfrom
deps/transitive-tail

Conversation

@blitzcrieg1

Copy link
Copy Markdown
Owner

Replaces #93, #89 and #72, which could not converge.

Why not just merge the Dependabot PRs

Four packages, four PRs, one lockfile. Every merge invalidated the others: the remaining three went BLOCKED, rebased to CLEAN, then went BLOCKED again the moment one landed. Three more rebases would have raced identically.

What this does

@hono/node-server, brace-expansion and fast-uri are all transitive with no parent release available, so they are pinned forward with overrides once, together:

Package Resolved
@hono/node-server 1.19.17
brace-expansion 5.0.9
fast-uri 3.1.5

postcss is a direct devDependency and could not be overridden while the manifest said ^8, so it moves to ^8.5.23 there instead.

The one that stays open, and why

postcss keeps an alert, and the reason belongs in the file rather than as an unexplained red row.

next@15.5.21 pins postcss to exactly 8.4.31 and bundles its own copy:

postcss@8.4.31
node_modules/next/node_modules/postcss
  postcss@"8.4.31" from next@15.5.21

Forcing a version past a framework's exact pin is how a build breaks in a way nobody traces back to a dependency file. Dependabot's own answer was #91, which took Next 16 along with it: the third time today a major framework migration has arrived attached to an unrelated advisory, and the third time it has been declined.

This is build-time tooling in a static export. It goes when Next 16 goes, deliberately.

Recorded in the file

overridesNote now carries both decisions and the removal condition for each, so the next person finds the reasoning without going through git log.

Verified

  • npm ci from a clean slate: lockfile in sync
  • tsc --noEmit clean, lint clean
  • 99 tests pass
  • Static export builds both routes

🤖 Generated with Claude Code

Four packages had open advisories and no clean path. Dependabot opened one PR
each; every merge invalidated the others' lockfile, so the three that remained
went BLOCKED, rebased, went CLEAN, and went BLOCKED again as soon as one landed.
Three more rebases would have raced the same way.

@hono/node-server, brace-expansion and fast-uri are all transitive with no
parent release available, so they are pinned forward with overrides, once,
together. Resolved and checked: 1.19.17, 5.0.9, 3.1.5.

postcss took a different route. It is a direct devDependency and could not be
overridden while the manifest said ^8, so it moves to ^8.5.23 there instead.

postcss is also the one advisory that stays open, and the reason is worth
writing down rather than leaving as an unexplained red row. next 15.5.21 pins
postcss to exactly 8.4.31 and bundles its own copy. Forcing a version past a
framework's exact pin is how a build breaks in a way nobody traces back to a
dependency file, and this is build-time tooling in a static export. Dependabot's
own answer was to take Next 16 along with it, which is the migration that keeps
arriving attached to unrelated advisories and keeps being declined.

Both decisions are recorded in overridesNote so the next person finds the
reasoning and the removal condition in the file.

tsc clean, lint clean, 99 tests, static export builds.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@blitzcrieg1
blitzcrieg1 merged commit 9298b4a into master Aug 22, 2026
9 checks passed
@blitzcrieg1
blitzcrieg1 deleted the deps/transitive-tail branch August 22, 2026 20:53
@github-actions github-actions Bot locked and limited conversation to collaborators Aug 22, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant