chore(renovate): refresh config with explicit grouping + soak rules#66
Merged
Merged
Conversation
Switch `renovate.json5` to an explicit, self-contained config so the Renovate run on this repo can resolve all its preset references. Same effective policy as before, just expressed locally: - SHA-pinned GitHub Actions with `pinDigests: true` - 3-day `minimumReleaseAge` soak on Python deps + GHA - OSV vulnerability alerts (security PRs never batched) - Per-ecosystem grouping (`backend-non-major`, `gha-non-major`) - Major updates isolated to one PR per dep (`groupName: null`) - Lockfile-maintenance bundled into one PR per cycle - `prConcurrentLimit: 4` + `prHourlyLimit: 4` + Monday-only schedule File renamed `renovate.json` → `renovate.json5` so override rationale can live as inline comments. The old file is deleted in this commit (renovate.json has higher precedence than .json5 in Renovate's lookup). Adds the `renovate-config-validator` pre-commit hook to `.pre-commit-config.yaml` so config changes are gated by the existing `pre-commit run` step in CI.
4 tasks
mattwang44
approved these changes
May 19, 2026
Final Merge Review (Official Score)
SummaryThis PR upgrades the Renovate dependency management configuration from a minimal
Scoring AnalysisS — Scope (4/20)
A — Architecture (3/20)
I — Implementation (5/20)
R — Risk (3/20)
Q — Quality (7/15)
P — Performance/Security (2/5)
Base Score Calculation
Effort Scale Assessment
Step 1: Lines = 91 → Small tier (51-150) → ESF = 0.4x Final Score24 × 0.4 = 9.6 → rounded to 10 Post-Merge Observations
Code Quality Data (JSON){
"_schema": "code_quality_v5",
"total_score": 10,
"total_factors": "24 × 0.4 (Small ESF) = 9.6, rounded to 10",
"scope_score": 4,
"scope_factors": "2 files, single tooling subsystem (CI/CD), no new APIs or cross-service changes",
"architecture_score": 3,
"architecture_factors": "Pre-commit hook addition, JSON to JSON5 format migration, no structural architectural changes",
"implementation_score": 5,
"implementation_factors": "Config complexity with multi-rule grouping, intentional null groupName for CVE/major isolation, dual-manager Python coverage, well-commented non-obvious decisions",
"risk_score": 3,
"risk_factors": "Easily reversible config change, affects only automated dependency PR behavior, pre-commit validator reduces misconfiguration risk",
"quality_score": 7,
"quality_factors": "Thorough inline comments explaining non-obvious decisions, pre-commit validation hook, missing README update for contributor guidance",
"perf_security_score": 2,
"perf_security_factors": "SHA pinning for GHA supply-chain protection, OSV vulnerability alerts, CVE PRs explicitly never batched"
} |
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.
Summary
Switch
renovate.json5to an explicit, self-contained config. Resolves theCannot find preset's packagevalidation error that was blocking Renovate from opening PRs on this repo.Same effective policy as before, just expressed locally:
pinDigests: trueminimumReleaseAgesoak on Python deps + GHAbackend-non-major,gha-non-major)groupName: null)prConcurrentLimit: 4+prHourlyLimit: 4+ Monday-only scheduleFile renamed
renovate.json→renovate.json5so override rationale can live as inline comments. Old file deleted in the same commit (renovate.jsonhas higher Renovate lookup precedence).No behaviour change for the deps Renovate would have opened anyway — this just makes the run actually succeed.
Test plan
renovate-config-validator --strict --no-global renovate.json5passes locally (Node 24 + renovate@43, LOG_LEVEL=warn, exit 0)pre-commitruns the same gate on PR + pushPost-merge verification
Will confirm after merge:
backend-non-major/gha-non-major