Skip to content

fix(deps): remediate critical tinypool advisories via oxfmt 0.74.0 - #42

Merged
corwinm merged 1 commit into
mainfrom
fix/tinypool-security-oct23
Oct 24, 2026
Merged

corwinm merged 1 commit into
mainfrom
fix/tinypool-security-oct23

Conversation

@corwinm

@corwinm corwinm commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Security remediation

  • Update only oxfmt 0.41.0 → 0.74.0, its matching native bindings, and its upstream-pinned tinypool 2.1.0 → 2.2.0. Only package.json and package-lock.json change; no routine dependency drift or overrides.
  • Fix both critical prototype-pollution-to-code-execution advisories: GHSA-5gmw-xhrv-c9v3 (patched in 2.1.1) and GHSA-85c8-ppgw-ccpr (patched in 2.1.2).
  • Unchanged-base npm audit --json: two critical affected packages (oxfmt, tinypool). Updated audit: zero vulnerabilities. npm ls oxfmt tinypool --all confirms the only path is oxfmt@0.74.0 → tinypool@2.2.0.
  • The live open Dependabot alert list is empty; the baseline package-manager audit and public advisory metadata independently establish the finding.

Explicit pre-1.0 breaking-version migration review

This is a separate security/tooling migration, not a routine patch/minor sweep. Use the maintained upstream parent release recommended by audit, rather than overriding an older parent's exact Tinypool pin.

  • Reviewed 0.74.0 release, 0.72.0 native Markdown transition, 0.73.0 migration/config changes, and the released package changelog. Native Markdown, embedded code, CLI/config discovery, optional peers, and external worker behavior were checked.
  • Oxfmt's Node floor remains ^20.19.0 || >=22.12.0; repository Node >=24.0.0 and CI Node 24 satisfy it. Local verification used Node 24.22.1.
  • Existing CLI commands, printWidth: 100 JSON configuration/schema, EditorConfig, and lint-staged invocations work unchanged. No Prettier migration command, Rust crate API, Vite+, Astro or Svelte integration is consumed here; their migration/optional peer changes need no repository edits.
  • Tinypool 2.2.0 removes CJS references; oxfmt uses ESM and named worker exports. Its CLI uses child_process workers. Native Markdown checks alone do not establish worker compatibility, so external HTML and actual worker exports were exercised separately.
  • All existing tracked files remain correctly formatted; no mass reformat or config migration is needed.

Verification

  • npm ci
  • npm run fmt:check
  • npm run shell:fmt:check
  • npm run lint
  • npm run shell:check
  • npm run typecheck
  • npm run check (real CLI help)
  • npm test — 284/284 pass in a disposable normal clone with the exact same base and candidate package files; see worktree caveat below.
  • npm audit --json — zero vulnerabilities
  • npm ls oxfmt tinypool --all
  • git diff --check and parsed lockfile comparison — importer, oxfmt/native bindings and Tinypool only
  • Disposable behavior smoke: real formatter CLI writes and checks JS, TS, Markdown with a JS fence, and HTML; bounded processes exit normally. Actual oxfmt formatFile named worker tasks format Markdown and HTML under both child_process and worker_threads, then destroy() completes. Harmless inherited constructor execArgv/env and per-run filename probes prove inherited options are ignored.
  • Real configured lint-staged pipeline on staged disposable JS/TS/Markdown/HTML fixtures: oxlint/oxfmt tasks pass, files are reformatted, and a subsequent formatter check passes. Separate temporary Git index and clone preserve the PR index; fixtures were removed. The normal commit hook also passes.
  • Independent repository-aware pre-commit review: APPROVE, no actionable findings, against base 48ebbbd381747484691748cd76303ef061ae805c.

Existing worktree-only test failure

In the linked worktree, npm test gives 283 passes and one failure: --restore returns a synced TPM checkout to a clean install. The sync script excludes .git/ directories, not linked-worktree .git files; macOS rsync fails with .git: unlinkat: Directory not empty. The same focused test fails on unchanged origin/main in a detached sibling worktree. Applying this exact candidate diff to a disposable normal clone makes all 284 tests pass. This unrelated sync-script issue is not changed in this security PR; normal-checkout Linux CI remains the remote authority.

Remote checks are reported by GitHub on this PR's exact head. No merge or auto-merge is requested.

Remote CI

Exact-head workflow run passed for abe0ccf581f4fb000168129c1a1b9272263ba53c.

CI emits an existing Actions Node 20 deprecation annotation for checkout/setup-node v4 (runner forces Node 24); action-version drift is deliberately outside this focused remediation.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-23T16:45:47.906364Z
We couldn’t complete this review. Comment @codex review to try again.
abe0ccf PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@corwinm
corwinm merged commit 41e10ec into main Oct 24, 2026
1 check passed
@corwinm
corwinm deleted the fix/tinypool-security-oct23 branch October 24, 2026 02:14
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