Skip to content

fix(ci): record @slopus/happy-wire under devDependencies in the lockfile - #1663

Open
chphch wants to merge 1 commit into
slopus:mainfrom
chphch:fix/lockfile-happy-wire-devdependencies
Open

fix(ci): record @slopus/happy-wire under devDependencies in the lockfile#1663
chphch wants to merge 1 commit into
slopus:mainfrom
chphch:fix/lockfile-happy-wire-devdependencies

Conversation

@chphch

@chphch chphch commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

main is red at the install step

pnpm install --frozen-lockfile fails on main as of 3876770, so CI stops before any check runs — on main itself and on every PR opened against it.

ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because
pnpm-lock.yaml is not up to date with <ROOT>/packages/happy-cli/package.json

Failure reason:
  "devDependencies" in the lockfile ({"@eslint/compat":…}) doesn't match the
  same field in package.json ({"@eslint/compat":"^1",
  "@slopus/happy-wire":"workspace:*", …})

Cause

e7e0ff6 moved @slopus/happy-wire from dependencies to devDependencies in packages/happy-cli/package.json — which is the right fix for the DOA 1.2.1-beta.0, since dependencies is pkgroll's externals policy. The lockfile still records it under dependencies for that importer, and pnpm compares the two field by field.

The change

The three lockfile lines move from dependencies to devDependencies. Nothing else changes — resolution is link:../happy-wire either way; only the field recording it moves.

A plain pnpm install --lockfile-only regeneration also clears the mismatch, but it drags in unrelated churn from re-resolved floating ranges — +76/-96 on my machine, including a typescript resolution moving 5.9.3 → 6.0.3 under @prisma/client. That did not belong in a CI unblock, so the entry is moved by hand.

Verification

Clean checkout, pinned pnpm 10.11.0 (the packageManager version):

  • pnpm install --frozen-lockfile on 3876770ERR_PNPM_OUTDATED_LOCKFILE
  • same command on this branch → Done in 13.4s, exit 0
  • the install leaves pnpm-lock.yaml byte-identical afterwards (no drift hiding in it)
  • packages/happy-wire and packages/happy-cli both build clean
  • packages/happy-cli/dist carries no import or require of @slopus/happy-wire — the only occurrences are the bundled copy of package.json's own text — so the inlining e7e0ff6 was after still holds with the entry in devDependencies

For cross-reference: main's own CLI Smoke Test is failing on 3876770 and passing on 9ac022f, which brackets the change.

e7e0ff6 moved `@slopus/happy-wire` from `dependencies` to `devDependencies`
in packages/happy-cli/package.json, but pnpm-lock.yaml still records it under
`dependencies` for that importer. `pnpm install --frozen-lockfile` compares the
two field by field and refuses:

    ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with "frozen-lockfile" because
    pnpm-lock.yaml is not up to date with <ROOT>/packages/happy-cli/package.json

    Failure reason:
      "devDependencies" in the lockfile (…) doesn't match the same field in
      package.json (… "@slopus/happy-wire": "workspace:*" …)

CI sets frozen-lockfile by default, so this fails at the install step — before
any check runs — on main and on every PR opened against it.

This moves the three lockfile lines and changes nothing else. Resolution is
untouched (`link:../happy-wire` either way); only the field recording it moves.
A plain `pnpm install --lockfile-only` regeneration also fixes the mismatch but
drags in unrelated churn from re-resolved floating ranges (+76/-96 here,
including a typescript resolution bump), so the entry is moved by hand instead.

Verified on a clean checkout with the pinned pnpm 10.11.0:
`pnpm install --frozen-lockfile` fails on 3876770 and succeeds with this
change; the install leaves the lockfile untouched afterwards; happy-wire and
happy-cli both build, and the published bundle carries no import or require of
@slopus/happy-wire, so the inlining e7e0ff6 was after still holds.
@chphch

chphch commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

@bra1nDump heads-up, since this one blocks you rather than me: main is red at the install step, so it lands before any check gets to run.

e7e0ff6b moved @slopus/happy-wire to devDependencies in packages/happy-cli/package.json — right call, dependencies is pkgroll's externals policy — but pnpm-lock.yaml still records it under dependencies for that importer, and pnpm compares the two field by field. Repro on a clean checkout of 3876770:

pnpm install --frozen-lockfile
→ ERR_PNPM_OUTDATED_LOCKFILE  ... "devDependencies" in the lockfile doesn't
  match the same field in package.json

main's own CLI Smoke Test went from green on 9ac022f to red on 3876770, and every PR opened against main dies at "Install dependencies" — #1581 included.

This PR moves the three lockfile lines and changes nothing else; resolution stays link:../happy-wire either way. I did it by hand rather than regenerating, because pnpm install --lockfile-only also clears the mismatch but drags in +76/-96 of unrelated churn from re-resolved floating ranges, including a typescript resolution moving 5.9.3 → 6.0.3 under @prisma/client — not something to smuggle into a CI unblock.

Verified with the pinned pnpm 10.11.0: fails on 3876770, Done in 13.4s on this branch, install leaves the lockfile untouched afterwards, and happy-cli/dist still carries no import/require of @slopus/happy-wire, so the inlining you were after holds with the entry in devDependencies. All three checks green here.

No ask beyond this one — happy to close it if you'd rather regenerate the lockfile yourself.

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