Fix broken auto-update CI job; pin typescript to v6, harden against unreviewed major bumps - #15
Merged
alexey-max-fedorov merged 2 commits intoJul 13, 2026
Conversation
…ewed major bumps
BetterDependabot (custom cron workflow, pushes directly to master with no
PR/CI gate) had two unpinned "always take latest" steps:
- pnpm/action-setup was set to version: latest, which today hits a bug in
pnpm's own self-installer when switching from v11.7.0 to v11.12.0
("Cannot use 'in' operator to search for 'integrity' in undefined" in
createFullPkgId). This is the actual failure on the most recent
BetterDependabot run (2026-07-13). Pin to version: 10, matching the
convention already used in build.yml and patch.yml.
- `pnpm update --latest` has no version constraints, so it silently bumped
typescript from ^6.0.3 (last version that went through a real Dependabot
PR + Build Check) straight to ^7.0.2 on 2026-07-03, committed and pushed
to master with zero CI validation, since Build Check and Dependency
Review only trigger on pull_request. Drop --latest so updates stay
within package.json's declared semver ranges (no more silent major
bumps); revert typescript to ^6.0.3 and regenerate the lockfile; add a
major-version ignore rule for typescript to dependabot.yml as
defense-in-depth on the PR-based path too.
Note: this repo has no Next.js/Vercel deploy step anywhere in its
workflows (it's an esbuild-based static file patcher), and typecheck/
build/tests all pass cleanly under both typescript 6.0.3 and 7.0.2 -
so v7 wasn't actually breaking this repo's CI. The real, currently-red
job was the pnpm self-installer bug above; the typescript pin here closes
the process gap that let an unreviewed major bump land on master at all.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR stabilizes the repo’s automated dependency update pipeline by fixing the failing BetterDependabot GitHub Actions workflow and preventing unattended, direct-to-master updates from crossing major versions (specifically reverting the unreviewed TypeScript v7 bump back to v6).
Changes:
- Pin
pnpm/action-setupto pnpm v10 inBetterDependabot.ymlto avoid breakage fromversion: latest. - Remove
--latestfrom the unattendedpnpm updatestep to keep updates within declared semver ranges. - Revert TypeScript from
^7.0.2back to^6.0.3, update lockfile accordingly, and add a Dependabot semver-major ignore rule for TypeScript.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
pnpm-lock.yaml |
Regenerates the lockfile to align with TypeScript v6.0.3 (removing v7 artifacts). |
package.json |
Pins typescript back to ^6.0.3 in devDependencies. |
.github/workflows/BetterDependabot.yml |
Fixes the broken auto-update job by pinning pnpm to v10 and preventing major bumps via pnpm update semantics. |
.github/dependabot.yml |
Adds defense-in-depth by ignoring semver-major updates for TypeScript in Dependabot PRs. |
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
The greetings.yml workflow (actions/first-interaction) breaks on every PR/issue because Dependabot bumped it to v3, which renamed its inputs from kebab-case to snake_case (issue-message -> issue_message, etc.), so the old config no longer supplies required inputs. Not needed, so removing it entirely instead of patching the input names.
alexey-max-fedorov
deleted the
fix/pin-typescript-v6-and-harden-autoupdate
branch
July 13, 2026 17:13
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.
Root cause
The suspicion going in was "TypeScript v7 broke CI because Vercel's Next.js deployer only supports v6." That narrative doesn't hold for this repo: P-NP has no Next.js/Vercel deployment anywhere in its workflows — it's an esbuild-based static file patcher (
build.mjs→ esbuild, notscin the build path). Confirmed locally:typecheck,build, and the full test suite (37/37) all pass cleanly under both typescript 6.0.3 and 7.0.2.What's actually red on GitHub Actions right now is the
BetterDependabotworkflow (custom cron job,.github/workflows/BetterDependabot.yml, pushes directly tomasterwith no PR/CI gate). Its most recent run (2026-07-13, run 29218036062) fails duringpnpm/action-setup@v6because it's pinned toversion: latest, and pnpm's own self-installer currently has a bug switching from v11.7.0 → v11.12.0:Separately, but for the same underlying reason (this job auto-updates to "latest" with zero constraints and zero review), it silently bumped
typescriptfrom^6.0.3to^7.0.2on 2026-07-03 (commit 5a5cf60) viapnpm update --latest, committed and pushed straight tomaster. That went completely unvalidated becauseBuild CheckandDependency Reviewonly trigger onpull_request— this job bypasses both. It happens not to break anything today, but the process gap that let it happen unreviewed is real and worth closing regardless.Hypotheses considered and ruled out
npm_and_yarn/github_actionsDependabot Update jobs on 2026-07-09 ("job was not acquired by Runner... after multiple attempts"), but it self-resolved the next day and isn't the persistent issue.BetterDependabot.yml's unpinnedpnpm/action-setup@v6 version: latestis the actual currently-failing job, and its unpinnedpnpm update --latestis how typescript silently jumped two majors with no review.Fix
.github/workflows/BetterDependabot.yml: pinpnpm/action-setuptoversion: 10(matchesbuild.yml/patch.ymlconvention) — fixes the actual current failure..github/workflows/BetterDependabot.yml: drop--latestfrompnpm update, so this unattended, directly-pushed-to-master job stays within package.json's declared semver ranges and can never again silently cross a major version.package.json/pnpm-lock.yaml: reverttypescriptto^6.0.3(the last version that actually went through a reviewed Dependabot PR + passing Build Check) and regenerate the lockfile..github/dependabot.yml: add asemver-majorignore rule fortypescriptas defense-in-depth on the PR-based update path too.Verification
Ran the exact CI sequence locally with pnpm 10 (matching the version pinned in
build.yml/patch.yml):All green before (typescript 7.0.2) and after (typescript 6.0.3) this change — confirming the codebase itself was never the problem.