Skip to content

fix(deps): raise fast-uri floor, prep apps/mobile CVE overrides - #172

Merged
acamarata merged 5 commits into
mainfrom
p6/deps-high-sweep
Sep 4, 2026
Merged

acamarata merged 5 commits into
mainfrom
p6/deps-high-sweep

Conversation

@acamarata

Copy link
Copy Markdown
Collaborator

Summary

  • Root package.json: fast-uri override floor raised 3.1.5 -> 3.1.6 (resolved 3.1.7), clearing alerts fix(ci): Epic G T10 — remove wiki-sync continue-on-error (wiki initialized) #43-46 (host-confusion / SSRF via IDN and IPv6/percent-decoding normalization bugs, all high).
  • apps/mobile/package.json: adds/corrects override targets for js-yaml (now scoped to both the 3.x and 4.x lines it actually resolves -- was only catching a 4.x floor of 4.2.0), nanoid, brace-expansion (1.x + 2.x line-scoped), tar, shell-quote, postcss.

Known gap -- apps/mobile/pnpm-lock.yaml NOT regenerated

apps/mobile carries its own separate pnpm-lock.yaml, and its dependencies include workspace:* refs against the sibling nself-org/packages clone. Two approaches were tried and both failed to reproduce locally what CI's mobile-test job apparently does (pnpm install --frozen-lockfile, working-directory: apps/mobile):

  1. Plain pnpm install from apps/mobile -- pnpm walks up, finds the root pnpm-workspace.yaml (apps/mobile IS a listed member), and writes to the root shared lockfile instead of apps/mobile/pnpm-lock.yaml.
  2. pnpm install --ignore-workspace -- fails immediately: "@nself/auth-core@workspace:*" is in the dependencies but no package named "@nself/auth-core" is present in the workspace, since ignoring the workspace also drops the packages/@nself/* clone-in resolution the app needs.

The override targets above are correct and ready; someone with the exact local recipe (or CI itself, if there's a way to have it commit back) needs to actually run the install that produces apps/mobile/pnpm-lock.yaml. Logged in .claude/phases/current/p6/residue-register.md. This leaves alerts #1-6, #9, #11-14, #20, #22-25, #27-29, #32, #34-35 open on that specific file for now.

Test plan

  • Root: pnpm install --no-frozen-lockfile (under heavy-lock, sibling packages/ cloned in per CI's own recipe) -- resolved fast-uri@3.1.7
  • Root: pnpm install --frozen-lockfile -- exit 0
  • Verified resolved version directly in root pnpm-lock.yaml
  • apps/mobile/pnpm-lock.yaml -- not regenerated, see gap above

Ticket: P6 DEPENDABOT-HIGH-SWEEP unit (nself PPI phase P6)

…rgets

Root: fast-uri override floor raised 3.1.5 -> 3.1.6 (resolved 3.1.7),
clearing alerts #43-46 (host-confusion / SSRF via IDN and IPv6/percent
normalization bugs, all high).

apps/mobile: adds/corrects override targets for js-yaml (now scoped to
both the 3.x and 4.x lines it actually resolves, was only catching 4.x
and only up to 4.2.0), nanoid, brace-expansion (1.x + 2.x line-scoped),
tar, shell-quote, postcss -- clearing alerts #1-6,#9,#11-14,#20,#22-25,
just never installed).

NOT applied to apps/mobile/pnpm-lock.yaml in this commit: that file is
apps/mobile's own separate lockfile (its dependencies are declared
workspace:* against the sibling nself-org/packages clone), but neither
a plain `pnpm install` from apps/mobile (walks up and writes to the
ROOT shared lockfile instead, since apps/mobile is a listed member of
the root pnpm-workspace.yaml) nor `--ignore-workspace` (breaks
immediately on "@nself/auth-core@workspace:*" once workspace
resolution is off) regenerates it locally. CI's mobile-test job runs
`pnpm install --frozen-lockfile` from apps/mobile and appears to
expect a genuinely standalone lockfile there via some mechanism this
sweep could not reproduce outside that runner. Logged in the P6 residue
register for the manager -- the override targets above are ready to
take effect once someone with the working local recipe (or CI itself,
if it's set up for auto-commit) regenerates that file.

Ticket: P6 DEPENDABOT-HIGH-SWEEP unit (nself PPI phase P6)
@vercel

vercel Bot commented Sep 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
ntask-web Ignored Ignored Preview Sep 4, 2026 9:48am UTC

Request Review

Dependency Audit (OSV) job on PR #172 caught two fixable mediums in the
root lockfile that weren't in the original Dependabot high/critical
sweep:
- @xmldom/xmldom: existing unscoped override '^0.9.10' bumped to a
  0.9.x-scoped '@xmldom/xmldom@>=0.9.0 <1': '>=0.9.12' (GHSA-6gmq-8vp8-gcm6)
- qs: new override '>=6.16.0' (GHSA-4mjr-xmp4-gh2g, GHSA-x5fp-wj9c-mxmx)

Both resolved and verified in pnpm-lock.yaml (xmldom 0.9.12, qs 6.16.0).
image-size is already filtered out of this OSV gate (no fix available,
per the earlier P6 residue-register entry).

Ticket: P6 DEPENDABOT-HIGH-SWEEP unit (nself PPI phase P6)
The prior commit's '@xmldom/xmldom@>=0.9.0 <1' scope left a second
resolution at 0.7.13 untouched (a different @expo/plist major pins
'^0.7'), carrying 5 open high alerts (GHSA-2v35-w6hq-6mfw,
GHSA-f6ww-3ggp-fr8h, GHSA-j759-j44w-7fr8 -> fixed 0.8.13;
GHSA-wh4c-j3r5-mjhp -> 0.8.12; GHSA-6gmq-8vp8-gcm6 -> 0.8.15).

Adds a second scoped override '@xmldom/xmldom@>=0.7.0 <0.9.0':
'>=0.8.15' alongside the existing 0.9.x one. Both @expo/plist@0.2.2 and
@expo/plist@0.3.5 now dedupe onto the same 0.9.12 resolution --
'pnpm -r why @xmldom/xmldom' reports 'Found 1 version of
@xmldom/xmldom' across the whole workspace tree.

Also verified (no code change needed, already fixed by the pre-existing
root override): tar -- 'pnpm -r why tar' shows a single tar@7.5.22
resolution workspace-wide, satisfying GHSA-23hp-3jrh-7fpw's 7.5.19
floor. That advisory's Dependabot alert (#18, critical) is filed
against apps/mobile/pnpm-lock.yaml specifically, a separate, disconnected
lockfile this sweep has already documented as unreachable via any local
pnpm install (see prior commit + P6 residue register) -- root being
clean does not close that alert.

Ticket: P6 DEPENDABOT-HIGH-SWEEP unit (nself PPI phase P6)
apps/mobile is a pnpm workspace member, so pnpm never reads this file; the
root lockfile governs. It only fed Dependabot 29 high/critical alerts
(incl. tar GHSA-23hp-3jrh-7fpw) against versions nothing installs.
apps/mobile/pnpm-lock.yaml was removed (dead nested lockfile); setup-node
fails hard when cache-dependency-path matches nothing.
@acamarata
acamarata merged commit 4fa5078 into main Sep 4, 2026
17 checks passed
@acamarata
acamarata deleted the p6/deps-high-sweep branch September 4, 2026 10:25
acamarata added a commit that referenced this pull request Sep 13, 2026
ntask main's Dependency Audit (OSV) went red on 2026-09-13 against commit
4fa5078 — the same commit that passed on 09-04 and 09-06. The code did
not change; the advisory database did.

  hono@<4.13.5     -> ^4.13.5
  js-yaml@<4.3.2   -> ^4.3.2
  vitest@<4.1.11   -> ^4.1.11

but pnpm-lock.yaml was never regenerated, so it still pinned hono@4.13.2,
js-yaml@4.3.1 and vitest@3.2.6. OSV scans the lockfile, not the override
block, so those overrides were inert and the audit stayed red. This is the
missing half of #172.

After a fresh install the lockfile resolves hono@4.13.7, js-yaml@4.3.2 and
vitest@4.1.11.

The vitest override crosses a major, so the three packages that declare it
(web, apps/cli, apps/mcp) move from ^3.2.6 to ^4.1.11 to match rather than
silently diverge from the resolved tree. Vitest 4 also removed the
"poolOptions" nesting — those per-pool settings are top-level options now —
so web/vitest.config.ts is migrated, which clears the DEPRECATED warning the
first v4 run emitted. Behaviour is unchanged: one bounded fork, same 2GB
execArgv ceiling.

Verified locally on 4.1.11:
  web        28 files / 461 tests pass
  apps/cli    4 files /  16 tests pass
  apps/mcp    1 file  /   2 tests pass
  sharded coverage gate: lines 54.05% >= 54%, functions 46.65% >= 40%,
                         branches 44.61% >= 40%

No gate weakened: no IgnoredVulns entry added, no threshold lowered, no
test skipped.
acamarata added a commit that referenced this pull request Sep 13, 2026
)

* fix(deps): regenerate lockfile so the CVE overrides actually apply

ntask main's Dependency Audit (OSV) went red on 2026-09-13 against commit
4fa5078 — the same commit that passed on 09-04 and 09-06. The code did
not change; the advisory database did.

  hono@<4.13.5     -> ^4.13.5
  js-yaml@<4.3.2   -> ^4.3.2
  vitest@<4.1.11   -> ^4.1.11

but pnpm-lock.yaml was never regenerated, so it still pinned hono@4.13.2,
js-yaml@4.3.1 and vitest@3.2.6. OSV scans the lockfile, not the override
block, so those overrides were inert and the audit stayed red. This is the
missing half of #172.

After a fresh install the lockfile resolves hono@4.13.7, js-yaml@4.3.2 and
vitest@4.1.11.

The vitest override crosses a major, so the three packages that declare it
(web, apps/cli, apps/mcp) move from ^3.2.6 to ^4.1.11 to match rather than
silently diverge from the resolved tree. Vitest 4 also removed the
"poolOptions" nesting — those per-pool settings are top-level options now —
so web/vitest.config.ts is migrated, which clears the DEPRECATED warning the
first v4 run emitted. Behaviour is unchanged: one bounded fork, same 2GB
execArgv ceiling.

Verified locally on 4.1.11:
  web        28 files / 461 tests pass
  apps/cli    4 files /  16 tests pass
  apps/mcp    1 file  /   2 tests pass
  sharded coverage gate: lines 54.05% >= 54%, functions 46.65% >= 40%,
                         branches 44.61% >= 40%

No gate weakened: no IgnoredVulns entry added, no threshold lowered, no
test skipped.

* fix(deps): refresh lockfile against current nself-org/packages

The previous lockfile was generated against a local packages/ clone that
was 12 days stale (3e6d061, 2026-08-31) while origin/main is bf33eda3
(2026-09-12). CI clones packages fresh on every run, so its package.json
set did not match what the lockfile recorded and both installs died:

  ERR_PNPM_OUTDATED_LOCKFILE  Cannot install with frozen-lockfile
  because pnpm-lock.yaml is not up to date with
  <ROOT>/packages/@nself-web/csp/package.json

Regenerated against packages@bf33eda3. Verified pnpm install
--frozen-lockfile now exits 0, the same invocation both CI jobs use, and
web still passes 28 files / 461 tests.
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