Repository navigation
fix: on a Renovate branch, .aqua/aqua.yaml is Renovate's - #337
Merged
Merged
Conversation
The v0.10.0 converge seeds golang/go into .aqua/aqua.yaml (limen#323), the one file Renovate manages on its branch. Renovate renders that file on every run, so the line was removed, added by the next converge, removed again: forkcloser/curl#50 was force-pushed seventeen times in twenty minutes, with a checksum-workflow run after each, and every bump of the wave was starting the same loop. The v0.9.0 converges only wrote .limen/* and the checksums, which Renovate leaves alone, which is why they settled in two runs. On a branch named renovate/ (GITHUB_REF_NAME, the runner's) fix now leaves the project manifest as Renovate rendered it and reports so, and skips the aqua rule's residual advisory for it: what the manifest lacks is main's to gain, by a fix run there, and the check in CI names it meanwhile. A repository whose main already carries the pin was never touched by the converge there, so a seeded bump shows a converge commit without .aqua/aqua.yaml in it, a looping one shows the file in every converge. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: closer-claudio <claudio@farcloser.world>
closer-claudio
commented
Oct 10, 2026
closer-claudio
left a comment
Contributor
Author
There was a problem hiding this comment.
✅ at 98ac927: the converge stops touching the one file Renovate renders, the check still says what main lacks, and the loop has no second actor left.
- 🔍 Checked:
remediateAquanow has three cases in the order that matters, no manifest (seed), Renovate's branch (leave it, outcomenonenaming Renovate), otherwise merge; the residual aqua advisory is skipped only in the Renovate case, so a broken manifest on main is still reported;checkis untouched and namesgolang/goas missing, which the test asserts together with the byte-identical file and the absence of an advisory. The flag readsGITHUB_REF_NAME, which the runner sets to the branch on thepushthe checksum workflow runs on, andrenovate/is the prefix every Renovate branch in the fleet carries; a human'slimen fixon such a branch, without the variable, merges as before, which is right. The workflow change is comment-only in a content-pinned file, so it ships with the release and reaches repositories through their bumps; the book names the seed asmain's, by the owner, with curl#50's seventeen pushes as the reason. - 🔍 The diagnosis matches what I measured on curl#50 (a converge commit with
.aqua/aqua.yamlin it, a new head every ~65 s, the App's run after each) and the v0.9.0 converges that never touched the file. On a v0.10.0 branch the fix cannot help, since the branch's pinned limen is the one that loops; the seed on eachmainends those, and from v0.10.1 the converge is harmless on an unseeded repository too, with a redlimenlane saying why. One signed commit on current main; ci green at this head.
closer-claudio
enabled auto-merge
October 10, 2026 05:08
apostasie
approved these changes
Oct 10, 2026
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.
🎯 Why
The v0.10.0 converge seeds
golang/gointo.aqua/aqua.yaml(#323), the one file Renovate manages on its branch. Renovate renders it on every run, so the converge's line was removed, added back, removed: forkcloser/curl#50 was force-pushed seventeen times in twenty minutes with a checksum-workflow run after each, and every bump of the wave was starting the same loop. The v0.9.0 converges only wrote.limen/*and the checksums, which Renovate leaves alone.🛠️ What
internal/rules/fix.go:FixOptions.RenovateBranch; when set,remediateAqualeaves an existing.aqua/aqua.yamlas Renovate rendered it (outcomenone, saying so) and skips the aqua rule's residual advisory for it, so the rest of the converge still commits. The check in CI names what the manifest lacks ("missing canonical package(s): golang/go"), which ismain's to gain by alimen fixthere.internal/cli/cli.go: the flag comes fromGITHUB_REF_NAMEstarting withrenovate/, the runner's variable, so no workflow change is needed and the branch's own pinned limen does the right thing from v0.10.1 on..github/workflows/update-aqua-checksum.yaml: the converge step's comment says so (content-pinned, comment only).book/tooling.md: the first seed is made onmainby the owner, never on a Renovate branch, with the loop as the reason.Telling a seeded bump from a looping one: a repository whose
mainalready carries the pin was never touched by the converge there, under v0.10.0 as well (missingCanonicalPkgsis empty), so its converge commit has no.aqua/aqua.yamlin it and the branch settles in two runs; a looping one shows the file in every converge commit and a new head every minute.🧪 How
TestAquaRenovateBranchLeavesManifest: a manifest without the pin, fix withRenovateBranch: file byte-identical, outcomenonenaming Renovate, no aqua advisory, andlimen checkstill fails naminggolang/go.just lintandjust testgreen locally.mainends it for v0.10.0's.📝
Rides v0.10.1.