Conversation
## Summary `catalog/snippets/configs/dependabot.yml`'s reference config grouped every package in an ecosystem into one catch-all PR (`patterns: ["*"]`), with no exclusion for the fleet's own lint/format toolchain packages. A formatter or linter version bump can change its own output or rule set and start flagging previously-compliant code the bump never touched, so bundling it into the catch-all group means one tool's self-bump can block an arbitrary number of unrelated, otherwise-mergeable dependency bumps together, indefinitely, with no obvious signal why. ## Evidence Investigated live via `#1055` ("Dependabot PRs stuck BLOCKED despite auto-merge enabled and all checks green"). That issue's premise doesn't hold — every affected PR checked has a real, currently-failing required check, so `mergeStateStatus: BLOCKED` is GitHub behaving correctly. One of the confirmed root causes is this hub template gap: - `ptr727/PhotoCleaner#81`-`#84`: a 13-update `nuget-deps` group bump included `csharpier` 1.2.6 -> 1.3.0. The new csharpier version reformats raw string literals differently, so `dotnet csharpier check .` now flags pre-existing, previously-compliant code (`PhotoCleaner/Database.cs`) that the bump never touched — holding the other 12 unrelated, harmless updates in the same PR hostage. Full findings (this repo and two others) posted as a comment on #1055. ## Change Add `exclude-patterns` to the `nuget-deps` and `pypi-deps` groups, naming the fleet-standard toolchain package names per `.agents/skills/dotnet-codestyle/SKILL.md` and `.agents/skills/python-codestyle/SKILL.md`: - `nuget-deps`: `csharpier`, `husky`, `dotnet-outdated-tool` - `pypi-deps`: `ruff`, `pyright`, `mypy` Each excluded package falls out of the catch-all group and gets its own individual PR instead, diagnosable and mergeable (or holdable) on its own. `actions-deps` is left unchanged — the third repo in #1055's report (ESPHome-Config) hit a different, already-tracked cause (`docs/eol-lf-rollout.md`), not a grouping/hostage problem. ## Verification - `python3 -c "import yaml; yaml.safe_load(open('catalog/snippets/configs/dependabot.yml'))"` — valid YAML. - `scripts/prose_lint.py` and `scripts/repo_gate.py` — both clean. - Pre-commit hooks ran clean on commit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Documented dependency update exclusions for .NET and Python tooling. * Clarified which development tools are excluded from automated update groups across main and develop branches. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
PR Summary by QodoIsolate Toolchain Updates From Grouped Dependabot Bumps
AI Description
Diagram
High-Level Assessment
Files changed (1) |
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 0 remain after this review. 📝 WalkthroughWalkthroughDependabot now excludes formatter, linter, and related toolchain packages from grouped NuGet and Python ChangesDependabot grouping
Estimated code review effort: 1 (Trivial) | ~2 minutes Merge Risk:⚪ Minimal · up to This localized configuration promotion has no actionable merge-blocking risk remaining and is merge-ready after normal checks and review. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.) ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Code Review by Qodo
1. |
Uh oh!
There was an error while loading. Please reload this page.
Qodo flagged the 4-line rationale comment added in #1062 as an elaborative prose block, against the fleet's "one line is the default, a second line is earned only by a constraint the code cannot otherwise carry" comment rule (found on the #1063 promotion PR, whose diff doesn't allow a direct fix, hence this separate feature PR). Trims it to the two sentences that carry the non-obvious why, dropping the lines that restated what the code already shows. ## Verification - `scripts/prose_lint.py catalog/snippets/configs/dependabot.yml` — clean. - `scripts/repo_gate.py` — clean. - YAML syntax check — valid. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Documentation** * Clarified Dependabot configuration comments about toolchain exclusions and version updates. * Documented how tool version changes may affect existing code and grouped updates. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
Uh oh!
There was an error while loading. Please reload this page.
Promotes #1062 (Exclude Fleet Toolchain Packages From Grouped Dependabot Bumps) from develop to main.
🤖 Generated with Claude Code
Summary by CodeRabbit
mainanddevelopbranches to keep CSharpier, Husky, dotnet-outdated-tool, Ruff, Pyright, and Mypy updates separate.