Skip to content

Add gomodTidy to Renovate postUpdateOptions to prevent broken Go module PRs #418

Open

Description

@fullsend-ai-retro

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

  1. fullsend-ai-triage commented on Oct 25, 2026

    @fullsend-ai-triage

    🤖 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

  2. nikshrma commented on Oct 28, 2026

    @nikshrma

    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.

  3. yftacherzog commented on Oct 28, 2026

    @yftacherzog
    Member

    4. 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.

    @nikshrma I'm not a maintainer here. @konflux-ci/build-maintainers can you take a look?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions