Skip to content

chore(deps): refresh runtime and build dependencies - #79

Merged
steipete merged 1 commit into
mainfrom
triage/dependency-refresh
Aug 2, 2026
Merged

chore(deps): refresh runtime and build dependencies#79
steipete merged 1 commit into
mainfrom
triage/dependency-refresh

Conversation

@steipete

@steipete steipete commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

What changed

  • Update @napi-rs/cli 3.7.4 → 3.8.1, @types/node 26.1.1 → 26.1.2, and Vite 8.1.5 → 8.2.0.
  • Update the native crate graph: N-API 3.11.0 → 3.12.0, N-API derive 3.6.0 → 3.6.2, N-API build 2.3.2 → 2.4.0, and ZIP 6.0.0 → 8.6.0, plus compatible transitives.
  • Raise the private native workspace's accurate minimum Rust version from 1.85 to 1.88, matching the updated N-API and ZIP crates.
  • Advance the SHA-pinned CodeQL v4 action to its current moving-tag commit.

This supersedes #77 with the latest @napi-rs/cli patch and the rest of the repository-wide freshness pass.

Major-version review

ZIP 7 removed feature flags this repository does not use. ZIP 8 removed deprecated DateTime methods; the native archive code does not call them. The current read/write APIs used here (ZipArchive, ZipWriter, and SimpleFileOptions) remain available. The target is the latest stable 8.6.0, not the 9.0 prerelease line.

pnpm 11.18.0 was evaluated but intentionally not adopted: a clean target-version install expanded the host graph from 147 packages to a 267-package cross-platform optional-target verification/download pass and could not complete reliably. Keeping pnpm 10.34.5 preserves the proven install contract.

Local proof

  • Node 24.18.0, pnpm 10.34.5.
  • pnpm check — build/package check passed; 605 tests passed, 23 skipped.
  • pnpm test:security — 62 passed.
  • pnpm docs:site — built successfully with Vite 8.2.0.
  • pnpm outdated -r --format json — no remaining npm package updates.
  • pnpm audit --audit-level high --json — zero vulnerabilities.
  • Cargo 1.97.1: cargo metadata --manifest-path native/Cargo.toml --no-deps --locked --format-version 1 passed; cargo update --dry-run reported zero updates.
  • AutoReview — clean, no accepted/actionable findings.
  • git diff --check — clean.

Real built-library integration exercised the public root and archive boundaries: an in-root write/read returned safe boundary, ../escape.txt failed with outside-workspace, and a generated ZIP extracted through the guarded JavaScript path with archive boundary intact.

Hosted native builds/tests and bundled-package smoke across Linux, macOS, and Windows remain the final proof for the Rust major.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​@​types/​node@​26.1.1 ⏵ 26.1.21001008196 +1100
Updatedcargo/​napi@​3.11.0 ⏵ 3.12.08210093100100
Updatednpm/​vite@​8.1.5 ⏵ 8.2.099 +110082 +198100
Updatedcargo/​napi-build@​2.3.2 ⏵ 2.4.09810093100100
Updatedcargo/​napi-derive@​3.6.0 ⏵ 3.6.29910093100100
Updatedcargo/​zip@​6.0.0 ⏵ 8.6.0100 +110093100100

View full report

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. labels Aug 2, 2026
@clawsweeper

clawsweeper Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex review: needs real behavior proof before merge. Reviewed August 1, 2026, 9:42 PM ET / August 2, 2026, 01:42 UTC.

ClawSweeper review

What this changes

The PR refreshes npm and Rust build dependencies, upgrades the private native archive reader from ZIP 6 to ZIP 8, raises its Rust minimum version to 1.88, and advances the SHA-pinned CodeQL v4 action.

Merge readiness

Blocked until stronger real behavior proof is added - 3 items remain

Keep this fresh dependency-refresh PR open for normal review: current main does not contain its changes, and the ZIP 8/native toolchain update still needs a clean Windows platform result plus inspectable after-fix boundary proof before merge.

Priority: P3
Reviewed head: 631f6d95cc6bb0acea98595af7fa358ea3300a1b

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The patch is focused and preserves the guarded implementation, but real behavior proof is only asserted in prose and platform-native validation is not fully clean yet.
Proof confidence 🦪 silver shellfish (2/6) Needs stronger real behavior proof before merge: The PR body describes a successful built-library root and ZIP extraction run, but it provides no inspectable terminal output, log, recording, or artifact; attach a redacted transcript after the remaining platform checks complete. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Patch quality 🦐 gold shrimp (3/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Needs proof Needs stronger real behavior proof before merge: The PR body describes a successful built-library root and ZIP extraction run, but it provides no inspectable terminal output, log, recording, or artifact; attach a redacted transcript after the remaining platform checks complete. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed 5 items Current main does not include this branch: The PR head is not an ancestor of current main; all six touched paths remain different between the branch and main, so this is not obsolete or already implemented work.
Native archive boundary remains central: The archive implementation opens ZIP files, validates the observed kind and size against the pre-evaluated plan, and writes through guarded platform helpers; the PR changes its ZIP dependency from 6.0.0 to 8.6.0 without changing this code.
Resolved native graph is pinned: The PR lockfile resolves napi 3.12.0, napi-build 2.4.0, napi-derive 3.6.2, and zip 8.6.0 from crates.io with checksums.
Findings None None.
Security None None.

How this fits together

@openclaw/fs-safe gives Node.js applications capability-style filesystem roots and guarded archive extraction. JavaScript policy evaluation feeds the native N-API archive path, which verifies archive entries before writing only beneath the permitted root.

flowchart LR
  A[Node.js caller] --> B[Guarded filesystem API]
  B --> C[Archive entry policy]
  C --> D[Native ZIP reader]
  D --> E[Identity and root checks]
  E --> F[Constrained extracted files]
Loading

Before merge

  • Add real behavior proof - Needs stronger real behavior proof before merge: The PR body describes a successful built-library root and ZIP extraction run, but it provides no inspectable terminal output, log, recording, or artifact; attach a redacted transcript after the remaining platform checks complete. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Resolve merge risk (P1) - ZIP 8 and the N-API build update change the native archive build graph that produces bundled platform binaries; the current check set includes one failed Windows Node 24 job and three unfinished Windows/native/package-smoke jobs, so release-platform availability is not yet fully demonstrated.
  • Complete next step (P2) - This needs contributor-supplied real behavior evidence and completion of normal platform validation rather than a separate automated repair branch.
Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Dependency surface 6 files affected; 405 added, 369 removed Most of the patch is generated lockfile churn, while the semantic changes are confined to native build metadata, package metadata, CodeQL pinning, and the Unreleased note.
Native major upgrade ZIP 6.0.0 → 8.6.0; Rust 1.85 → 1.88 This is the merge-critical compatibility change because the native component backs guarded archive extraction and packaged platform binaries.

Root-cause cluster

Relationship: canonical
Canonical: #79
Summary: This PR supersedes the overlapping development-dependency refresh with newer requested versions and adds the associated native/tooling update.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge-risk options

Maintainer options:

  1. Complete platform validation before merge (recommended)
    Resolve or rerun the failed Windows Node 24 check and wait for the pending Windows native and bundled-package checks before merging the ZIP 8 native build update.
  2. Pause the refresh if Windows support regresses
    Hold this dependency refresh if the failed Windows job identifies a native archive or packaging regression that cannot be repaired without changing the security boundary.

Technical review

Best possible solution:

Land the refreshed dependency graph only after the Windows failure is understood or rerun cleanly, all native package-platform checks complete, and a redacted real integration transcript confirms root confinement and guarded ZIP extraction still behave identically.

Do we have a high-confidence way to reproduce the issue?

Not applicable: this PR is a dependency/toolchain refresh, not a report of broken existing behavior. The relevant validation is platform-native build and packaged archive-boundary behavior after the update.

Is this the best way to solve the issue?

Yes, conditionally: keeping the existing guarded archive code unchanged while updating its resolved dependency graph is the narrowest approach, provided the remaining Windows/platform evidence confirms it preserves the contract.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against ab933820c089.

Labels

Label changes:

  • add P3: This is routine build and dependency maintenance with no confirmed user-facing regression.
  • add merge-risk: 🚨 availability: The PR updates the native archive build graph while Windows validation is not yet cleanly complete.
  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • add status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body describes a successful built-library root and ZIP extraction run, but it provides no inspectable terminal output, log, recording, or artifact; attach a redacted transcript after the remaining platform checks complete. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Label justifications:

  • P3: This is routine build and dependency maintenance with no confirmed user-facing regression.
  • merge-risk: 🚨 availability: The PR updates the native archive build graph while Windows validation is not yet cleanly complete.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR body describes a successful built-library root and ZIP extraction run, but it provides no inspectable terminal output, log, recording, or artifact; attach a redacted transcript after the remaining platform checks complete. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Evidence

What I checked:

  • Current main does not include this branch: The PR head is not an ancestor of current main; all six touched paths remain different between the branch and main, so this is not obsolete or already implemented work. (native/Cargo.toml:7, 631f6d95cc6b)
  • Native archive boundary remains central: The archive implementation opens ZIP files, validates the observed kind and size against the pre-evaluated plan, and writes through guarded platform helpers; the PR changes its ZIP dependency from 6.0.0 to 8.6.0 without changing this code. (native/src/archive.rs:563, ab933820c089)
  • Resolved native graph is pinned: The PR lockfile resolves napi 3.12.0, napi-build 2.4.0, napi-derive 3.6.2, and zip 8.6.0 from crates.io with checksums. (Cargo.lock:564, 631f6d95cc6b)
  • Feature-history provenance: The current native archive implementation and its initial dependency set date to the v0.5.0 release commit; later history also shows archive-hardening work by the same contributor. (native/Cargo.toml:16, 66201c1f347a)
  • Repository policy applies: The full repository policy requires preserving archive/root safeguards, keeping lockfiles generated by the package manager, updating Unreleased for operational changes, and validating focused security regressions. (AGENTS.md:1, ab933820c089)

Likely related people:

  • Peter Steinberger: Git history and blame attribute the v0.5.0 native workspace and the guarded ZIP extraction path to Peter Steinberger; earlier archive-hardening commits also show sustained ownership of this boundary. (role: introduced and recently maintained the native archive surface; confidence: high; commits: 66201c1f347a, 59b91125a364, 631f6d95cc6b; files: native/Cargo.toml, native/src/archive.rs, Cargo.lock)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Attach a redacted terminal transcript or linked artifact showing the post-update root-confinement and guarded ZIP extraction checks.
  • Resolve or rerun the Windows Node 24 failure and wait for the pending Windows native/package-smoke jobs.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@steipete

steipete commented Aug 2, 2026

Copy link
Copy Markdown
Contributor Author

Exact-head proof for 631f6d95cc6bb0acea98595af7fa358ea3300a1b is complete.

Local proof on Node 24.18.0 / pnpm 10.34.5:

  • pnpm check: passed (lint, build, 605 tests passed / 23 skipped, package-consumer smoke).
  • pnpm test:security: 62 passed.
  • pnpm docs:site: built successfully.
  • pnpm audit: zero vulnerabilities across 276 dependencies.
  • pnpm outdated -r --format json: {}.
  • cargo metadata --no-deps --locked and cargo update --dry-run: passed, with zero pending Rust updates.
  • Built-library integration wrote/read through a guarded root, rejected ../escape.txt with outside-workspace, and created/extracted a ZIP through the public guarded API.

Hosted proof is green on the same commit: native checks passed on Ubuntu, macOS, Windows, and Linux musl; bundled-package smoke passed on Ubuntu, macOS, and Windows; Cargo clippy/audit, Node 22 on all three operating systems, Node 24 on all three operating systems, security/coverage, CodeQL, actionlint, and Socket checks passed.

The first Windows Node 24 attempt hit an intermittent existing sidecar-lock EPERM in new-primitives.test.ts. The failed job passed when rerun unchanged, and all other Windows jobs—including native and packaged-consumer proof—were already green. Run: https://github.com/openclaw/fs-safe/actions/runs/30727445350

@steipete
steipete force-pushed the triage/dependency-refresh branch from 631f6d9 to a841e09 Compare August 2, 2026 02:06
@clawsweeper

clawsweeper Bot commented Aug 2, 2026

Copy link
Copy Markdown

ClawSweeper status: review started.

I am starting a fresh review of this pull request: chore(deps): refresh runtime and build dependencies This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

@steipete
steipete merged commit 0b34d83 into main Aug 2, 2026
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 availability 🚨 Merging this PR could cause crashes, hangs, restart loops, stalls, or process outages. P3 Low-risk cleanup, docs, polish, ergonomics, or speculative feature. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant