Align Dependabot with pnpm's minimumReleaseAge supply-chain gate#815
Merged
Conversation
Copilot created this pull request from a session on behalf of
jthrilly
July 6, 2026 14:05
View session
jthrilly
marked this pull request as ready for review
July 6, 2026 14:16
Contributor
There was a problem hiding this comment.
Pull request overview
This PR aims to keep Dependabot PRs compatible with pnpm’s minimumReleaseAge supply-chain gate by delaying routine update PRs until versions are old enough, while adding a two-stage workflow to fast-track exemptions for urgent security updates without granting untrusted PR code write permissions.
Changes:
- Adds explicit pnpm age-gate configuration and an exclusion list for narrowly scoped security exemptions.
- Configures Dependabot to delay routine npm update PRs via
cooldown. - Introduces a compute/apply GitHub Actions workflow pair plus scripts to automatically add validated
minimumReleaseAgeExcludeentries to Dependabot branches when needed.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pnpm-workspace.yaml | Introduces explicit minimum release age settings and an exemption list for fast-tracked security updates. |
| .github/dependabot.yml | Adds Dependabot cooldown so routine PRs wait until versions clear the age gate. |
| .github/workflows/dependabot-age-exempt-compute.yml | Unprivileged workflow to detect age-gate failures and compute validated exemption entries as an artifact. |
| .github/workflows/dependabot-age-exempt-apply.yml | Privileged workflow_run stage that validates artifact data and pushes exemptions to the Dependabot branch. |
| .github/scripts/dependabot-age-compute.mjs | Computes and proves which name@version exemptions unblock a frozen pnpm install. |
| .github/scripts/dependabot-age-apply.mjs | Validates artifact input, edits pnpm-workspace.yaml on the Dependabot branch, and pushes a commit. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
Dependabot PRs were failing CI outright because they bumped to package versions younger than pnpm's
minimumReleaseAgesupply-chain gate, which refuses to install a version until it's aged past a threshold — blocking merges even for routine updates.Age gate
pnpm-workspace.yamlpinningminimumReleaseAge: 1440(24h) andminimumReleaseAgeStrict: false, so the policy is explicit rather than relying on a framework default that could shift between pnpm versions.Dependabot scheduling
cooldown: default-days: 1to the npm ecosystem entry in.github/dependabot.ymlso routine version-update PRs open only once they'd already clear the pnpm gate, keeping CI green on arrival.Security update fast-track
Added a two-stage workflow so urgent security bumps aren't stuck behind the 24h gate:
dependabot-age-exempt-compute.yml, unprivileged,pull_requestcontext): detects an age-gate failure, identifies the exactname@versionthe PR introduced, and proves an exemption resolves it before publishing it as a data-only artifact.dependabot-age-exempt-apply.yml, privileged,workflow_runfrom default branch): strictly validates the exemption data, then pushes aminimumReleaseAgeExcludeentry to the Dependabot branch.The split into unprivileged compute / privileged apply keeps untrusted PR-authored code from ever running with write access — only validated, data-only exemption entries cross into the trusted stage.