Repository navigation
Add gomodTidy to Renovate postUpdateOptions to prevent broken Go module PRs #418
Description
What happened
PR #354 was created by Renovate/MintMaker on 2026-07-24, replacing github.com/cenkalti/backoff/v4 v4.3.0 with github.com/cenkalti/backoff/v7 v7.0.1 in go.mod. In Go module semantics, these are entirely different module paths — the upstream dependency (go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc) still imports backoff/v4, making v7 an orphaned addition. The go.sum file was never updated. The review agent identified this correctly on its first review (2026-07-31) and on 5 subsequent reviews, each time recommending go mod tidy. The PR was autoclosed after 3 months on 2026-10-25 without ever being merged. The 6 review cycles cost an estimated $10–12+ in total.
What could go better
The root cause is that Renovate created a PR with an inconsistent Go module state. The repo's renovate.json does not include postUpdateOptions: ["gomodTidy"], so Renovate modifies go.mod without running go mod tidy to validate the module graph. If go mod tidy had run as a post-update step, it would have removed the orphaned backoff/v7 entry (since nothing in the dependency graph imports it) and kept backoff/v4. With no net change, Renovate would not have created the PR at all. This would have prevented the entire 3-month cycle of 6 wasted review runs, 5 failed dispatch attempts, and the noise that contributed to the repo disabling automatic review entirely (PR #398). Confidence: high — the review agent specifically recommended this Renovate config change in its third review on 2026-08-08, and gomodTidy is a standard, well-documented Renovate option.
Proposed change
Add postUpdateOptions to the repo's renovate.json at the top level:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["config:recommended"],
"postUpdateOptions": ["gomodTidy"],
"packageRules": [
...
]
}This tells Renovate to run go mod tidy after applying Go module updates, ensuring the module graph is consistent before creating or updating a PR. Broken updates (like cross-major-version bumps where the new version isn't actually needed) will result in no net change and no PR will be created.
Validation criteria
After the change is applied: (1) Future Renovate PRs that modify go.mod should also include corresponding go.sum changes, confirming go mod tidy ran. (2) No new PRs should appear for Go module updates where the target version is not actually required by the dependency graph. (3) Verify by checking the next 3–5 Go dependency update PRs from Renovate/MintMaker in this repo.
Generated by retro agent from #354
Activity
fullsend-ai-triage commentedon Oct 25, 2026
🤖 Finished Triage · ❌ Failure (validation failed after 2 iteration(s)) · Started 3:55 AM UTC · Completed 3:58 AM UTC
Commit:
80258dd· View workflow run →Runtime: claude · Model: opus → claude-opus-4-6 · Effort: high · Cost: $0.73
nikshrma commentedon Oct 28, 2026
Hi! I'd like to contribute to this issue.
I'll verify the current Renovate configuration and investigate the dependency-update scenario described here. I'll then validate whether adding
postUpdateOptions: ["gomodTidy"]resolves the issue without introducing unintended changes.@yftacherzog , would you be able to confirm whether this is a good approach and assign the issue to me if appropriate? I'm happy to work on the fix and submit a PR.
yftacherzog commentedon Oct 28, 2026
@nikshrma I'm not a maintainer here. @konflux-ci/build-maintainers can you take a look?