What happened
On PR #3499, the Qodo review bot posted a Medium/Bug finding claiming rpms.lock.yaml was not regenerated after the base image digest changed in Dockerfile.dist. A human reviewer (robnester-rh) flagged this to the PR author, who had to explain that the lockfile WAS regenerated but produced no changes because the updated RPMs (curl-minimal, glib2, libcurl-minimal, libnghttp2) live inside the base image and are not tracked in rpms.in.yaml. The tracked packages (ca-certificates, jq, gzip) were unaffected. This false positive added ~1.5 hours of unnecessary reviewer back-and-forth.
The root cause is that AGENTS.md contains no documentation about the Docker/UBI infrastructure. The relationship between hack/ubi-base-image-bump.sh (bumps digests in 3 Dockerfiles, then runs lockfile regeneration), hack/update-rpm-lock.sh (regenerates rpms.lock.yaml from rpms.in.yaml), and the distinction between RPMs tracked in the lockfile vs. RPMs bundled inside the base image is entirely undocumented for agents and reviewers.
What could go better
Any reviewer — human or automated — encountering a UBI base image digest bump PR should understand that rpms.lock.yaml only tracks packages explicitly listed in rpms.in.yaml (ca-certificates, jq, gzip). When the base image digest changes but those packages' available versions don't change, the lockfile regeneration produces no diff, and that is expected behavior. Without this context documented in AGENTS.md, review tools will continue to flag missing lockfile changes on UBI bump PRs.
Confidence: High. The false positive directly traces to the documentation gap. The Qodo finding cited hack/update-rpm-lock.sh as evidence that the lockfile should change, but did not understand which packages the lockfile actually tracks. This same pattern will recur on future UBI bump PRs (which happen regularly via Renovate and manual runs of hack/ubi-base-image-bump.sh).
Note: This proposal targets AGENTS.md because that is the primary context file for agents reviewing this repo. The Qodo bot (which generated this specific false positive) is a third-party tool with no repo-level configuration file present. Adding this context to AGENTS.md will benefit the fullsend review agent and human reviewers directly; it may or may not help the Qodo bot depending on whether it reads AGENTS.md.
Proposed change
Add a new section to AGENTS.md documenting the Docker and UBI base image infrastructure. The section should cover:
- UBI base image bump workflow —
hack/ubi-base-image-bump.sh updates the ubi-minimal digest in three Dockerfiles (Dockerfile, Dockerfile.dist, acceptance/kubernetes/kind/acceptance.Dockerfile), then calls hack/update-rpm-lock.sh to regenerate the lockfile.
- RPM lockfile scope —
rpms.lock.yaml is generated from rpms.in.yaml and only tracks explicitly declared packages (ca-certificates, jq, gzip). When the base image digest changes but these packages' available versions remain the same, the lockfile regeneration produces no diff. This is expected behavior, not an error.
- Cross-file consistency — All three Dockerfiles must pin the same
ubi-minimal digest. The lockfile must be regenerated (even if unchanged) after any digest bump.
- Reviewer guidance — On UBI bump PRs, the absence of changes to
rpms.lock.yaml does not indicate the lockfile was not regenerated. Do not flag this as a bug.
Validation criteria
On the next 3 UBI base image bump PRs in conforma/cli where rpms.lock.yaml has no diff, no review agent or bot should flag 'RPM lockfile not regenerated' as a finding. If an automated reviewer does flag it, the AGENTS.md documentation should provide sufficient context for a human reviewer to dismiss it without needing to ask the PR author.
Generated by retro agent from #3499
What happened
On PR #3499, the Qodo review bot posted a Medium/Bug finding claiming
rpms.lock.yamlwas not regenerated after the base image digest changed inDockerfile.dist. A human reviewer (robnester-rh) flagged this to the PR author, who had to explain that the lockfile WAS regenerated but produced no changes because the updated RPMs (curl-minimal,glib2,libcurl-minimal,libnghttp2) live inside the base image and are not tracked inrpms.in.yaml. The tracked packages (ca-certificates,jq,gzip) were unaffected. This false positive added ~1.5 hours of unnecessary reviewer back-and-forth.The root cause is that AGENTS.md contains no documentation about the Docker/UBI infrastructure. The relationship between
hack/ubi-base-image-bump.sh(bumps digests in 3 Dockerfiles, then runs lockfile regeneration),hack/update-rpm-lock.sh(regeneratesrpms.lock.yamlfromrpms.in.yaml), and the distinction between RPMs tracked in the lockfile vs. RPMs bundled inside the base image is entirely undocumented for agents and reviewers.What could go better
Any reviewer — human or automated — encountering a UBI base image digest bump PR should understand that
rpms.lock.yamlonly tracks packages explicitly listed inrpms.in.yaml(ca-certificates,jq,gzip). When the base image digest changes but those packages' available versions don't change, the lockfile regeneration produces no diff, and that is expected behavior. Without this context documented in AGENTS.md, review tools will continue to flag missing lockfile changes on UBI bump PRs.Confidence: High. The false positive directly traces to the documentation gap. The Qodo finding cited
hack/update-rpm-lock.shas evidence that the lockfile should change, but did not understand which packages the lockfile actually tracks. This same pattern will recur on future UBI bump PRs (which happen regularly via Renovate and manual runs ofhack/ubi-base-image-bump.sh).Note: This proposal targets AGENTS.md because that is the primary context file for agents reviewing this repo. The Qodo bot (which generated this specific false positive) is a third-party tool with no repo-level configuration file present. Adding this context to AGENTS.md will benefit the fullsend review agent and human reviewers directly; it may or may not help the Qodo bot depending on whether it reads AGENTS.md.
Proposed change
Add a new section to
AGENTS.mddocumenting the Docker and UBI base image infrastructure. The section should cover:hack/ubi-base-image-bump.shupdates theubi-minimaldigest in three Dockerfiles (Dockerfile,Dockerfile.dist,acceptance/kubernetes/kind/acceptance.Dockerfile), then callshack/update-rpm-lock.shto regenerate the lockfile.rpms.lock.yamlis generated fromrpms.in.yamland only tracks explicitly declared packages (ca-certificates,jq,gzip). When the base image digest changes but these packages' available versions remain the same, the lockfile regeneration produces no diff. This is expected behavior, not an error.ubi-minimaldigest. The lockfile must be regenerated (even if unchanged) after any digest bump.rpms.lock.yamldoes not indicate the lockfile was not regenerated. Do not flag this as a bug.Validation criteria
On the next 3 UBI base image bump PRs in conforma/cli where
rpms.lock.yamlhas no diff, no review agent or bot should flag 'RPM lockfile not regenerated' as a finding. If an automated reviewer does flag it, the AGENTS.md documentation should provide sufficient context for a human reviewer to dismiss it without needing to ask the PR author.Generated by retro agent from #3499