Skip to content

Dependabot has no cooldown, so it opens PRs into a 7-day install guard that rejects them #98

Description

@tps-flint

Dependabot opens PRs into a bake window that will reject them

The install step runs under a minimum release age of 7 days (604800 seconds), enforced at install time. Dependabot has no matching cooldown, so it opens a PR the moment a version publishes — into a guard that is guaranteed to refuse it.

The failure is unambiguous once you get past the log noise:

error: No version matching "typebox" found for specifier "1.3.14"
       (blocked by minimum-release-age: 604800 seconds)
error: typebox@1.3.14 failed to resolve
FAILED STEP: Run sfw bun install --frozen-lockfile

Confirmed on at least two open PRs with different ecosystems, so this is the mechanism rather than a one-off.

Neither component is misbehaving. The bake window is a deliberate supply-chain control and should stay. Dependabot is doing exactly what it is configured to do. The defect is that the two were never told about each other.

Why this produces a backlog rather than a blip

A PR blocked this way does not recover on its own. The version ages past the window within days, at which point the same PR would very likely pass — but nothing re-runs it. It stays red, accumulates, and reads like a broken dependency rather than a timing artifact.

The oldest open PR here dates from May. The most recent blocked one proposes a version that is now nine days old — comfortably past the window, still red, because the failing run is from the day it opened.

The second-order cost is worse than the queue itself: a wall of red dependency PRs trains everyone to stop reading them. When a genuinely broken bump appears, it looks exactly like the other nine.

Fix

Give Dependabot a cooldown that matches or exceeds the install guard, so it opens PRs only once a version can actually install. .github/dependabot.yml already sets schedule, groups and PR limits; this is the missing knob, not a restructure.

The two windows should be defined in terms of each other, or at minimum documented together with a comment on each pointing at the other — otherwise the next person to tune one silently re-creates this.

Also needed, separately

Re-run CI on the currently-blocked PRs whose versions have since aged out. Several are likely green now with no code change at all. Worth doing before anyone judges whether the bumps themselves are sound, since right now a timing artifact and a real breakage are indistinguishable at a glance.

Note: at least two of the open failures are not bake-age and have distinct causes. Those want individual attention and should not be swept into a bulk re-run.

Check

After the change, a freshly published version must produce no PR until it clears the window — and the first PR that does appear must install cleanly on its first run.

Assert both halves. A cooldown that is simply longer than anyone tests will look identical to a cooldown that works, right up until it does not.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency filegithub_actionsPull requests that update GitHub Actions code

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions