Skip to content

bun install fails on main: bun.lock missing resolution entry for @types/bun (blocks Lint (Javascript) on all PRs) #2691

Description

@acoliver

Summary

bun install fails on a pristine checkout of main. The lockfile declares @types/bun as a root dev dependency but contains no resolved entry for it in the packages section, so Bun rejects the whole lockfile.

This currently fails the Lint (Javascript) CI job on every open PR, which in turn skips the entire test matrix (the test job needs lint). Effectively no PR can get a green test run right now.

Reproduction

On a clean worktree of main with no local modifications:

git worktree add /tmp/x main
cd /tmp/x
bun install

Output:

bun install v1.3.14 (0d9b296a)
5 |     "": {
            ^
error: Failed to resolve root dev dependency '@types/bun'
    at bun.lock:5:9
InvalidPackageInfo: failed to parse lockfile: 'bun.lock'
warn: Ignoring lockfile

Bun then falls back to full resolution ("Ignoring lockfile"), which is why some jobs still succeed -- but the CI step is bun install && git checkout -- bun.lock, and the nonzero parse failure surfaces as a job failure.

Root cause

In bun.lock, @types/bun appears only as a version constraint under the root workspace devDependencies:

line 122:  "@types/bun": "1.3.14",

There is no corresponding resolution entry in the packages section. Compare @types/debug, which has both:

line 123:   "@types/debug": "^4.1.12",            <- constraint
line 1409:  "@types/debug": ["@types/debug@4.1.13", ...  <- resolution

A grep for a packages-section entry returns nothing:

grep -n '^\s*"@types/bun"' bun.lock
122:        "@types/bun": "1.3.14",

The package itself is fine on the registry -- npm view @types/bun@1.3.14 version returns 1.3.14, so this is not a yank.

@types/bun was introduced to both package.json and bun.lock in 91e7462 (#2484, "Add Bun/Vitest compatibility shim for bun test runner").

Evidence of impact

Lint (Javascript) across recent CI runs:

30161918570  issue2666  failure
30161800840  issue2688  failure
30161750618  issue2666  failure
30161381617  issue2666  failure
30161260726  issue2683  failure
30160640260  issue2654  success
30158327063  issue2654  success

Recent main runs:

30146622275  6bc801020  2026-07-25T05:56:15Z  success
30130688588  3a12f02e5  2026-07-24T22:21:18Z  success

So main was green earlier and every current PR branch now fails, on branches touching completely unrelated code. Confirmed reproducible on a pristine main worktree, so it is not specific to any PR.

Suggested fix

Regenerate the lockfile so the resolution entry is present:

rm bun.lock && bun install

Then verify bun install exits 0 against the committed lockfile on a clean checkout, and that all 16 workspaces resolve.

Note per dev-docs/bun.md that bun install --frozen-lockfile is not usable in this monorepo; the CI smoke uses plain bun install.

Context

Found while working #2688. Not caused by that PR -- it modifies only .github/workflows/ci.yml and two files under scripts/tests/, and touches no dependency manifest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions