Repository navigation
Lock file maintenance - #4778
Conversation
Renovate lock-file maintenance review — no findingsReviewed both lockfiles ( Worth landing for
Neither is exploitable in PeerDB as shipped: the UI runs in Linux containers, and
Notable but benign
Hygiene checks
One process note: |
bd4f3aa to
1f59c84
Compare
| [[package]] | ||
| name = "rust_decimal" | ||
| version = "1.42.1" | ||
| version = "1.43.0" |
There was a problem hiding this comment.
rust_decimal 1.42.1 → 1.43.0 — the one bump in this PR worth a closer look. Released 2026-09-02, so it is 5 days old.
Directly relevant fixes (upstream #808, a backport of #807):
- "Postgres FromSql panics on legitimate large NUMERIC values" —
10i128.pow(4 * start_integers)overflowed for weights ≥ 11 (i.e.10^44). It now useschecked_powand returnsExceedsMaximumPossibleValueinstead of panicking.nexus/peer-postgres/src/stream.rs:153(let numeric: Option<Decimal> = row.get(i)) goes through exactly thatFromSqlpath, so this bump removes a real panic on wide PGNUMERIC. Worth confirming the newErrsurfaces as a query error rather than being swallowed. from_strno longer silently ignores non-digit garbage after the 29th significant digit (nowInvalidCharacter/DuplicatedDecimalPoint). Long-but-valid digit strings are unaffected, sonexus/peer-bigquery/src/stream.rs:150(Decimal::from_str(&result)?forNUMERIC/BIGNUMERIC) should behave the same.
Regression risk to be aware of:
- Upstream #809 rewrote the hot arithmetic paths:
u128fast paths for 64-bit mul/add/sub,rescale_internalscaling in chunks of up to 9 digits instead of one at a time,truncate_internalreporting discarded fractions sofloor/ceiltruncate once, andPartialEqshort-circuiting on identical bit patterns. The author states rounding semantics are preserved, but this is a fresh rewrite of the code that rescales and renders everyValue::Numericnexus emits. - adding IF NOT EXISTS for pg and bq #808 also carries "math precision improvements" that shift division and
lnresults by 1–2 ULP, with several upstream test expectations updated. Nexus transports decimals rather than computing on them, so this is unlikely to bite — but a numeric-heavy e2e pass (PGNUMERIC, BigQueryNUMERIC/BIGNUMERIC) before merge would be cheap insurance on a 5-day-old release.
Side benefit: dropping the rkyv 0.7 feature bridge (#819) removes rkyv, rkyv_derive, bitvec, bytecheck, ptr_meta, radium, rend, simdutf8, tap, wyz, ahash 0.7, hashbrown 0.12 and the last syn 1.0.109 from the tree. No functional impact, since nexus builds this crate with default-features = false, features = ["tokio-pg"].
| "version": "16.3.2", | ||
| "resolved": "https://registry.npmjs.org/next/-/next-16.3.2.tgz", | ||
| "integrity": "sha512-/ZCaubUy17Lld1SiPWxuPbCk2ihqAxF2QNQaPZeEaEb7t1I58qhsJN187D7AfpapHAqUPXH0f/thtdW9dWgWFg==", | ||
| "version": "16.3.3", |
There was a problem hiding this comment.
next 16.3.2 → 16.3.3 is a security release — flagging so this does not sit unmerged. Per the v16.3.3 notes it fixes two advisories, both rated critical:
- GHSA-p293-qw3h-jr36 — unauthenticated RCE on Windows-hosted servers
- GHSA-2xp9-vwfh-vxw4 — unauthenticated RCE in the Image Optimization API when AVIF files are used
Actual exposure for the PeerDB UI looks low on both counts: it ships in a Linux container (not Windows-hosted), and ui/next.config.js:17-19 sets images: { unoptimized: true }, which takes the Image Optimization API out of the picture. No regression risk in the bump itself — the release lists no other changes.
| "version": "5.109.2", | ||
| "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", | ||
| "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", | ||
| "version": "5.110.2", |
There was a problem hiding this comment.
webpack 5.109.2 → 5.110.2 — the refresh stopped one patch short. 5.110.3 was published 2026-09-01, six days before this lock was regenerated (branch commit dated 2026-09-07). It is currently latest on npm, not deprecated, and still engines: node >=10.13.0, so ^5.99.7 should have resolved to it. A rebase/retry may be worth a shot to see whether Renovate picks it up.
It matters a little because 5.110.0 (2026-08-27) is a substantial minor — it wraps concatenated modules in lazy __webpack_require__.cw accessors and inlines require() (#21519) — and .1/.2/.3 are all regression fixes layered on that rework. 5.110.3 specifically fixes import() options, ESM interop when require() targets a module outside the concatenation, concatenated require() inside a require.ensure callback, mangled exports read through require(), and new on a default import of a wrapped CommonJS module. It also reverts optimization.minimize to a boolean (options moving to minimizeOptions) after 5.110.1 had loosened it.
Mitigating: this entry is dev: true, and nothing under ui/ references webpack outside package.json — next.config.js has no webpack() hook, so it is not on the Next build path. Low practical risk either way; noting it mainly because "lock file maintenance" implies a full refresh.
| [[package]] | ||
| name = "mysql_async" | ||
| version = "0.37.0" | ||
| version = "0.37.1" |
There was a problem hiding this comment.
mysql_async 0.37.0 → 0.37.1 — patch release whose only listed change is "Fix data race in statement cache" (upstream issue #406). The new arc-swap dependency appearing in this same hunk is that fix. Straightforwardly good for nexus/peer-mysql; no behavior change to review.
| [[package]] | ||
| name = "rustls" | ||
| version = "0.23.43" | ||
| version = "0.23.44" |
There was a problem hiding this comment.
rustls 0.23.43 → 0.23.44 — three changes, two worth noting, one of which lands squarely on the "do not leak secrets" rule in .claude/REVIEW.md:
KeyLogFilenow creates theSSLKEYLOGFILEwith owner-only permissions (#3210). Previously those TLS session keys were written world-readable.- Server certificates are now verified against the correct name on ECH rejection (#3236).
- Default flip: ML-DSA post-quantum certificates are now enabled by default in the
aws-lc-rsprovider (#3249). Nexus reaches that provider viapgwiresserver-api-aws-lc-rsfeature (nexus/Cargo.toml:35). ML-DSA is not in the public web PKI, so this only widens what a private CA hierarchy may present — no expected impact, but it is a default changing inside the TLS stack.
| [[package]] | ||
| name = "aws-lc-rs" | ||
| version = "1.18.0" | ||
| version = "1.18.1" |
There was a problem hiding this comment.
aws-lc-rs 1.18.0 → 1.18.1 / aws-lc-sys 0.44.0 → 0.45.0 — the 1.18.1 notes tighten several API contracts so inconsistent inputs now fail closed with Err(Unspecified) instead of being accepted (#1215): in-place AEAD sealing verifies Extend produced exactly enough space, streaming cipher constructors reject missing/mismatched IV contexts, RSA verify_digest_sig requires the supplied digest to match RsaParameters, and Salt::from(Okm) now uses the Okms output algorithm rather than the source PRKs. Upstream states valid inputs are unaffected, and nexus only consumes this transitively through rustls/pgwire, so it should be a no-op here.
aws-lc-sys 0.45.0 moves the vendored AWS-LC from v5.5.0 to v5.7.0, which corrects EVP_DecryptUpdate for padded block ciphers so it only modifies the output range reported through out_len. Since this is the C-compiling sys crate, it is also the bump most likely to affect the nexus image build — the release includes a fix for -Wa,--debug-prefix-map under Clang + LTO (now using -ffile-prefix-map) and CFLAGS filtering for jitterentropy, so worth an eye on the Rust build job and not just the tests.
| "version": "8.7.2", | ||
| "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.7.2.tgz", | ||
| "integrity": "sha512-oTVHV+oelUBtiu5iTuTNNZ0eLYsXSMxry4cgr30mayNkgIZL6qZ0IOQVPuSWGcyAaXKl/XgqwWHIC3a0khYVBA==", | ||
| "version": "8.8.0", |
There was a problem hiding this comment.
protobufjs 8.7.2 → 8.8.0 — hardening release, no API break. All three fixes are on the decode path: "Harden ProtoJSON and Text Format parsing" (#2418), "Limit Any.fromObject recursion" (#2419), and "Respect declared lengths while decoding" (#2420). The minor bump itself is Edition 2026 support (#2414), which is additive. Good to take.
| "version": "4.4.3", | ||
| "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", | ||
| "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", | ||
| "version": "4.5.4", |
There was a problem hiding this comment.
zod 4.4.3 → 4.5.4 — a minor, but nothing in this range changes default behavior.
4.5.0s headline is z.compile(), which walks a schema and emits flat JS executed via new Function(). It is strictly opt-in — nothing auto-compiles unless global auto-compilation is turned on — so it introduces no new unsafe-eval requirement for the UIs CSP as long as it is not adopted. The rest of the 4.5.x line is fixes: 4.5.4 stops the cycle walk from firing a default factory (#6500), 4.5.3 emits record numeric keys as strings in toJSONSchema (#6497), 4.5.2 lets a prototype-method getter answer a bare call so vi.spyOn works (#6488).
That last one is the only thing I would sanity-check: the advertised 9x schema-memory reduction comes from lazy-bound methods, and if any UI code pulls a schema method off the instance and calls it detached, that is where it would show up. The genuinely breaking changes in this range (.merge() throwing when the receiver has refinements, base64 rejecting whitespace, stricter HTTP URL validation) all landed in 4.4.0, which main is already on.
| "version": "5.50.0", | ||
| "resolved": "https://registry.npmjs.org/terser/-/terser-5.50.0.tgz", | ||
| "integrity": "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==", | ||
| "version": "5.51.2", |
There was a problem hiding this comment.
terser 5.50.0 → 5.51.2 — minifier semantics moved across this range, so noting it even though the blast radius here looks nil. 5.51.0 deoptimizes ("pins") functions whose argnames scope is ambiguous — default arguments referencing other parameters or outer variables — and fixes ?? being misclassified as a boolean operator, which was generating booleans on its left-hand side. 5.51.1 fixes code transformation inside dynamic import() arguments, and 5.51.2 then reverts part of the argname pinning due to "issues that came up without clear reproduction". Three releases of churn in a minifier.
Only reachable transitively through webpacks minimizer-webpack-plugin (also bumped here, 5.6.1 → 5.8.0), and webpack is not on the Next build path for this UI, so I would expect no effect on shipped output.
1f59c84 to
c84d3b5
Compare
|
Dependency bump review (per Reviewed per Rule 1 (PII / secrets in output): not applicable — no code changes, so no new stdout/stderr/log statements. Rule 2 (regressions in the bumped range): upstream notes read for the material bumps. Findings below. Supply-chain sanity
Notable: this bump is a security fix on the SSH path
Correctness fixes we pick up
Heads-up worth a reviewer glance (not blocking)
Dependency-tree win
CI
|
c84d3b5 to
02bdc80
Compare
| "version": "4.4.3", | ||
| "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", | ||
| "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", | ||
| "version": "4.5.4", |
There was a problem hiding this comment.
zod 4.4.3 → 4.5.4 — the one bump in this PR with documented breaking changes. This crosses 4.5.0, which upstream ships as a breaking release. Relevant to the four schema files that import it (ui/app/peers/create/[peerType]/schema.ts, ui/app/mirrors/create/schema.ts, ui/app/alert-config/validation.ts, ui/components/PeerForms/Eventhubs/schema.ts):
- String
.min()/.max()/.length()now count Unicode code points, not UTF-16 code units. Every string.min()in these schemas is.min(1), which is unaffected — any non-empty string has at least one code point. But the many.max(N)bounds now become more permissive for non-BMP input:password: z.string().max(100)will now accept a value longer than 100 UTF-16 units / 100 bytes. Those limits mirror backend and column limits, so a value can pass UI validation and then be rejected or truncated downstream. Low likelihood — it needs astral-plane characters in a host/user/password/database field — but it is a real widening of accepted input. __proto__is now always stripped from object and record parses, and.strict()reports it asunrecognized_keys.- Stricter string formats:
z.ipv6(),z.ulid(),z.httpUrl()andz.emoji()all tightened. Worth a glance at the.url()validators in the BigQuery peer schema.
The zod/v4 subpath these files import still resolves — Build & Test UI and the linters pass — so this is a runtime-behavior change only, not a compile break. There are no tests covering these schemas, so nothing in CI would catch a validation regression here. Not a blocker, just the one item I would want confirmed by hand.
| "version": "16.3.2", | ||
| "resolved": "https://registry.npmjs.org/next/-/next-16.3.2.tgz", | ||
| "integrity": "sha512-/ZCaubUy17Lld1SiPWxuPbCk2ihqAxF2QNQaPZeEaEb7t1I58qhsJN187D7AfpapHAqUPXH0f/thtdW9dWgWFg==", | ||
| "version": "16.3.4", |
There was a problem hiding this comment.
next 16.3.2 → 16.3.4 closes two critical advisories — this is the strongest reason to merge:
- GHSA-2xp9-vwfh-vxw4 (critical) — unauthenticated RCE in the Image Optimization API when AVIF files are used. Affects
>=16.0.0, <16.3.3; base 16.3.2 was in range. - GHSA-p293-qw3h-jr36 (critical) — unauthenticated RCE on Windows-hosted servers. Same affected range.
Honest exposure assessment: ui/next.config.js sets unoptimized: true under images, which disables the Image Optimization API outright, and the UI ships as a Linux container — so neither advisory was exploitable in the PeerDB configuration. Still worth taking.
One thing to be aware of: 16.3.3 mitigated the AVIF RCE by disabling AVIF optimization, and 16.3.4 re-enables it (vercel/next.js#97949) on top of the actual fix. 16.3.4 is not in either affected range, so this is fine, but it is why the two-patch bump matters rather than stopping at 16.3.3. The remaining 16.3.4 fixes are unrelated: testmode passthrough-fetch infinite recursion, a TypeScript aliasing build error, and unset crossOrigin in Turbopack manifests.
| "version": "0.35.3", | ||
| "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.35.3.tgz", | ||
| "integrity": "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==", | ||
| "version": "0.35.4", |
There was a problem hiding this comment.
sharp 0.35.3 → 0.35.4 fixes GHSA-rgj7-g3m4-5g8c (high) — inherited libheif vulnerabilities (GHSA-g89c-p67h-r497, GHSA-2jg2-4ch7-h545), affected range <0.35.4, so the base version was vulnerable. The release also bundles libvips 8.18.6 and bounds resize and composite dimensions to the coordinate limit, preventing overflow.
Practical exposure is low — sharp is only reachable through the Next image optimizer, which this app disables via unoptimized: true — but this is a genuine high-severity fix, and the 15 @img/sharp-* platform-binary bumps elsewhere in this diff are the expected fallout.
| "version": "4.3.1", | ||
| "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.1.tgz", | ||
| "integrity": "sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==", | ||
| "version": "4.3.2", |
There was a problem hiding this comment.
js-yaml 4.3.1 → 4.3.2 fixes GHSA-2883-xcg3-v3hh (high) — maxTotalMergeKeys fails to bound CPU consumption for empty merge sources, a denial of service. Affected range >=4.0.0, <4.3.2, so base 4.3.1 was vulnerable: 4.3.1 had fixed the previous omap advisory (GHSA-5p4m-2wfm-xmqj) but not this one.
Dev-only in this repo — it reaches the tree through ESLint config loading, not through anything that parses attacker-supplied YAML at runtime. Worth having regardless.
| "version": "5.50.0", | ||
| "resolved": "https://registry.npmjs.org/terser/-/terser-5.50.0.tgz", | ||
| "integrity": "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w==", | ||
| "version": "5.51.2", |
There was a problem hiding this comment.
terser 5.50.0 → 5.51.2 — upstream added a fix inside this range and then rolled it back, also inside this range. Sequence:
- 5.51.0: pinned (deoptimized) functions whose
argnamesscope is ambiguous — default arguments referencing other parameters or outer variables — plus fixed??being misclassified as a boolean operator, which produced incorrect boolean coercion on its left-hand side. - 5.51.1: fixed transforming code inside a dynamic
import()argument. - 5.51.2: rolled back the 5.51.0 ambiguous-default-args deopt, "due to issues that came up without clear reproduction."
So the net delta is two real correctness fixes (?? classification, dynamic-import transform), and the one risky change was reverted before it reached this lock. Flagging it because an unexplained-breakage rollback inside a bumped range is exactly the signal .claude/REVIEW.md asks about. Blast radius is small: terser is a build-time transitive dev dependency, and Next 16 minifies with SWC rather than terser.
| "version": "5.109.2", | ||
| "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", | ||
| "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", | ||
| "version": "5.110.3", |
There was a problem hiding this comment.
webpack 5.109.2 → 5.110.3 — the largest single jump in this PR. 5.110.0 is a substantial minor: concatenated modules wrapped in lazy accessors with inline require() support, analyzable-ESM URLs for chunks/assets/workers, new CSS and HTML minification, an externalsPresets.nodeModules preset, and import.meta.glob changes.
The part worth noting is that all three following patches fix regressions in that new machinery: 5.110.1 (bad regex in snapshot.managedPaths, unparsable-module error handling, optimization.minimize shorthand plugin compat), 5.110.2 (analyzable-ESM baking around cycles, mixed-served wasm, style URL maps, TDZ and circular-reexport issues), 5.110.3 (import() options, circular reexports, ESM interop for require() targeting modules outside concatenation, mangled exports read through require(), new on wrapped CommonJS defaults). A minor that needed three rounds of module-resolution fixes is still settling.
Low risk here specifically: webpack is a devDependency used via copy-webpack-plugin, and Next 16 bundles with its own toolchain — Build & Test UI passing covers this path.
| [[package]] | ||
| name = "zstd-sys" | ||
| version = "2.0.16+zstd.1.5.7" | ||
| version = "2.1.0+zstd.1.5.7" |
There was a problem hiding this comment.
zstd-sys 2.0.16 → 2.1.0 carries two metadata changes that the version bump alone does not convey. Verified against the crates.io API for both versions:
- License changed from
MIT/Apache-2.0toBSD-3-Clause. BSD-3-Clause is permissive and compatible with the AGPL-3.0 of this repo, so there is no compliance conflict — but the attribution obligations differ (BSD-3-Clause adds a no-endorsement clause), so any generated attribution/NOTICE output should be refreshed. I found nodeny.toml,about.tomlor license-allowlist tooling in the repo, so nothing in CI gates this either way. bindgenwas dropped from the default features. 2.0.16 defaulted tolegacy,zdict_builder,bindgen; 2.1.0 defaults tolegacy,zdict_builder. Builds now use pre-generated bindings and no longer requirelibclang— a build-environment improvement. Safe here because the vendored C library is unchanged: both sides are+zstd.1.5.7, so the pre-generated bindings match the headers being compiled.
No advisories affect either version. Paired with zstd-safe 7.2.4 → 7.3.0.
| [[package]] | ||
| name = "rust_decimal" | ||
| version = "1.42.1" | ||
| version = "1.43.0" |
There was a problem hiding this comment.
rust_decimal 1.42.1 → 1.43.0 — this is what prunes 16 crates from the lock. 1.43.0 removes the rkyv 0.7 feature bridge, which drops rkyv, rkyv_derive, bytecheck, bytecheck_derive, bitvec, funty, radium, tap, wyz, rend, ptr_meta, ptr_meta_derive, simdutf8, ahash 0.7, hashbrown 0.12 and syn 1.0.
I verified this is a safe prune rather than a silent feature loss: nexus/Cargo.toml declares rust_decimal with default-features = false and only the tokio-pg feature, so rkyv serialization was never enabled — and the only consumer of rkyv in the base lock was rust_decimal itself. Losing syn 1.0 and ahash 0.7 is a nice proc-macro and build-time win too.
The part to watch: 1.43.0 also backports accumulated fixes and performance work across the arithmetic paths, and 1.42.1 (already in base) was itself a carry-propagation correctness fix in subtraction. rust_decimal is used by value, peer-postgres, peer-mysql and peer-bigquery for NUMERIC handling, so decimal precision and rounding sit directly in the replication path. clippy passes, but the flow_test matrices were still pending at review time — please let those finish rather than relying on the lint jobs alone.
| [[package]] | ||
| name = "mysql_async" | ||
| version = "0.37.0" | ||
| version = "0.37.1" |
There was a problem hiding this comment.
mysql_async 0.37.0 → 0.37.1 is a targeted bug fix worth calling out as a win: it fixes a data race in the prepared-statement cache (blackbeam/mysql_async#406). No API or behavior changes.
This lands directly in the PeerDB MySQL path — nexus/peer-mysql depends on it with the minimal-rust, rust_decimal, chrono, rustls-tls and aws-lc-rs features. A statement-cache race is the kind of defect that surfaces as rare, hard-to-reproduce corruption or panics under concurrent query load, so this is a straightforward improvement for MySQL peers.
| [[package]] | ||
| name = "rustls" | ||
| version = "0.23.43" | ||
| version = "0.23.44" |
There was a problem hiding this comment.
rustls 0.23.43 → 0.23.44 — one hardening fix and one default-on behavior change.
KeyLogFilenow creates files readable only by the owner. Directly relevant to the secrets concern in.claude/REVIEW.md: ifSSLKEYLOGFILEis ever set in a PeerDB deployment, TLS session secrets were previously written with default (world-readable) permissions. This tightens that.- Fixed server-certificate verification against the correct name when the server rejects Encrypted Client Hello.
- ML-DSA post-quantum certificate support is now enabled by default in the
aws-lc-rsprovider.nexususes that provider throughout —pgwirewithserver-api-aws-lc-rs,mysql_asyncwithaws-lc-rs— so this widens the set of accepted signature schemes by default. It is private-PKI only, not public web PKI, so real-world impact is minimal; noting it because it is a default change rather than opt-in.
No advisories affect 0.23.43 — the most recent rustls advisories cap at <0.23.18. Paired with aws-lc-sys 0.44 → 0.45, which I also checked: all known aws-lc-sys advisories were patched by 0.39.0, so that bump is routine.
🔄 Flaky Test DetectedAnalysis: The flow/e2e package hit its 20-minute Go test timeout on only the ch-lts matrix leg, mass-failing all 55 in-flight TestPeerFlowE2ETestSuiteMySQL_CH_Cluster subtests with uniform ~61s STATUS_SETUP/STATUS_SNAPSHOT wait timeouts (no assertion mismatches, no deadlock in PeerDB code) while the same commit passed on the other two legs — a shared ClickHouse/Temporal resource stall on a Renovate lock-file PR, not a real bug. ✅ Automatically retrying the workflow |
02bdc80 to
d213ffc
Compare
|
Reviewed this lock file maintenance bump ( Diff is lock-only: no Upstream release notes for the notable ranges Positives / why this is worth taking
Things I checked that could have bitten but do not
CI
|
d213ffc to
2d4754a
Compare
| [[package]] | ||
| name = "aws-smithy-types" | ||
| version = "1.6.2" | ||
| version = "1.7.0" |
There was a problem hiding this comment.
Blocking — this bump breaks the nexus build.
aws-smithy-types 1.7.0 (published 2026-09-14) makes a breaking change inside a minor version: Document is now #[non_exhaustive] with four new variants (Blob, Timestamp, BigInteger, BigDecimal), and Document::Object now wraps DocumentObject instead of HashMap<String, Document>.
aws-smithy-json 0.63.0 is still in the tree (see line 225) and was written against 1.6.x, so Cargo unifying everything onto aws-smithy-types 1.7.0 makes it fail to compile:
error[E0308]: mismatched types
--> aws-smithy-json-0.63.0/src/deserialize/token.rs:323:33
|
323 | Ok(Document::Object(object))
| ---------------- ^^^^^^ expected `DocumentObject`, found `HashMap<String, Document>`
error[E0004]: non-exhaustive patterns: `&_` not covered
--> aws-smithy-json-0.63.0/src/serialize.rs:36:15
error: could not compile `aws-smithy-json` (lib) due to 3 previous errors
This fails build (ubuntu-latest, 14/15/16/17/18), clippy and docker-build. Nothing in PeerDB touches Document directly (nexus only pulls aws-config + aws-sdk-kms), so this is purely an upstream release-coordination problem — no source changes are needed, the lock just cannot be resolved this way.
Suggested fix: hold the whole aws-* group back to the versions on main (aws-smithy-types 1.6.2, aws-config 1.11.0, aws-sdk-kms 1.117.0, aws-sdk-sso 1.108.0, aws-sdk-ssooidc 1.110.0, aws-sdk-sts 1.113.0, plus the matching aws-runtime/aws-sigv4/aws-smithy-*/aws-types entries) until upstream ships an aws-config that depends on aws-smithy-json 0.64. Either a Renovate packageRules entry pinning aws-config/aws-sdk-*/aws-smithy-*, or reverting just the AWS chunk of this lock, works.
| "aws-smithy-async", | ||
| "aws-smithy-http", | ||
| "aws-smithy-json", | ||
| "aws-smithy-json 0.63.0", |
There was a problem hiding this comment.
This line is the root of the breakage flagged above: aws-config 1.12.0 (published 2026-09-04) still depends on aws-smithy-json 0.63.0 / aws-smithy-schema 0.2.0, while aws-sdk-kms 1.119.0, aws-sdk-sso 1.110.0, aws-sdk-ssooidc 1.112.0 and aws-sdk-sts 1.115.0 (all published 2026-09-14) moved to aws-smithy-json 0.64.0 / aws-smithy-schema 0.3.0.
The two aws-smithy-json majors then share a single unified aws-smithy-types 1.7.0, and 0.63.0 does not compile against it. aws-config 1.12.0 is currently the newest published version on crates.io, so there is no forward fix available yet — the AWS SDK crates need to stay on the main set for now.
| "version": "4.4.3", | ||
| "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", | ||
| "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", | ||
| "version": "4.5.4", |
There was a problem hiding this comment.
Advisory (non-blocking): zod 4.4.3 → 4.5.4 crosses a minor with documented breaking changes. The one that reaches this repo is that string .min() / .max() / .length() now count Unicode code points instead of UTF-16 code units.
All four zod schema files (app/peers/create/[peerType]/schema.ts, app/mirrors/create/schema.ts, app/alert-config/validation.ts, components/PeerForms/Eventhubs/schema.ts) use string .min()/.max() for peer-config field limits (hosts, usernames, passwords, dataset IDs, …). For input containing astral-plane characters these bounds are now effectively more permissive than before — e.g. a 60-emoji password now passes .max(100) where it previously failed at 120 UTF-16 units. These are client-side UX guards rather than the authoritative limits, so practical impact is low, but worth knowing if any backend field has a hard byte/char cap.
The other 4.5.0 breaking changes do not apply here: no z.iso.datetime(), z.record(), z.intersection() or .length() usage anywhere in ui/, and the zod/v4 subpath these files import is still exported by 4.5.4. Build & Test UI and the linters pass.
|
Renovate lock-file-maintenance review Reviewed per Blocking The The UI side is clean: Security fix worth calling out
Behaviour changes reviewed, no regressions found
No new stdout/stderr/log output and no PII or secret handling changes in this diff (lock files only). |
🔄 Flaky Test DetectedAnalysis: All 12 failures are the identical ~61s "UNEXPECTED STATUS TIMEOUT STATUS_SNAPSHOT" timeout spread across six unrelated e2e suites on a single matrix leg (pg17/ch-stable) while the other two legs passed the same commit, pointing to snapshot-worker starvation on an overloaded CI runner rather than a code defect in this Renovate lockfile PR. ✅ Automatically retrying the workflow |
🔄 Flaky Test DetectedAnalysis: All 11 failures in one matrix leg are the same 60s "UNEXPECTED STATUS TIMEOUT STATUS_SNAPSHOT" deadline in SetupCDCFlowStatusQuery, spread across four unrelated source connectors while the other two legs passed on identical code — a resource-contention timeout on a lockfile-only Renovate PR, not a regression. ✅ Automatically retrying the workflow |
|
Going to try and keep this to UI to not get blocked on Rust |
2d4754a to
f4aecc1
Compare
| "version": "16.3.2", | ||
| "resolved": "https://registry.npmjs.org/next/-/next-16.3.2.tgz", | ||
| "integrity": "sha512-/ZCaubUy17Lld1SiPWxuPbCk2ihqAxF2QNQaPZeEaEb7t1I58qhsJN187D7AfpapHAqUPXH0f/thtdW9dWgWFg==", | ||
| "version": "16.3.4", |
There was a problem hiding this comment.
Security-positive bump, but a newer patch now exists.
16.3.3 was a security release fixing two critical advisories:
- Unauthenticated RCE on Windows-hosted servers
- Unauthenticated RCE in the Image Optimization API when AVIF files are used
16.3.4 is the follow-up that re-enables AVIF image optimization, plus three backported fixes (testmode fetch infinite recursion, build error when aliasing typescript, unset crossOrigin in Turbopack manifests). Neither RCE path is reachable here anyway — ui/next.config.js sets images: unoptimized: true and we ship Linux containers — but the bump is still worth taking.
16.3.5 was released 2026-09-11, after this PR was cut (2026-09-07). It adds "Add CSP nonce to script tags of loading and template files" (#98403), next/image disk-cache hardening (skip/reject 0-byte and empty cache entries), and a use cache prerender-signal fix. Worth ticking the rebase checkbox so the lock lands on 16.3.5 rather than 16.3.4.
(@next/env, @next/eslint-plugin-next, eslint-config-next and all ten @next/swc-* binaries move 16.3.2 -> 16.3.4 in lockstep, so a rebase moves them together.)
| "version": "4.4.3", | ||
| "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", | ||
| "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", | ||
| "version": "4.5.4", |
There was a problem hiding this comment.
Highest-regression-risk bump in this PR — a minor that carries documented breaking behavior changes. I checked each one against our schemas; none of them bite, but they are worth recording.
zod 4.5.0 breaking changes:
.min()/.max()/.length()now count Unicode code points instead of UTF-16 code unitsz.iso.datetime()rejects minute-precision input such as2020-01-01T06:15Z- A record's key schema now governs only the keys that match it
__proto__is always stripped from objects/records;.strict()reports it asunrecognized_keys- Stricter
z.ipv6(),z.ulid(),z.httpUrl(),z.emoji() - Numeric enum
.optionsexcludes reverse mappings - Error maps now run on first error read, not at parse time
Against the four files that use zod (app/peers/create/[peerType]/schema.ts, app/mirrors/create/schema.ts, app/alert-config/validation.ts, components/PeerForms/Eventhubs/schema.ts):
- (2), (5), (6) — not applicable. We use
z.url()(unchanged; onlyz.httpUrl()picked up the RFC 1035 hostname rule),z.enum(),z.literal(),z.record(). Noz.iso.*, no ipv6/ulid/emoji, and no.optionsaccess on a zod enum. - (3) —
z.record(z.string(), ehSchema)uses a plain string key schema, so "only the keys that match it" is a no-op. - (4) — only observable if a user names an Event Hub literally
__proto__; stripping it is strictly safer. - (7) — our
error: (issue) => ...callbacks are pure functions ofissue.input, so lazy evaluation is unobservable. - (1) — the one real behavior delta.
.max(100)/.max(255)/.max(64)on host / user / password / staging-path fields now count code points, so a value containing astral-plane characters (e.g. emoji in a password) counts as fewer characters than before. That is more permissive, never more restrictive — no validation that used to pass can start failing.
Net: safe to take, and it picks up real wins — ~9x smaller schema memory footprint, ~7.5x faster safeParse() failure paths (no eager stack capture), and a fix for recursive schemas retaining parsed input indefinitely.
| "version": "5.109.2", | ||
| "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz", | ||
| "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==", | ||
| "version": "5.110.3", |
There was a problem hiding this comment.
Feature minor, not a patch — flagging even though the blast radius here is nil.
5.110.0 is a large release: new performance hints (duplicate packages, circular dependencies), output.copy, externalsPresets.nodeModules, CSS/HTML minification under optimization.minimize, output.environment.topLevelAwait, CommonJS tree-shaking, and a built-in scope analyzer replacing eslint-scope — that last one is why webpack/node_modules/eslint-scope@5.1.1 and estraverse@4.3.0 disappear from this lockfile.
That minor did shake out real regressions: three patches in five days (5.110.1 -> 5.110.3) fixing ESM/CommonJS interop for require() outside concatenation, mangled exports read through require(), new on wrapped CommonJS default imports, deferred namespace evaluation for async modules, and a snapshot.managedPaths regex performance bug. 5.110.3 is the settled build, so this is the right version to land on rather than 5.110.0.
Risk to this repo is effectively zero regardless: webpack and copy-webpack-plugin are devDependencies with no webpack.config.js, no webpack() hook in ui/next.config.js, and nothing under ui/ importing webpack. Next 16 builds with its own bundled toolchain.
Related entry in this diff: minimizer-webpack-plugin 5.6.1 -> 5.10.0, a transitive dep of webpack (range ^5.7.0). 5.10.0 errors if both the legacy minimizerOptions/generatorOptions form and the new inline form are supplied — we never configure it, so no impact.
| "version": "8.7.2", | ||
| "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-8.7.2.tgz", | ||
| "integrity": "sha512-oTVHV+oelUBtiu5iTuTNNZ0eLYsXSMxry4cgr30mayNkgIZL6qZ0IOQVPuSWGcyAaXKl/XgqwWHIC3a0khYVBA==", | ||
| "version": "8.8.0", |
There was a problem hiding this comment.
Security-positive. 8.8.0 is mostly parser hardening, which matters here because the UI decodes protobuf coming back from the flow API:
- ProtoJSON and text-format parsing hardened against malformed input
Any.fromObjectrecursion depth now bounded (stack overflow / DoS on deeply nested input)- Decoder now respects declared field lengths
- Symbol visibility preserved during code generation
Feature side is Edition 2026 support. No documented breaking changes. @bufbuild/protobuf 2.14.0 -> 2.14.1 (patch) rides along in this diff.
Lock-file maintenance reviewReviewed per Scope: 76 package entries changed, all resolved from Structural changes — all benign:
Reviewed in detail (see line comments):
Also checked, no concerns: Verdict: no regressions found that affect this codebase, and the bump is net-positive on security. CI is green — Build & Test UI, Run UI linters, ESLint, Prettier, CodeQL all pass. The only actionable item is the optional rebase to pull in |
This PR contains the following updates:
🔧 This Pull Request updates lock files to use the latest dependency versions.
Configuration
📅 Schedule: (in timezone Etc/UTC)
* 0-3 * * 1)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR was generated by Mend Renovate. View the repository job log.