Skip to content

Three CI jobs run bare bun install while the rest use --frozen-lockfile — deliberate, or drift? #295

Description

@iceteaSA

Filing this as a question rather than a bug, because either answer is defensible and I cannot tell which one is intended.

.github/workflows/ci.yml installs two different ways:

job line install
check-plugin 48 bun install
check-pi-plugin 104 bun install
check-dashboard 129 bun install
(later steps) 160, 193, 233, 298 bun install --frozen-lockfile

bun.lock is committed, so the three unpinned jobs are free to resolve outside it while everything after them is not.

Why I noticed

It produced a real green-local/red-CI split for me. Biome is declared ^2.5.1 in all four package manifests and pinned to 2.5.1 in bun.lock. CI's unpinned install floated it to 2.5.7, whose formatter disagrees with 2.5.1 — Check (plugin) failed on lint with 19 errors, none in any file the PR touched, and the same commit was clean locally. Reproduced by installing 2.5.7 locally against clean master: 19 errors, versus 1 on 2.5.1. Same failure appeared on unrelated PRs at the time, which is what pointed at the toolchain rather than the changes.

The general shape: a patch release of any linter/formatter/type-checker in the ^ range can turn CI red on a commit that changes nothing relevant, and the failure surfaces on whichever PR happens to be open.

The case for leaving it

Floating on the check jobs is an early-warning system — you learn about a breaking toolchain patch from your own CI rather than from a contributor's PR. If that is the intent, this issue is just a note and can be closed; a comment on those three steps saying so would save the next person the same investigation.

The case for pinning

Reproducible CI, and toolchain upgrades become explicit lockfile commits rather than surprises attributed to whoever pushed that day. The cost is losing the early warning, which a scheduled job running unpinned would recover without putting it in every PR's path.

Happy to send the one-line PR if you want the three lines pinned. Not sending one unprompted, since I would be changing a policy rather than fixing a defect.

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