fix(deps): restrict the auto-merged groups to minor and patch - #40
Conversation
The linting, testing and types groups had no update-types restriction, so majors grouped there — and those three are exactly the groups dependabot-auto-merge.yml auto-merges. The first Dependabot run proved the hazard: #32 carried eslint 9 -> 10 and #33 carried vitest 3 -> 4, both with all three required checks green. "CI is green" is not evidence about a major here. eslint 10 passing npm run lint says nothing about whether its rule semantics moved under the config tuned in the lint/format stage; vitest 4 passing says nothing about whether test semantics survived. A major that passes CI is the worst case for auto-merge because there is no signal at all. Majors now match these patterns but not their update-types, so they fall through every group and arrive as individual PRs — the same path #34 (pg-boss 10->12), #35 (zod 3->4) and #36 (typescript 5->7) already took, which confirms the fall-through empirically. react and drizzle keep majors on purpose: they must move as a unit, and neither is on the auto-merge list.
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 16 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Comment |
Fixes a hazard I introduced in #24/#30. Worth merging before any of the open Dependabot PRs are rebased.
What changed and why
linting,testingandtypeshad noupdate-typesrestriction, so majors grouped into them — and those are exactly the three groupsdependabot-auto-merge.ymlauto-merges. The first Dependabot run demonstrated it rather than hypothetically:Both are green on all three required checks.
My original justification was that these groups "break loudly and immediately in CI." That reasoning does not survive contact with a major. eslint 10 passing
npm run lintsays nothing about whether its rule semantics moved under the config deliberately tuned in the lint/format stage; vitest 4 passing says nothing about whether test semantics survived. A major that passes CI is the worst case for auto-merge, because there is no signal at all.All three groups now carry
update-types: [minor, patch]. Majors match the patterns but not the update-types, so they fall through every group and arrive as individual PRs.That fall-through is not an assumption — this run confirmed it.
#34(pg-boss 10 -> 12),#35(zod 3 -> 4) and#36(typescript 5.9 -> 7.0) all matchminor-and-patch's*pattern, fail itsupdate-types, and arrived as individual PRs.reactanddrizzledeliberately keep majors: they must move as a unit, and neither is on the auto-merge list, so a human merges them either way.The comment in
dependabot-auto-merge.ymlexplaining the group list is updated too — it still claimed CI-fails-loudly as the safety argument, which is now theupdate-typesrestriction instead, with a note to checkupdate-typesbefore adding any group to that list.What CI cannot check
Parsed the config and printed the effective restrictions:
actionlintclean on the workflow.npm run format:check->All matched files use Prettier code style!.Dependabot's own behaviour cannot be exercised until it next runs. GitHub validates
dependabot.ymlon push — check the Insights > Dependency graph > Dependabot tab after merge for a config error.Deploy notes
None.
Flags
mainbefore ci: auto-merge Dependabot PRs for bounded-risk groups #30 merged, so the file is not in their merge refs. That accident is the only reason the eslint and vitest majors did not auto-merge. After this lands,@dependabot recreateon the survivors will re-split them correctly.CHANGES_REQUESTEDreview that its rate limit prevented it from ever revisiting. Apull_requestruleset rule blocks on that even withrequired_approving_review_count: 0. Dependabot PRs are not exposed to it — CodeRabbit reports "Review skipped: bot user not eligible for review" — but any human PR can be wedged the same way.