Skip to content

fix(deps): restore the security sweep's resolutions lost in the sync - #63

Merged
radroid merged 1 commit into
mainfrom
t3x/relock-security-sweep
Aug 8, 2026
Merged

fix(deps): restore the security sweep's resolutions lost in the sync#63
radroid merged 1 commit into
mainfrom
t3x/relock-security-sweep

Conversation

@radroid

@radroid radroid commented Aug 8, 2026

Copy link
Copy Markdown
Owner

Landing the sync took open Dependabot alerts 6 → 27. This restores them.

The overrides: block survived the rebase intact (all 39 entries byte-identical), so the transitive pins were never at risk. What was lost is the other half of the sweep — the re-resolution.

Cause. Each of the three pnpm-lock.yaml conflicts was resolved with --ours, then the lock was regenerated with pnpm install --lockfile-only. That reads like the ledger's "regenerate rather than merge", but --lockfile-only preserves any existing pin that still satisfies the semver range — it does not float to newest. Seeding from upstream's lock therefore kept upstream's older resolutions:

package after the sweep as landed
undici 7.29.0 / 8.10.0 7.27.1 / 8.9.0
js-yaml 4.3.1 4.2.0
postcss 8.5.26 8.5.15
svgo 4.0.2 4.0.1
astro 7.2.0 7.0.3

Fix. Seed from the fork's own post-sweep lock (t3x/pre-sync-20260808) and let --lockfile-only reconcile that against upstream's new manifests. It still drops entries no longer required and adds upstream's new ones — it just keeps the higher resolutions where the ranges allow.

Re-verified present afterwards: electron 41.10.3, web-push, the nanoid@3.3.17 dedupe, the infra/t3x-update-relay importer.

Verification. typecheck, lint, and the full suite green. apps/web re-run on its own at 233/233 because astro's 7.0.3 → 7.2.0 minor bump touches the markdown pipeline; one earlier MessagesTimeline hook timeout was machine contention (it imports in 724ms in isolation), not a regression.

Worth carrying forward: a reopened Dependabot alert keeps its original created_at, so "every open alert predates the sync" is not evidence the sync is innocent. Diff resolved versions instead. Recipe added to the dependency playbook.

🤖 Generated with Claude Code

Landing the 2026-08-08 sync took open Dependabot alerts from 6 to 27. The
`overrides:` block survived intact — all 39 entries byte-identical — so the
transitive pins were never at risk. What was lost was the other half of the
sweep: the re-resolution.

Each of the three `pnpm-lock.yaml` conflicts in the rebase was resolved with
`--ours`, then the lock was regenerated with `pnpm install --lockfile-only`.
That reads like the ledger's "regenerate rather than merge", but
`--lockfile-only` *preserves any existing pin that still satisfies the semver
range* — it does not float to newest. Seeding the regeneration from upstream's
lock therefore kept upstream's older resolutions and silently reverted the
sweep: undici 7.29.0 → 7.27.1 and 8.10.0 → 8.9.0, js-yaml 4.3.1 → 4.2.0,
postcss 8.5.26 → 8.5.15, svgo 4.0.2 → 4.0.1, astro 7.2.0 → 7.0.3.

Fixed by seeding from the fork's own post-sweep lock (`t3x/pre-sync-20260808`)
and letting `--lockfile-only` reconcile that against upstream's new manifests,
which still drops entries no longer required and adds upstream's new ones — it
just keeps the higher resolutions where the ranges allow. Every version above is
back; electron 41.10.3, web-push, the nanoid@3.3.17 dedupe and the
infra/t3x-update-relay importer all re-verified present.

Verified on the resulting tree: typecheck, lint, and the full suite green,
including apps/web at 233/233 after astro's minor bump.

Note for next sync: a reopened Dependabot alert keeps its ORIGINAL `created_at`,
so "every open alert predates the sync" is not evidence the sync is innocent.
Diff the resolved versions instead.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 8, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4a15fc66-2562-4c06-bbe1-915f3ed4e276

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid merged commit 90caba1 into main Aug 8, 2026
2 checks passed
@radroid
radroid deleted the t3x/relock-security-sweep branch August 8, 2026 14:00
github-actions Bot pushed a commit that referenced this pull request Aug 10, 2026
The 2026-08-08 sync ran in two passes. This is the second: four more
upstream commits (usage page pingdotgg#5684 + chart fix pingdotgg#5697, mobile settings
sheet pingdotgg#5625, desktop zoom-shortcut fix pingdotgg#5691), merge-base a20923c.

Only two rows moved on the file-list half. ThreadComposer.tsx went
+26/-4 to +27/-4 because pingdotgg#5625 rewrote the file around the fork's edit
and the resolution re-attaches the line-break button to upstream's new
single settings trigger. pnpm-lock.yaml went +196/-143 to +317/-737,
which is PR #63's repair showing up rather than new churn.

That second number is the reason the lockfile note grew a paragraph.
The first pass resolved all three lock conflicts with --ours and ran
pnpm install --lockfile-only, which preserves any existing pin that
still satisfies the semver range instead of floating to the newest --
so seeding from upstream's lock silently discarded the security sweep
and reopened 21 Dependabot alerts. The overrides: block survived
byte-identical and did not save it. Seed from the fork's pre-sync lock.

Churn and risk are regenerated in the same commit, so both halves of
the ledger agree on one merge-base. server.ts churn 32 to 33.
radroid added a commit that referenced this pull request Aug 10, 2026
The 2026-08-08 sync ran in two passes. This is the second: four more
upstream commits (usage page pingdotgg#5684 + chart fix pingdotgg#5697, mobile settings
sheet pingdotgg#5625, desktop zoom-shortcut fix pingdotgg#5691), merge-base a20923c.

Only two rows moved on the file-list half. ThreadComposer.tsx went
+26/-4 to +27/-4 because pingdotgg#5625 rewrote the file around the fork's edit
and the resolution re-attaches the line-break button to upstream's new
single settings trigger. pnpm-lock.yaml went +196/-143 to +317/-737,
which is PR #63's repair showing up rather than new churn.

That second number is the reason the lockfile note grew a paragraph.
The first pass resolved all three lock conflicts with --ours and ran
pnpm install --lockfile-only, which preserves any existing pin that
still satisfies the semver range instead of floating to the newest --
so seeding from upstream's lock silently discarded the security sweep
and reopened 21 Dependabot alerts. The overrides: block survived
byte-identical and did not save it. Seed from the fork's pre-sync lock.

Churn and risk are regenerated in the same commit, so both halves of
the ledger agree on one merge-base. server.ts churn 32 to 33.
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