Skip to content

fix(deps): align design-tokens lockfile ref with v0.30.0 tag - #2832

Closed
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/dependency-update-risk-assessment-351b
Closed

fix(deps): align design-tokens lockfile ref with v0.30.0 tag#2832
cursor[bot] wants to merge 1 commit into
mainfrom
cursor/dependency-update-risk-assessment-351b

Conversation

@cursor

@cursor cursor Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Asana Task/Github Issue: Follow-up to #2830 (Dependabot downgrade PR for @duckduckgo/design-tokens)

Description

Dependabot opened #2830 proposing a change from @duckduckgo/design-tokens#v0.30.0 to #v0.29.0 — a version downgrade caused by Git-tag semver comparison on a Git-pinned devDependency.

This adds an ignore rule in .github/dependabot.yml to skip versions < 0.30.0 for @duckduckgo/design-tokens, preventing recurrence of spurious downgrade PRs.

When a legitimate upgrade beyond v0.30.0 is published, Dependabot should still open a PR normally.

Testing Steps

  • N/A (Dependabot config only). Verify the YAML is valid and the ignore rule matches the intended version floor.

Checklist

  • I have tested this change locally
  • I have tested this change locally in all supported browsers
  • This change will be visible to users
  • I have added automated tests that cover this change
  • I have ensured the change is gated by config
  • This change was covered by a ship review
  • This change was covered by a tech design
  • Any dependent config has been merged
Open in Web View Automation 

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Build Branch

Branch pr-releases/cursor/dependency-update-risk-assessment-351b
Commit 35d8cc299f
Updated July 10, 2026 at 11:55:45 AM UTC

Static preview entry points

QR codes (mobile preview)
Entry point QR code
Docs QR for docs preview
Static pages QR for static pages preview
Integration pages QR for integration pages preview

Integration commands

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#pr-releases/cursor/dependency-update-risk-assessment-351b

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", branch: "pr-releases/cursor/dependency-update-risk-assessment-351b")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/cursor/dependency-update-risk-assessment-351b
git -C submodules/content-scope-scripts checkout origin/pr-releases/cursor/dependency-update-risk-assessment-351b
Pin to exact commit

npm (Android / Extension):

npm i github:duckduckgo/content-scope-scripts#35d8cc299fc71ff65ab89c37628692fb09630ebe

Swift Package Manager (Apple):

.package(url: "https://github.com/duckduckgo/content-scope-scripts.git", revision: "35d8cc299fc71ff65ab89c37628692fb09630ebe")

git submodule (Windows):

git -C submodules/content-scope-scripts fetch origin pr-releases/cursor/dependency-update-risk-assessment-351b
git -C submodules/content-scope-scripts checkout 35d8cc299fc71ff65ab89c37628692fb09630ebe

@github-actions github-actions Bot added the semver-patch Bug fix / internal — no release needed label Jul 2, 2026
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

[Beta] Generated file diff

Time updated: Fri, 10 Jul 2026 11:56:18 GMT

@jonathanKingston

Copy link
Copy Markdown
Contributor

@cursoragent why would it downgrade, did a real pr add this and then the cooldown applied? Seems like cooldown should only apply when automatic, no?

@cursor

cursor Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

Short answer: cooldown didn’t cause this. The downgrade was a Dependabot quirk with git-pinned deps, not cooldown blocking an upgrade and falling back to an older tag.

What actually happened

  1. Jun 26 — Dependabot PR build(deps-dev): bump @duckduckgo/design-tokens from v0.29.0 to v0.30.0 #2805 merged: v0.29.0v0.30.0 (legitimate upgrade).
  2. Jul 2 (~6 days later) — Dependabot opened build(deps-dev): bump @duckduckgo/design-tokens from v0.30.0 to v0.29.0 #2830: v0.30.0v0.29.0 (spurious downgrade).

So yes, a real PR landed first; the downgrade was a separate scheduled run, not cooldown undoing the merge.

Why the downgrade PR appeared

@duckduckgo/design-tokens is pinned as a GitHub git ref, not an npm semver package:

    "@duckduckgo/design-tokens": "github:duckduckgo/design-tokens#v0.30.0",

After #2805 merged, the lockfile was already inconsistent:

  • special-pages/package.json → tag #v0.30.0
  • package-lock.json (workspace section) → commit SHA #f7ecae71... (v0.30.0’s commit)

The downgrade PR then:

  • Changed package.json from #v0.30.0 to v0.29.0’s commit SHA
  • Moved the lockfile entry from hoisted node_modules/@duckduckgo/design-tokens to special-pages/node_modules/@duckduckgo/design-tokens
  • Set version 0.29.0

That pattern matches Dependabot mis-resolving git refs in an npm workspace (tag vs SHA, hoisting), not cooldown logic. Same class of bug as dependabot-core#12076 for git-pinned deps.

Cooldown’s role (or lack of one)

Cooldown (default-days: 14, added in #2661 / bumped in #2727) means: if a newer version was published recently, skip opening a version-update PR for it.

Per GitHub’s docs, when a version is in cooldown, Dependabot skips the dependency — it does not pick the next-oldest eligible tag. There’s no “only when automatic” switch; cooldown is keyed off publish date, not whether the previous bump was auto-merged or human-merged.

Timeline note: v0.30.0 landed Jun 26, downgrade opened Jul 2 — inside the 14-day window. That’s consistent with v0.30.0 being “too new” for another forward bump, but not with opening a reverse bump. If cooldown were working as documented, the expected behavior after #2805 was no PR at all, not a downgrade.

On “cooldown should only apply when automatic”

Two different things:

Mechanism What it does
Dependabot cooldown Delays Dependabot’s own version-update PRs by publish age. Humans can merge dependency bumps anytime; cooldown doesn’t block that.
Our auto-merge gate (dependabot-auto-merge.yml) Only runs on Dependabot PRs; unrelated to cooldown.

Dependabot has no “exempt human-merged bumps from cooldown” option. If you want specific deps to bypass cooldown, use cooldown.exclude in dependabot.yml. That wouldn’t have prevented this downgrade though — the fix here is the ignore: versions: ['< 0.30.0'] rule, which blocks sub-floor tags regardless of cooldown.

Bottom line: #2805 was real and correct. #2830 was a git-ref resolution artifact ~6 days later. Cooldown may have suppressed a forward bump to v0.30.0+ if one existed, but it shouldn’t cause downgrades; the ignore rule is the right guard for this package shape.

Open in Web Open in Cursor 

@jonathanKingston

Copy link
Copy Markdown
Contributor

@cursoragent can you fix the lockfile/package accordingly instead of ignore the versions?

@cursor

cursor Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

Done — switched from the dependabot.yml ignore workaround to a lockfile fix.

Root cause: After #2805, refs were inconsistent:

  • special-pages/package.json + workspace lockfile entry → #v0.30.0 (tag)
  • node_modules/@duckduckgo/design-tokens resolved → commit SHA f7ecae71…

That tag/SHA mismatch is what led Dependabot to open the spurious downgrade in #2830.

Change: Pin the lockfile resolved field to the tag as well:

      "resolved": "git+ssh://git@github.com/duckduckgo/design-tokens.git#v0.30.0",
  • Removed the ignore rule from .github/dependabot.yml
  • Rebased onto latest main
  • Verified npm ci passes

PR #2832 updated: #2832

Open in Web Open in Cursor 

Dependabot #2830 proposed a downgrade after #2805 left the lockfile
resolved field pinned to the v0.30.0 commit SHA while package.json and
the workspace lockfile entry used the #v0.30.0 tag. Pin the resolved ref
to the tag as well so Dependabot sees a consistent git ref.

Co-authored-by: Jonathan Kingston <jonathanKingston@users.noreply.github.com>
@cursor
cursor Bot force-pushed the cursor/dependency-update-risk-assessment-351b branch from 6520600 to bfbdaa2 Compare July 10, 2026 11:54
@cursor cursor Bot changed the title chore(deps): ignore @duckduckgo/design-tokens downgrade PRs in Dependabot fix(deps): align design-tokens lockfile ref with v0.30.0 tag Jul 10, 2026

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Injected PR Evaluation: Web Compatibility & Security

Trigger: synchronize (71b45d08bfbdaa22)
Scope: 1 file (package-lock.json), +1/−1 — lockfile resolved ref alignment only.


Web Compatibility Assessment

File Lines Severity Finding
No findings. Zero changes to injected/, messaging/, wrapper utilities, API shims, or DOM/runtime code.
package-lock.json 793 info Aligns @duckduckgo/design-tokens resolved from commit SHA (f7ecae71…) to tag ref (v0.30.0). Version stays 0.30.0 and integrity is unchanged, so resolved package content is identical.
package-lock.json info @duckduckgo/design-tokens is a devDependency in special-pages/ used only at build time for CSS custom-property imports (design-tokens.css). It is not bundled into page-injected scripts and does not affect third-party website API fidelity.

Security Assessment

File Lines Severity Finding
No findings. No changes to captured globals, messaging transports, message-bridge trust boundaries, origin validation, or config-gated feature logic.
package-lock.json 793 info Lockfile metadata-only change; no new network surfaces, postMessage usage, or runtime dependency resolution changes in injected bundles.

Risk Level

Low Risk — single lockfile metadata alignment for a special-pages build-time devDependency; no injected runtime code changes.


Recommendations

  1. info — Title/diff mismatch: PR title references ignoring @duckduckgo/design-tokens downgrade PRs in Dependabot, but this diff contains only the lockfile tag alignment. If Dependabot ignore rules are still intended, they would need a separate .github/dependabot.yml change (out of injected scope, but worth clarifying for reviewers).
  2. info — Safe to merge from injected perspective: Unchanged integrity hash confirms the tag resolves to the same artifact already on main; npm run build --workspace=special-pages passes locally with the PR lockfile.

Automated assessment for injected web compatibility & security.

Open in Web View Automation 

Sent by Cursor Automation: Web compat and sec

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

semver-patch Bug fix / internal — no release needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants