fix(deps): raise the js-yaml floor past GHSA-2883-xcg3-v3hh - #344
Merged
Conversation
`pnpm audit --audit-level high` runs inside `Verify extension`, a required
check, so this advisory blocked every pull request and master itself:
high js-yaml: maxTotalMergeKeys does not limit CPU use for empty merge
sources. vulnerable >=4.0.0 <4.3.2, patched >=4.3.2
.>eslint>@eslint/eslintrc>js-yaml (18 paths)
Confirmed repository-wide rather than branch-local: master fails the same audit.
`pnpm-workspace.yaml` already pinned `js-yaml: 4.3.1` exactly. That pin was the
vulnerable version, so the advisory landed on a dependency this repository had
already chosen to control -- the earlier fix became the next exposure precisely
because it was pinned exact.
Raised to `^4.3.2` rather than pinned exact again, so a future patch-level
advisory in this line resolves on the next install instead of blocking every
merge until someone edits this file. A caret is what a security floor wants; an
exact pin is a ceiling as well.
Kept in `pnpm-workspace.yaml`, which is where pnpm 11 reads overrides. A
`pnpm.overrides` block in `package.json` is silently ignored -- pnpm warns and
carries on, and the audit still fails, which is how the wrong location was
caught here.
Verified:
resolved js-yaml@4.3.2
pnpm audit --audit-level high No known vulnerabilities found (exit 0)
pnpm install --frozen-lockfile exit 0
lockfile diff js-yaml only; nothing else moved
eslint, tsc, prettier, wxt build, package verification, and the full suite all
pass, which matters because js-yaml reaches this project underneath eslint.
lamemustafa
marked this pull request as ready for review
September 9, 2026 06:32
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
lamemustafa
added a commit
that referenced
this pull request
Sep 9, 2026
Release Please force-pushed this branch when #344 merged, discarding both corrections (`064ebe2`, `d91447b`) and restoring the defects they fixed. Verified after the regeneration: the reverted #304 entry and the unqualified all-supported fiscal-year entry were both back, unmarked. Re-applied: - #304 "simplify selection and completion paths" is marked as reverted by #307 before this release. `11cc788` is literally `Revert "fix(filed-returns): simplify selection and completion paths (#304)"`, after a live authenticated run stalled on the first period of the year. - The full-year and all-supported entries are qualified as source-build only. The panel enables that flow solely under `MODE === "source-surfaces"` and Vite removes the JSX from a packaged build, so the released extension does not offer it. Re-scanned the regenerated section for any other reverted entry, short-SHA aware because revert bodies name the 7-character form. `b78b13d` is still the only one. This is the second time these corrections have been written, and an unrelated dependency bump is what erased them. Nothing detects the loss: if no one had looked, v0.6.0 would have shipped notes advertising a reverted fix and a flow the packaged build removes. Tracked in #342, which is about where corrections to generated release notes are supposed to live -- this commit is the workaround, not the answer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Raise the
js-yamlfloor past GHSA-2883-xcg3-v3hh.pnpm audit --audit-level highruns insideVerify extension, a required check, so this advisory blocked every pull request and masteritself.
Unblocks #337 and #343.
Root Cause / Decision Record
Confirmed repository-wide rather than branch-local before doing anything:
masterfails the sameaudit (
exit=1). Transitive and dev-only — it reaches this project underneath eslint and nothingin
src/, so no extension bundle is affected.The pin was already there, and was the vulnerable version.
pnpm-workspace.yamlpinnedjs-yaml: 4.3.1exactly. So this landed on a dependency the repository had already chosen tocontrol: the earlier fix became the next exposure because it was pinned exact.
Raised to
^4.3.2rather than pinned exact again. A caret is what a security floor wants; an exactpin is also a ceiling, and the next patch-level advisory in this line would otherwise block every
merge until someone edits the file by hand.
Two things worth recording, because both nearly produced a wrong change.
First, my initial fix added
pnpm.overridestopackage.json. pnpm 11 no longer reads thatfield — it warns and continues, and the audit still fails:
Only re-running the audit afterwards caught it. An edit that appears to apply and is silently
ignored is exactly the shape a "verified" fix hides behind.
Second, that block would have been a second copy of an override that already existed in
pnpm-workspace.yaml— the duplicate-of-a-canonical-fact shape this repository's defects keeptaking. Reverted, and the existing pin was raised instead.
Scope
src/; the package is dev-only and transitive.pnpm-workspace.yamloverride raised;pnpm-lock.yamlregenerated.same reason js-yaml was, and each is a future advisory that will block all merges the same way.
Not converted wholesale here — that is a deliberate policy change across eleven dependencies,
and it should be decided rather than smuggled into an unblocking fix.
Pack Workflow Preflight
pnpm workflow:preflightwas run before editing/push, or the skip reason is documented.Sanchika Adoption Gate
@sanchika/*packages or copied Sanchika guidance, Iread
sanchika/docs/adoption-pack.mdin the coordinated parent worktree.and records the Sanchika commit or copied guidance used.
../sanchika,sanchika/packages/*/src, or parentsource paths.
Privacy And Data-Flow Impact
Sensitive Surface Review
Chrome Web Store Impact
docs/PUBLICATION_READINESS.mdis checked.Verification
pnpm install --frozen-lockfilepnpm audit --audit-level highpnpm exec wxt preparepnpm exec prettier --check .pnpm exec eslint . --max-warnings 0pnpm exec tsc --noEmitpnpm exec vitest runpnpm exec wxt buildnode scripts/verify-extension-package.mjs .output/chrome-mv3pnpm exec wxt zipnode scripts/verify-extension-zip.mjsnode scripts/write-release-provenance.mjsnode scripts/verify-github-release-assets.mjs --tag <tag> --zip <zip> --checksum <sha256> --provenance <json>when release assets existnode scripts/publish-chrome-web-store.mjs --zip .output/<zip> --provenance .output/pack-release-provenance.v1.json --publisher-id <id> --dry-run truegit diff --checkpnpm review:gate -- --strict-head-review --wait-head-review-ms 180000before merge/readiness claim; a missing Codex review blocks readiness:The lockfile diff touches
js-yamland nothing else — 2 files, +7 −7. eslint passing is theload-bearing check, since that is how js-yaml reaches this project.
Artifact Evidence
9a7a1ab.PR Review Follow-Up
9a7a1ab; audit clean, frozen install clean, lockfile diff limited to js-yamlScreenshots
None — dependency resolution change.