Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
|
Claude finished @ovr's task in 7m 18s —— View job Review: solid, well-sequenced dependency PR — 2 medium, 2 low, 1 verification gapFull review
What I checkedThe interesting surface here isn't the lockfile churn, it's the handful of major bumps on packages with real call sites. I traced each one to its consumer:
Dead-code removals all verified clean: no remaining references to Lockfile/manifest consistency spot-checked: every new range resolves (
FindingsMedium — Medium — the Aurora driver's Low — stale Low — Verification gap — GCS v8 (thread). The export-bucket paths ( Praise23 commits that each do one thing and each got verified before the next went on is the right shape for a PR this size, and it's what made this reviewable at all. Adding no new No prior review threads existed on this PR, so nothing to resolve or dedupe against. |
| "dependencies": { | ||
| "@cubejs-backend/shared": "1.7.37", | ||
| "@octokit/core": "^3.2.5", | ||
| "@octokit/core": "^5.2.2", |
There was a problem hiding this comment.
@octokit/core 3 → 5 silently drops proxy support for the release lookup.
js-wrapper/src/download.ts:19-24 passes request.agent = await getHttpAgentForProxySettings(), which is a proxy-agent http.Agent.
- On master,
@octokit/core@3→@octokit/request@5.6.3, which depends onnode-fetch@^2.6.7and forwardsagent— soHTTP_PROXY/HTTPS_PROXYwas honored. - With
@octokit/core@5.2.2→@octokit/request@8.4.1(nonode-fetch/undicidep — it uses globalfetch), theagentoption is no longer forwarded; nativefetchignores it.
@octokit/types still declares agent?: unknown on RequestRequestOptions, so this compiles and typechecks and fails only at runtime, for users behind a proxy, on the 404 fallback path that resolves release metadata. The primary downloadAndExtractFile path is unaffected, which makes it easy to miss.
Fix direction: pass a custom request.fetch that applies an undici ProxyAgent as dispatcher (add a helper alongside getHttpAgentForProxySettings), or leave @octokit/core on 3 in this commit if the fetch-based proxy plumbing is out of scope for a dependency PR.
Also engines (line 7-9) still claims ^12.0.0 || ^14.0.0 || >=16.0.0; @octokit/core@5 requires Node ≥ 18. Worth aligning with the >=20.0.0 the other packages declare.
There was a problem hiding this comment.
Re-checked on the current head: still live. rust/cubestore/package.json:45 is still "@octokit/core": "^5", and js-wrapper/src/download.ts:23 still passes request: { agent: await getHttpAgentForProxySettings() }, which @octokit/request@8's native-fetch transport ignores. Leaving open.
| "body-parser": "^1.19.0", | ||
| "chrono-node": "2.6.2", | ||
| "express": "^4.21.1", | ||
| "express": "^4.22.2", |
There was a problem hiding this comment.
Bumping express to ^4.22.2 doesn't clear GHSA-6rmr-r4mv-pfrv, because the vulnerable qs copy is the one express itself uses for req.query.
The lockfile currently ends up with two qs trees:
qs@^6.15.2, qs@^6.5.1, qs@~6.16.0→6.16.0(patched — this is whatbody-parser@1.20.8floated to)qs@~6.15.1→6.15.3(still affected — this is express 4.22.2's own pin)
So body parsing is fixed but query-string parsing is not, and req.query is the surface the advisory is about. Every /v1/* handler that reads req.query still goes through 6.15.3.
On the recorded blocker for forcing qs to ^6.16.0 — two api-gateway tests coming back 401 on /v1/meta and /v1/sql — that explanation doesn't hold up. Auth in this package never touches the query string; extractAuthorizationHeaderWithSchema (src/gateway.ts:2861) reads only headers:
const authHeader = req.headers?.['x-cube-authorization'] || req.headers?.authorization;There is no query-param token fallback anywhere in the checkAuth path, so a qs minor cannot plausibly turn a 200 into a 401. That points at something else — a stale dist/ build, a resolution that also moved a transitive dep those tests depend on, or a test fixture that happens to construct requests oddly — rather than at qs itself.
Worth root-causing before accepting the express bump as the fix: if the 401s turn out to be unrelated (which the header-only auth path suggests), the resolutions entry pinning qs to ^6.16.0 can go in and actually close the alert. If they are real, the cause should be written down, because as it stands the advisory stays open with no tracked reason.
0b89a71 to
8f1f5b1
Compare
8f1f5b1 to
3ea007d
Compare
Reviewing PR #11853
|
|
Claude finished @ovr's task in 9m 11s —— View job Review complete — no blockers; 1 medium carried over in an open thread, 2 low posted inlineFull review
FindingsMedium — already open as a thread, not re-posted. Low — Low — What checked out
Verification I could not doNo Review threadsThe listing returned 6 of my own threads, all unresolved, no human-authored ones. Resolved 3 — two withdrawn (the aurora |
| "jest": "^29", | ||
| "should": "^13.2.3", | ||
| "testcontainers": "^10.28.0", | ||
| "testcontainers": "^12.1.0", |
There was a problem hiding this comment.
The testcontainers 10 → 12 bump drops Compose v1 support, and none of the five Compose-based driver suites are in the verified list.
Evidence in the lockfile: the compose wrapper went docker-compose@^0.24.8 → docker-compose@^1.4.2 (yarn.lock:11071), whose 1.x default is the docker compose v2 plugin rather than the standalone docker-compose v1 binary. Every DockerComposeEnvironment call site therefore now requires the v2 plugin on the host:
packages/cubejs-pinot-driver/test/Pinot.test.ts:43packages/cubejs-mongobi-driver/test/MongoBiDriver.test.ts:15packages/cubejs-trino-driver/test/integration/trino-driver.test.ts:39packages/cubejs-prestodb-driver/test/integration/presto-driver.test.ts:39packages/cubejs-druid-driver/test/druid-driver.test.ts:33
The PR's Docker-backed runs cover postgres-driver, mysql-driver, cubestore and mysql-aurora-serverless-driver — all GenericContainer paths, none of them Compose. yarn tsc proves the Compose types still line up but says nothing about the runtime, and the failure mode is a host-level "compose not found" that only appears where these suites actually run. Worth running one of them (druid is the cheapest) before merge, or confirming the runner image ships the v2 plugin.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #11853 +/- ##
=======================================
Coverage 60.57% 60.57%
=======================================
Files 246 246
Lines 19694 19694
Branches 4019 4019
=======================================
Hits 11930 11930
Misses 7200 7200
Partials 564 564
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
24f916a to
e31546c
Compare
|
Claude finished @ovr's task in 8m 43s —— View job Review round complete — no new inline findings; 1 medium re-affirmed, 1 description/diff mismatchFull review
Description no longer matches the diffThree of the described wins are not in this branch:
So the 63-closed / 87-open table overstates what this branch does. Worth re-running the alert count against the current head, or restoring the dropped commits. Re-affirmed:
|
| check | result |
|---|---|
| changed manifest ranges vs lockfile keys | every one resolves: express@^4.22.2→4.22.2, testcontainers@^12.1.0→12.1.0, @testcontainers/kafka@~12.1.0→12.1.0, xmlbuilder2@^4.0.3→4.0.3, js-cookie@^3.0.7→3.0.8, @octokit/core@^5.2.2→5.2.2, lodash@^4.18.0→4.18.1 |
testcontainers duplication |
single testcontainers@^12.1.0 entry; all 14 declaring manifests moved together, none left on ^10 |
| lockfile additions | all 93 resolved lines point at registry.yarnpkg.com, all carry integrity |
@octokit/core@5 CJS-safe |
yes — deps still before-after-hook ^2 / universal-user-agent ^6; the ESM-only move is core 6, so require() from the compiled CJS wrapper is fine |
| express transitives | body-parser 1.20.8, qs 6.15.3, cookie 0.7.2, path-to-regexp 0.1.13 — all patched; no wildcard/regex route patterns in cubejs-api-gateway/src or cubejs-server/src, so the path-to-regexp pin can't shift routing |
js-cookie 2 → 3 |
only cookie.get / cookie.remove are used (packages/cubejs-playground/src/events.ts:29,32), both unchanged in v3 |
cypress-plugin-snapshots removal |
both removed imports were already commented out; the remaining toMatchSnapshot calls are Jest, not Cypress |
dependabot.yml |
strictly better — packages/package.json does not exist, so the old directory: "/packages" was a no-op; / plus root workspaces: ["rust/*", "packages/*"] is what actually covers the manifests, and all four new directories exist and carry a lockfile |
| Node floor | testcontainers 12 / xmlbuilder2 4 need ≥20; .nvmrc is 24.18.0 and every workflow pins 24 |
Nit, not posted inline: packages/cubejs-testing/cypress/support/e2e.ts:16-17 is left with a double blank line where the commented-out import was.
Not verified: no node_modules and no registry access in this run, so yarn install --frozen-lockfile and the testcontainers 10→12 API surface were reviewed statically only. The compose-based path is covered by the aurora-serverless run the PR reports; the druid/mongobi/pinot/prestodb/testing-drivers compose suites are not in that list.
Review threads
Listing returned 5 of my own threads. Resolved 1 (@ant-design/compatible CSS-removal risk on App.tsx — the removal is no longer in the diff, so there is no CSS change left to regress). Re-affirmed 4 as still live: the @octokit/core proxy regression (this round's finding folded into it rather than a second thread), the missing open-pull-requests-limit on dependabot.yml, qs@~6.15.1→6.15.3 with no root qs resolution, and testcontainers@^12.1.0 / docker-compose@^1.4.2.
|
The PR description overstates what this diff actually contains. Two of the described wins are not here, and the commit count does not line up. 1. The description credits this as clearing four alerts, but on the current head it is still declared and still imported:
So the transitive tree it pulls in is untouched, and those alerts remain open. (I have resolved my earlier review thread about the CSS-regression risk of that removal, since there is no removal left to regress.) 2. The description lists an 3. Commit count.
Net: the alert totals in the description should be recomputed against what is actually in the diff before this is used as the merge justification. The remaining substantive findings are in the open inline threads ( |
Pure lockfile re-resolutions, the same technique as #11846: every target already satisfies a range recorded in the lockfile, so no package.json edit and no `resolutions` entry is involved. `yarn upgrade` cannot reach transitive-only packages in yarn 1, so the entries were stripped and re-resolved by a plain `yarn install`. Closes 13 Dependabot alerts on the root lockfile: | package | before | after | alerts | | --- | --- | --- | ---: | | immutable | 4.0.0, 5.1.1 | 4.3.9, 5.1.9 | 5 | | minimatch | 5.1.6 | 5.1.9 | 3 | | vite | 8.0.8 | 8.3.0 | 2 | | http-proxy-middleware | 2.0.9 | 2.0.10 | 1 | | picomatch | 2.3.1 | 2.3.2 | 1 | | diff | 4.0.2 | 4.0.4 | 1 | | GHSA | package | | --- | --- | | GHSA-xvcm-6775-5m9r | immutable | | GHSA-wf6x-7x77-mvgw | immutable | | GHSA-v56q-mh7h-f735 | immutable | | GHSA-7r86-cg39-jmmj | minimatch | | GHSA-23c5-xmqv-rm74 | minimatch | | GHSA-3ppc-4f35-3m26 | minimatch | | GHSA-v6wh-96g9-6wx3 | vite | | GHSA-fx2h-pf6j-xcff | vite | | GHSA-64mm-vxmg-q3vj | http-proxy-middleware | | GHSA-3v7f-55p6-f55p | picomatch | | GHSA-73rr-hh4g-fpgx | diff | The remaining copies are held by exact pins and are handled separately: `immutable@3.7.6` (draft-js via @ant-design/compatible), `minimatch@9.0.1` (editorconfig), `picomatch@4.0.2` and `vite@5.4.21` and `http-proxy-middleware@3.0.5` (the Angular 18 toolchain), `diff@2.2.3` (unidiff) and `diff@7.0.0` (@cube-dev/ui-kit). Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`, `yarn workspace @cubejs-client/playground unit` (vitest on the new vite 8.3.0) and `yarn workspace @cubejs-client/ngx build`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The root `resolutions` block already funnelled every lodash copy through one entry, but pinned it at `^4.17.0`, which resolved to the vulnerable 4.17.23. Raising the floor to `^4.18.0` lands 4.18.1. Closes 2 Dependabot alerts on the root lockfile: | GHSA | severity | vulnerable | fixed in | | --- | --- | --- | --- | | GHSA-r5fr-rjxr-66jc | high | >= 4.0.0, <= 4.17.23 | 4.18.0 | | GHSA-f23m-r3pf-42rh | medium | <= 4.17.23 | 4.18.0 | No package in the repo imports `lodash` directly — the single direct consumer is `lodash.clonedeep`, a separate package. Every copy here is transitive, via dev tooling (antd, oclif, archiver, benchmark). `es5-ext` deliberately stays pinned at 0.10.53: 0.10.62 reintroduced the `_postinstall` script, and the advisory the pin misses (GHSA-4btm-hmg2-6w4j) is a low-severity ReDoS. Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Five root-lockfile alerts all sat inside two subtrees that pin their transitives exactly, so no float could reach them. Bumping the two parents directly moves them all — no `resolutions` entry needed: * `express ^4.21.1` -> `^4.22.2` in `@cubejs-backend/api-gateway` and `@cubejs-backend/server`. 4.22.2 pins `body-parser ~1.20.5`, `qs ~6.15.1`, `path-to-regexp ~0.1.12`, `cookie ~0.7.1`, `send ~0.19.0`, `serve-static ~1.16.2`. * `compression@1.7.4` -> 1.8.2, a pure float of the `^1.7.4` that `webpack-dev-server` records; 1.8.2 already requires `on-headers ~1.1.0`. Closes 6 Dependabot alerts on the root lockfile: | package | before | after | alerts | | --- | --- | --- | ---: | | qs | 6.13.0 | 6.15.3 | 3 | | body-parser | 1.20.3 | 1.20.8 | 1 | | path-to-regexp | 0.1.12 | 0.1.13 | 1 | | on-headers | 1.0.2 | 1.1.0 | 1 | `react-router@5.2.1` keeps its own `path-to-regexp@1.9.0` — only express's 0.1.x line moved. One `qs` advisory stays open (GHSA-6rmr-r4mv-pfrv, `>= 2.2.5, < 6.16.0`): express 4.22.2 caps it at `~6.15.1`. Forcing 6.16.0 across the tree was tried and reverted — it breaks `@cubejs-backend/api-gateway` (2 tests fail with 401 on `/v1/meta` and `/v1/sql`). The 6.16.0 copy that `@cypress/request` and `superagent` pull is unaffected. Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`, `yarn workspace @cubejs-backend/api-gateway unit` (284/284) and `yarn workspace @cubejs-backend/server unit` (6/6). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`testcontainers@10.28.0` is the last 10.x and pins `undici: "^5.29.0"`, so the twelve undici advisories were unreachable by any float. 11.x moves to undici 7 and 12.x to undici 8; CI runs Node 24/26, comfortably above 12.x's `engines: node >= 22.22`, so this goes straight to the current line. `testcontainers ^10.28.0` -> `^12.1.0` across 15 packages and `@testcontainers/kafka ~10.28.0` -> `~12.1.0` in `@cubejs-backend/testing-shared`. `undici` 5.29.0 -> 8.10.2. Closes 12 Dependabot alerts on the root lockfile: | GHSA | severity | fixed in | | --- | --- | --- | | GHSA-c76r-6mm9-97p6 | high | 6.24.0 | | GHSA-cxrh-j4jr-qwg3 | high | 6.24.0 | | GHSA-9qxr-qj54-h672 | high | 6.27.0 | | GHSA-q768-x9m6-m9qp | medium | 6.23.0 | | GHSA-m4v8-wqvr-p9f7 | medium | 6.24.0 | | GHSA-cgvx-p34g-cxqv | medium | 6.24.0 | | GHSA-47rq-92c3-5895 | medium | 6.27.0 | | GHSA-fwq9-5wj3-p2v9 | medium | 6.28.0 | | GHSA-2hjw-q9p4-5g9v | medium | 6.28.0 | | GHSA-x4c7-9r8m-9g4x | medium | 6.28.0 | | GHSA-8mgv-6v9m-8g8g | low | 6.27.0 | | GHSA-hhr4-8wr3-xvv3 | low | 6.27.0 | The repo only touches the stable part of the API (`GenericContainer`, `DockerComposeEnvironment`, `withEnvironment`/`withExposedPorts`/ `withHealthCheck`/`withNetwork`/`withWaitStrategy`, `Wait.forLogMessage`, `Wait.forHealthCheck`), none of which changed across 10 -> 12. Verified with real containers: `yarn workspace @cubejs-backend/postgres-driver integration` (12/12) and `yarn workspace @cubejs-backend/mysql-driver integration` (5/5), plus `yarn tsc` and a no-op `yarn install --frozen-lockfile`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`cypress-plugin-snapshots@1.4.4` (last published 2019) is no longer wired up: its plugin registration in `cypress/plugins/index.js` and its command import in `cypress/support/e2e.ts` are both commented out, and `matchImageSnapshot` now comes from `@simonsmith/cypress-image-snapshot`. Only the dependency entry and two stale comments remained. It was, however, the sole root of a large dead subtree — `socket.io@2.5.1` / `engine.io@3.6.2`, `jimp@0.10.3`, `diff2html`, `unidiff` — and 830 lockfile lines go with it. Closes 10 Dependabot alerts on the root lockfile: | GHSA | package | severity | | --- | --- | --- | | GHSA-xvf7-4v9q-58w6 | jpeg-js | high | | GHSA-7wpw-2hjm-89gp | merge | high | | GHSA-h6ch-v84p-w6p9 | diff | high | | GHSA-6fx8-h7jm-663j | parseuri | medium | | GHSA-x565-32qp-m3vf | phin | medium | | GHSA-776f-qx25-q3cc | xml2js | medium | | GHSA-w7q9-p3jq-fmhm | jpeg-js | medium | | GHSA-pxg6-pf52-xh8x | cookie | low | | GHSA-gxpj-cx7g-858c | debug | low | | GHSA-73rr-hh4g-fpgx | diff | low | Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, `yarn lint`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…erts `xmlbuilder2@2.4.1` was the only thing holding `js-yaml@3.14.0` in the tree — it pinned the old 3.x line, and every advisory on it needs 3.14.2 or later. 4.0.3 depends on `js-yaml ^4.1.1`, and re-resolving the remaining `^3.13.1` spec floats it to 3.15.2. `@cubejs-backend/maven` uses exactly one xmlbuilder2 export, `create`, whose signature is unchanged across 2 -> 4. Closes 5 Dependabot alerts on the root lockfile: | GHSA | severity | vulnerable | fixed in | | --- | --- | --- | --- | | GHSA-mvj4-3fpj-92p8 | high | >= 3.0.0, < 3.15.2 | 3.15.2 | | GHSA-w9vq-2q9x-m3fq | high | >= 3.0.0, < 3.15.1 | 3.15.1 | | GHSA-g8x5-f2h9-4rw6 | high | >= 3.0.0, < 3.15.0 | 3.15.0 | | GHSA-8j8c-7jfh-h6hx | high | < 3.14.2 | 3.14.2 | | GHSA-2pr6-76vf-7546 | medium | < 3.15.0 | 3.15.0 | Two `js-yaml` alerts stay open: `lerna@10.0.1` pins `js-yaml 4.3.0` exactly and 10.0.1 is the current release. Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and `yarn workspace @cubejs-backend/maven unit:disabled-for-ci` (2/2, exercises the real Maven resolve path). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The last vulnerable `minimatch@9.0.1` was pinned exactly by `editorconfig@1.0.4`, pulled in by `js-beautify@1.14.9`, pulled in by `@vue/test-utils@2.4.2` — a devDependency of `@cubejs-client/vue3` already declared as `^2.4`. The lockfile had simply frozen 2.4.2; 2.5.0 depends on `js-beautify ^2.0.0`, whose `editorconfig ^3.0.2` uses `minimatch ~10.2.4`. Pure lockfile re-resolution, no package.json change. Closes 3 Dependabot alerts on the root lockfile: | GHSA | severity | vulnerable | fixed in | | --- | --- | --- | --- | | GHSA-7r86-cg39-jmmj | high | >= 9.0.0, < 9.0.7 | 9.0.7 | | GHSA-23c5-xmqv-rm74 | high | >= 9.0.0, < 9.0.7 | 9.0.7 | | GHSA-3ppc-4f35-3m26 | high | >= 9.0.0, < 9.0.6 | 9.0.6 | Every remaining minimatch copy is now on a patched release: 3.1.4, 3.1.5, 5.1.9, 9.0.9, 10.2.5, 10.2.6. Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and `@cubejs-client/vue3`'s jest suite (36/36) after `yarn build`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`js-cookie@2.2.1` is below the 3.0.7 that GHSA-vxvm-qww3-2fh7 needs. The only importer is `packages/cubejs-playground/src/events.ts`, which calls `get` and `remove` inside a one-time localStorage migration; both are unchanged across 2 -> 3, and the one API v3 removed (`getJSON`) was never used. Closes 1 Dependabot alert on the root lockfile: GHSA-vxvm-qww3-2fh7 (high, `js-cookie <= 3.0.5`). Resolved to 3.0.8. Verified: `yarn install --frozen-lockfile` is a no-op, `tsc` and `vitest run` in `packages/cubejs-playground`, and `yarn workspace @cubejs-client/playground build:playground` — which confirms the bundler resolves v3's `exports` map for the default import. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`rust/cubestore`'s js-wrapper uses `@octokit/core` to look up the CubeStore
release to download. It declared `^3.2.5`, which pins `@octokit/request@5.6.3` and
`@octokit/request-error@2.1.0`, both below their fixes.
5.2.2 is the last CJS release — `@octokit/core@6` and later set
`"type": "module"`, which the CommonJS js-wrapper cannot require. It depends on
`@octokit/request ^8.4.1`, which still supports the `request: { agent }` option
that `download.ts` passes for proxy support (removed in v9, which switched to
native fetch).
Closes 2 Dependabot alerts on the root lockfile:
| GHSA | package | severity | fixed in |
| --- | --- | --- | --- |
| GHSA-x4c8-mmvw-jvxg | @octokit/request | medium | 8.4.1 |
| GHSA-xx4v-prfh-6cgc | @octokit/request-error | medium | 5.1.1 |
Verified: `yarn install --frozen-lockfile` is a no-op, `yarn tsc`, and
`yarn workspace @cubejs-backend/cubestore unit` (3/3, which acquires and restarts
a real cubestored through the download path).
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…erts The npm entry was scoped to `directory: "/packages"`, which does not cover the root `yarn.lock` — the largest manifest in the repo and the one holding 140 of the 323 open npm alerts. `docs-mintlify` (64) and the three `packages/cubejs-playground/vizard` lockfiles (109) were not registered either; all of those alerts were reaching us through the security-advisory channel only, with no version-update PRs behind them. Replaced with a `directories` list covering the root workspace, docs-mintlify, the vizard preview and its app templates. The `/examples` entry (deliberately muted with `ignore: "*"`) and the github-actions entry are unchanged. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
e31546c to
4c607cb
Compare
|
Claude finished @ovr's task in 7m 27s —— View job Review — 1 new inline finding (low), 5 prior threads still openFull review
New this round
Description accounting is off by ~4
What checks out
Not verified here
Review threadsListing returned 4 of my own threads, 0 resolved — all four verified still live against the current tree. Of this round's findings, 3 were duplicates and skipped:
One candidate finding was dropped on inspection: I had flagged |
| "@cubejs-backend/shared": "1.7.40", | ||
| "source-map-support": "^0.5.19", | ||
| "xmlbuilder2": "^2.4.0" | ||
| "xmlbuilder2": "^4.0.3" |
There was a problem hiding this comment.
xmlbuilder2 jumps two majors (2 → 4) and nothing in CI exercises the result. The only guard is the exact-string fixture assertion in packages/cubejs-backend-maven/test/maven.test.ts:11, which compares generateXml() byte-for-byte against test/fixtures/generate-xml-1.xml — including the <?xml version="1.0"?> declaration and the two-space prettyPrint indentation that end({ prettyPrint: true }) emits. Both are defaults that a major bump is entitled to change.
That assertion is unreachable from CI: the only test script here is "unit:disabled-for-ci": "jest dist/test/*.js" (packages/cubejs-backend-maven/package.json:24), disabled because the second test in the same file (resolveDependencies, line 29) actually shells out to Maven and downloads hive-jdbc from Maven Central.
Splitting the network test out would make the bump verifiable:
"unit": "jest dist/test/maven.test.js -t generateXml",
"unit:disabled-for-ci": "jest dist/test/*.js"generateXml is pure — no Maven, no network — so a -t generateXml run is CI-safe. Without it, a format change in xmlbuilder2 4 ships silently; Maven itself tolerates reformatted POMs, so the failure mode is a fixture that quietly drifts out of sync rather than a broken build.

The vizard lockfiles were split out into #11900 and the
docs-mintlifylockfile into #11902; this PR is the rest. Closes 63 Dependabot alerts across the root lockfile and two package.json manifests, as 14 independently revertable commits — one logical change each, every one verified before the next was applied. Every fix is either a plain lockfile re-resolution or a direct bump of the parent that pinned the vulnerable version; no newresolutionsentries were added (the onlyresolutionsedit is raising the existinglodashfloor from^4.17.0to^4.18.0), because forcingqs@^6.16.0that way turned out to break@cubejs-backend/api-gateway. Two dead dependencies came out along the way —cypress-plugin-snapshotsand@ant-design/compatible, a CSS-only import draggingdraft-js/immutable@3/node-fetch@1— andaws-sdkv2, which hit end-of-support in September 2025, is gone entirely..github/dependabot.ymlwas also pointed at the manifests that actually carry the alerts; it was scoped to/packages, so the rootyarn.lock,docs-mintlifyand the vizard lockfiles were never covered by version updates at all.yarn.lockLargest wins:
testcontainers10 -> 12 (12undici), droppingcypress-plugin-snapshots(10),express-> 4.22.2 (6),xmlbuilder2-> 4 (5js-yaml), and@ant-design/compatible(4).The 87 that remain are structural: 44 are held by Angular 18's exact pins in
cubejs-client-ngx(deliberately out of scope), 14 bynode-gyp9/10 underduckdband@angular/cli, and the rest by upstream exact pins (lerna-> js-yaml,nx-> smol-toml,snowflake-sdk-> toml,graphiql@1.8.6-> markdown-it/linkify-it) or have no patched release.es5-extstays pinned at 0.10.53 on purpose — 0.10.62 reintroduced the_postinstallprotestware, and the advisory the pin misses is a low-severity ReDoS.Check List
Verification
yarn install --frozen-lockfileis a no-op after every commit, plusyarn tsc,yarn lintandyarn build. Unit suites:api-gateway286/286,shared455/455,query-orchestrator146/146,server-core127/127,clickhouse-driver90/90,vue336/36,cubestore-driver22/22,base-driver17/17, plus cli/server/dremio/duckdb/ksql/pinot/trino/athena/crate/jdbc/prestodb/snowflake/sqlite/cloud/react/playground/maven/aurora — all green. Docker-backed:postgres-driver12/12,mysql-driver5/5,cubestore3/3, andmysql-aurora-serverless-driver3/3 against a real local-data-api + MySQL 5.6 stack, which is what proves theaws-sdkv2 -> v3 migration.Two suites fail identically on
origin/masterwith the same tree, so neither is a regression:schema-compilerfails the same 12 of 954 tests on both, and@cubejs-backend/nativefails the same 3SQLInterfacetests on both (a staleindex.nodecopied from another checkout).🤖 Generated with Claude Code