chore(deps): update all non-major dependencies - #149
Conversation
dawsontoth
left a comment
There was a problem hiding this comment.
The bumps are fine — the lockfile is regenerated wrong
All three red checks (Lint, Format, Test) are the same failure: npm ci dies before any of them runs. This is the --package-lock-only landmine, not a problem with any dependency in this PR.
What's wrong
This branch touches only package-lock.json (package.json is untouched), and it is a net deletion: 836 insertions, 4657 deletions. It drops 249 lockfile entries — the entire react-native subtree that hangs off harper → alasql:
node_modules/harper/node_modules/alasql --[optionalDependencies]--> react-native-fs
main has 8 node_modules/react-native* entries; this branch has 0. So npm ci refuses the tree:
npm error code EUSAGE
npm error `npm ci` can only install packages when your package.json and package-lock.json are in sync.
npm error Missing: react-native-fs@2.20.0 from lock file
npm error Missing: react-native@0.84.1 from lock file
npm error Missing: @react-native/codegen@0.84.1 from lock file
... (~148 more from the same subtree)
Reproduced locally on Node 24.19.0 / npm 11.17.0 — identical output to CI.
The trigger is the harper 5.2.1 → 5.2.2 bump in this PR. Renovate regenerates the lockfile with --package-lock-only, which resolves harper's subtree without ever installing it, and alasql's optional react-native-fs dependency is dropped on the floor.
The intended changes are all fine
Filtering out the erroneous deletions, this PR means to bump 22 packages, all routine:
| package | change |
|---|---|
@commitlint/* |
21.2.0/21.2.1 → 21.2.2 |
harper |
5.2.1 → 5.2.2 |
puppeteer, puppeteer-core |
25.5.0 → 25.7.0 |
modern-tar |
0.7.6 → 0.8.4 |
hono |
4.13.1 → 4.13.2 |
devtools-protocol |
0.0.1653615 → 0.0.1666840 |
argon2 (under harper) |
0.44.0 → 0.45.1 |
node-addon-api (under harper) |
8.6.0 → 8.9.1 |
I verified these are good by regenerating the lockfile properly and running the full suite:
npm install # restores the 8 react-native entries
npm ci # exit 0
npm run lint # exit 0
npm run format # exit 0
npm run build # exit 0 (note: CI has no build job — checked manually)
npm run test # exit 0 53 files, 345 tests passing
So there is nothing to fix in the dependency set — only in how the lockfile was produced.
The fix
Regenerate this lockfile with a full install rather than --package-lock-only. In renovate.json:
"postUpdateOptions": ["npmDedupe"],
"skipInstalls": falseskipInstalls: false is the operative setting — it forces a real npm install, which walks optional dependencies and keeps the react-native-fs subtree.
This is the same root cause as the harper bump that blocked agent#141, and it is hitting HarperFast/vite#39 right now for the identical reason (also an npm repo bumping harper to 5.2.2). Worth fixing at the Renovate-config level in both repos rather than per-PR — studio bumps harper too and is unaffected only because pnpm resolves optional deps differently.
Requesting changes so this doesn't land a lockfile that npm ci rejects. Not pushing to the branch, so Renovate keeps its normal rebase loop.
🤖 Verified locally by Claude Opus 5 via scheduled Renovate triage
Correction:
|
| how | react-native entries after |
|---|---|
npm update harper --package-lock-only (npm 11.17.0) |
6 — kept |
npm update harper full install (npm 11.17.0) |
6 — kept |
npm update harper --package-lock-only (npm 10.9.3) |
6 — kept |
npm install --omit=optional --package-lock-only |
6 — kept |
npm install --omit=optional full |
6 — kept |
All exit 0, all preserve the subtree, and the npm-10-generated lockfile is even accepted by npm ci under npm 11. So plain npm does not prune this on its own, under either major, in either mode.
What is still solid
Everything I measured directly stands:
- The branch lockfile is missing the subtree that the base has, and
npm cifails withEUSAGEunder npm 11 (Node 24/26) while npm 10 (Node 22) accepts it — which is the whole of the matrix split. - A full
npm installon the branch restores the subtree, after whichnpm ci, lint, format, build, and the test suite all pass. The dependency bumps themselves are fine.
What changes about the ask
The immediate unblock is unchanged: commit a full-install regeneration of the lockfile (same remedy that fixed agent#141 / vite#37 on 08-13). What I got wrong is implying a config change would prevent a recurrence — that config is already there and didn't.
So the real follow-up is a genuine root-cause hunt on the Renovate side, not another config toggle. Worth checking:
- which npm version Renovate's runner actually uses, and whether its lockfile write path differs from the CLI equivalents above
- whether the optional subtree fails to fetch/build in Renovate's container (
react-native-fsand theargon2/node-addon-apibumps in this same PR are native), leaving it recorded as absent - Renovate's repository cache — a stale cached tree from before the 08-13 regen would explain the subtree being dropped again on every re-resolve, and would explain why I can't reproduce it from the committed base
I'd start with Renovate's debug log for this branch's lockfile step; that names the command and npm version and would settle it quickly.
Requesting-changes state is unchanged — the branch still can't be installed with npm ci. Apologies for the misdirection on the fix.
🤖 Verified locally by Claude Opus 5 via scheduled Renovate triage
cf4df6e to
b87aeff
Compare
Regenerates package-lock.json on top of current main, taking over Renovate PR #149 (its lockfile conflicted after main advanced). Updates: - @commitlint/cli 21.2.1 -> 21.2.2 - @commitlint/config-conventional 21.2.0 -> 21.2.2 - harper 5.2.1 -> 5.2.2 - hono 4.13.1 -> 4.13.2 - puppeteer 25.5.0 -> 25.8.0 All in-range (package.json unchanged). puppeteer lands on 25.8.0 rather than the 25.7.0 Renovate originally proposed, as a newer non-major patch released since; build, lint, format, and the 345 unit tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
b87aeff to
9d5060e
Compare
## [0.16.42](v0.16.41...v0.16.42) (2026-08-17) ### Dependency Updates * **deps:** update all non-major dependencies ([5dd8e0e](5dd8e0e)), closes [#149](#149)
Taken over from Renovate and rebuilt on top of current
main(the original branch's lockfile conflicted after main advanced). Lockfile-only, non-major bumps —package.jsonis unchanged since every target is already in-range.@commitlint/cli@commitlint/config-conventionalharperhonopuppeteerpuppeteerlands on25.8.0rather than the25.7.0Renovate originally proposed — a newer non-major patch published since the PR was opened, and the latest in-range.Verification
Regenerated the lockfile with
npm update(the five packages above) against currentmain, then ran the full gate on Node 24:npm run build(tsup ESM +--dts) → successnpm run lint(oxlint) → cleannpm run format(dprint) → cleannpm test(vitest) → 53 files, 345 tests passedReview coverage
Authored by Claude (Opus 4.8). Mechanical lockfile-only dependency bump, validated by the full CI gate (lint, format, build, test, commitlint); no cross-model review run.