Skip to content

NO-ISSUE: Synchronize From Upstream Repositories#1316

Open
openshift-bot wants to merge 31 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream
Open

NO-ISSUE: Synchronize From Upstream Repositories#1316
openshift-bot wants to merge 31 commits into
openshift:mainfrom
openshift-bot:synchronize-upstream

Conversation

@openshift-bot

@openshift-bot openshift-bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

The staging/ and vendor/ directories have been synchronized from the upstream repositories, pulling in the following commits:

Date Commit Author Message
2026-06-04 13:49:04 operator-framework/operator-lifecycle-manager@f9e42f3 dependabot[bot] 🌱 Bump github.com/prometheus/common from 0.67.5 to 0.68.1 (#3843)
2026-06-05 08:18:47 operator-framework/operator-lifecycle-manager@614fad4 Todd Short Update to golang-1.26.3 (#3844)
2026-06-05 16:28:54 operator-framework/operator-lifecycle-manager@72750c8 Todd Short Update api and operator-registry dependencies (#3845)
2026-06-09 07:20:28 operator-framework/operator-lifecycle-manager@c79ad06 dependabot[bot] 🌱 Bump golang.org/x/sync from 0.20.0 to 0.21.0 (#3846)
2026-06-11 15:08:32 operator-framework/operator-lifecycle-manager@cd9e051 dependabot[bot] 🌱 Bump the k8s-dependencies group across 1 directory with 11 updates (#3827)
2026-06-11 19:12:12 operator-framework/operator-lifecycle-manager@4b21b9b Todd Short Update operator-registry and api (#3847)
2026-06-04 10:33:06 operator-framework/operator-registry@b1c9736 dependabot[bot] Bump github.com/grpc-ecosystem/grpc-health-probe from 0.4.50 to 0.4.52 (#1998)
2026-06-04 10:38:45 operator-framework/operator-registry@2e03f89 dependabot[bot] Bump github.com/docker/cli (#1999)
2026-06-05 08:13:15 operator-framework/operator-registry@9c948cd Todd Short Update to golang-1.26.3 (#2001)
2026-06-05 15:40:31 operator-framework/operator-registry@e9534a9 Todd Short Update to operator-framework/api@v0.43.0 (#2003)
2026-06-08 08:21:27 operator-framework/operator-registry@9ff3fd4 dependabot[bot] Bump github.com/mattn/go-sqlite3 from 1.14.44 to 1.14.45 (#2004)
2026-06-08 08:24:16 operator-framework/operator-registry@de59e21 dependabot[bot] Bump codecov/codecov-action from 6 to 7 (#2005)
2026-06-08 20:33:32 operator-framework/operator-registry@9e61172 dependabot[bot] Bump golang from 1.25-alpine to 1.26-alpine (#1914)
2026-06-09 07:20:28 operator-framework/operator-registry@a877205 dependabot[bot] Bump the golang-x-deps group with 4 updates (#2006)
2026-06-09 07:23:14 operator-framework/operator-registry@50e9eb4 dependabot[bot] Bump oras.land/oras-go/v2 from 2.6.0 to 2.6.1 (#2007)
2026-06-11 15:02:58 operator-framework/operator-registry@58c3582 dependabot[bot] Bump the k8s-dependencies group across 1 directory with 5 updates (#2002)
2026-06-11 15:23:28 operator-framework/operator-registry@fcd8df7 Todd Short Update api to v0.44.0 (#2008)
2026-03-31 20:35:11 operator-framework/api@d6b839a Francesco Giudici Add fgiudici as reviewer (#483)
2026-04-03 15:59:10 operator-framework/api@8ad4692 dependabot[bot] Bump codecov/codecov-action from 5 to 6 (#484)
2026-04-13 11:32:03 operator-framework/api@3ee3c44 dependabot[bot] Bump go.podman.io/image/v5 from 5.39.1 to 5.39.2 (#485)
2026-04-13 11:35:08 operator-framework/api@a88e830 dependabot[bot] Bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.43.0 (#486)
2026-04-14 06:45:57 operator-framework/api@3bd6129 Jordan Keister remove idle maintainers (#487)
2026-04-14 06:48:45 operator-framework/api@ee38ad0 dependabot[bot] Bump github.com/google/cel-go from 0.27.0 to 0.28.0 (#488)
2026-04-22 20:27:35 operator-framework/api@b530c5b dependabot[bot] Bump the k8s-dependencies group with 4 updates (#489)
2026-05-19 09:45:59 operator-framework/api@3acdcf5 dependabot[bot] Bump github.com/google/cel-go from 0.28.0 to 0.28.1 (#492)
2026-05-26 07:45:09 operator-framework/api@755d5d1 dependabot[bot] Bump go.podman.io/image/v5 from 5.39.2 to 5.40.0 (#494)
2026-06-02 19:47:00 operator-framework/api@da918bd Lars Lehtonen fix(pkg/validation/internal): check nil pointers before dereference (#493)
2026-06-05 07:14:47 operator-framework/api@b1290de Todd Short Update to golang-1.26.3 (#497)
2026-06-05 14:17:52 operator-framework/api@86d7ced Sebastien Tardif fix: stop emitting false-positive deprecated-API warnings for RBAC rules (#496)
2026-06-09 07:17:24 operator-framework/api@52c4c32 dependabot[bot] Bump codecov/codecov-action from 6 to 7 (#499)
2026-06-11 14:54:21 operator-framework/api@887f161 dependabot[bot] Bump the k8s-dependencies group across 1 directory with 5 updates (#498)

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

Summary by CodeRabbit

  • New Features

    • Added context-aware lifecycle management for informer factories and cache synchronization.
    • Introduced informer identity support for improved metrics tracking.
  • Bug Fixes

    • Fixed potential nil pointer dereference errors in validation logic.
  • Chores

    • Updated dependency versions across Kubernetes, operator-framework, gRPC, and related modules.
    • Upgraded build tooling and CI/CD workflows (kind, helm, Codecov).
    • Enhanced CRD schema documentation and formatting.

@openshift-bot openshift-bot added approved Indicates a PR has been approved by an approver from all required OWNERS files. lgtm Indicates that a PR is ready to be merged. labels Jun 5, 2026
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Jun 5, 2026
@openshift-ci-robot

Copy link
Copy Markdown

@openshift-bot: This pull request explicitly references no jira issue.

Details

In response to this:

The staging/ and vendor/ directories have been synchronized from the upstream repositories, pulling in the following commits:

Date Commit Author Message
2026-06-04 13:49:04 operator-framework/operator-lifecycle-manager@f9e42f3 dependabot[bot] 🌱 Bump github.com/prometheus/common from 0.67.5 to 0.68.1 (#3843)

This pull request is expected to merge without any human intervention. If tests are failing here, changes must land upstream to fix any issues so that future downstreaming efforts succeed.

/assign @openshift/openshift-team-operator-runtime

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai

coderabbitai Bot commented Jun 5, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Dependency/tooling upgrades across modules, CRD doc/schema edits, informer generation refactors to options/context APIs, validator nil-safety fixes and removed-API warning narrowing, CI/workflow and helper script updates.

Changes

Repository alignment and refactors

Layer / File(s) Summary
Go module and tooling bumps
go.mod, staging/operator-lifecycle-manager/go.mod, staging/api/go.mod, staging/operator-registry/go.mod, staging/*/.bingo/*
Bumped many direct and indirect module versions (k8s.io/, golang.org/x/, operator-framework, operator-registry, cel-go, prometheus/common, etc.) and updated tool pins in bingo files.
Bingo/tooling and helper scripts
staging/*/.bingo/Variables.mk, staging/*/.bingo/variables.env, staging/api/hack/get-kind-node-version.sh, staging/api/Makefile
Introduce host-targeted build variables for tools, bump Kind/Helm tool versions, add script to resolve kind node image version used by Makefile.
CRD docs and schema edits
manifests/*0000_50_olm_00-*.crd.yaml, staging/*/deploy/chart/crds/*
Bumped controller-gen annotation versions; removed or adjusted several description sentences (procMount/readOnlyRootFilesystem, userNamespaces), added schedulingGroup, expanded DRA PodResourceClaim docs, removed workloadRef block, normalized permission field documentation, and simplified volume description text.
Informer factories and options/context refactor
staging/operator-lifecycle-manager/pkg/**/informers/**, staging/operator-registry/pkg/**/informers/**, staging/operator-lifecycle-manager/pkg/package-server/client/**/informers/**
Add InformerOptions, WithInformerName, StartWithContext and WaitForCacheSyncWithContext; refactor generated informer constructors to New*InformerWithOptions and use cache.NewSharedIndexInformerWithOptions with context-aware list/watch wiring.
Validation nil-safety and removed-API tests
staging/api/pkg/validation/internal/*.go, staging/api/pkg/validation/internal/removed_apis_test.go
Reorder ManifestResult initialization to avoid nil deref in bundle validators; narrow v1.25 RBAC warning logic to only flag fully removed resources and update tests to expect only PodSecurityPolicy warning.
CI, OWNERS and small edits
.github/workflows/*, staging/api/OWNERS, generated fake client comments, tests and gitignore`
Bumped Codecov action versions, reordered/added kind install step, updated OWNERS reviewers list, minor generated comment fixes, TLS test assertions switched to utilnet.TLSClientConfig, and added *tmp.sum ignore changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Suggested labels

lgtm, verified

Suggested reviewers

  • pedjak
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

@openshift-ci openshift-ci Bot requested review from ankitathomas and fgiudici June 5, 2026 00:04
@openshift-ci

openshift-ci Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: openshift-bot

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

1 similar comment
@openshift-ci

openshift-ci Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

Approval requirements bypassed by manually added approval.

This pull-request has been approved by: openshift-bot

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from b870604 to 89e4524 Compare June 6, 2026 00:07
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 6, 2026
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 7, 2026
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from 89e4524 to dbd1a2a Compare June 9, 2026 00:08
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 9, 2026
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from dbd1a2a to ae1909d Compare June 10, 2026 00:09
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 10, 2026
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 10, 2026
@openshift-bot openshift-bot added the lgtm Indicates that a PR is ready to be merged. label Jun 11, 2026
dependabot Bot and others added 12 commits June 12, 2026 00:05
Bumps [github.com/prometheus/common](https://github.com/prometheus/common) from 0.67.5 to 0.68.1.
- [Release notes](https://github.com/prometheus/common/releases)
- [Changelog](https://github.com/prometheus/common/blob/main/CHANGELOG.md)
- [Commits](prometheus/common@v0.67.5...v0.68.1)

---
updated-dependencies:
- dependency-name: github.com/prometheus/common
  dependency-version: 0.68.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: f9e42f35ce2ca14e019bdd86261e0fe7d7234b93
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 614fad4e4b9a6b4d87e639e2638ec2be3c362efa
Update to:
* github.com/operator-framework/operator-registry@v1.71.0
* github.com/operator-framework/api@v0.43.0

Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 72750c855e6828eae15f65d79592f2498cd5c1fd
Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.20.0 to 0.21.0.
- [Commits](golang/sync@v0.20.0...v0.21.0)

---
updated-dependencies:
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: c79ad06a7d24aa724fa297e26f41eff0f6936fc3
…(#3827)

* 🌱 Bump the k8s-dependencies group across 1 directory with 11 updates

Bumps the k8s-dependencies group with 4 updates in the / directory: [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver), [k8s.io/kube-aggregator](https://github.com/kubernetes/kube-aggregator), [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) and [sigs.k8s.io/controller-tools](https://github.com/kubernetes-sigs/controller-tools).

Updates `k8s.io/apiextensions-apiserver` from 0.35.4 to 0.36.1
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.35.4...v0.36.1)

Updates `k8s.io/apimachinery` from 0.35.4 to 0.36.1
- [Commits](kubernetes/apimachinery@v0.35.4...v0.36.1)

Updates `k8s.io/apiserver` from 0.35.4 to 0.36.1
- [Commits](kubernetes/apiserver@v0.35.4...v0.36.1)

Updates `k8s.io/client-go` from 0.35.4 to 0.36.1
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.35.4...v0.36.1)

Updates `k8s.io/code-generator` from 0.35.4 to 0.36.1
- [Commits](kubernetes/code-generator@v0.35.4...v0.36.1)

Updates `k8s.io/component-base` from 0.35.4 to 0.36.1
- [Commits](kubernetes/component-base@v0.35.4...v0.36.1)

Updates `k8s.io/kube-aggregator` from 0.35.4 to 0.36.1
- [Commits](kubernetes/kube-aggregator@v0.35.4...v0.36.1)

Updates `k8s.io/kube-openapi` from 0.0.0-20260127142750-a19766b6e2d4 to 0.0.0-20260317180543-43fb72c5454a
- [Commits](https://github.com/kubernetes/kube-openapi/commits)

Updates `k8s.io/utils` from 0.0.0-20260108192941-914a6e750570 to 0.0.0-20260210185600-b8788abfbbc2
- [Commits](https://github.com/kubernetes/utils/commits)

Updates `sigs.k8s.io/controller-runtime` from 0.23.3 to 0.24.1
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.3...v0.24.1)

Updates `sigs.k8s.io/controller-tools` from 0.20.1 to 0.21.0
- [Release notes](https://github.com/kubernetes-sigs/controller-tools/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-tools/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-tools@v0.20.1...v0.21.0)

---
updated-dependencies:
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apiserver
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/client-go
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/code-generator
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/component-base
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/kube-aggregator
  dependency-version: 0.36.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/kube-openapi
  dependency-version: 0.0.0-20260317180543-43fb72c5454a
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/utils
  dependency-version: 0.0.0-20260210185600-b8788abfbbc2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.24.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: sigs.k8s.io/controller-tools
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Regenerate resources

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

* Bump kind version

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

* fix server unit test

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Per G. da Silva <pegoncal@redhat.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: cd9e05101054d1c3a7fd9f2150e629b8d79da816
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-lifecycle-manager
Upstream-commit: 4b21b9ba17185754381c7eaf0b8b872a62429729
…2 (#1998)

Bumps [github.com/grpc-ecosystem/grpc-health-probe](https://github.com/grpc-ecosystem/grpc-health-probe) from 0.4.50 to 0.4.52.
- [Release notes](https://github.com/grpc-ecosystem/grpc-health-probe/releases)
- [Commits](grpc-ecosystem/grpc-health-probe@v0.4.50...v0.4.52)

---
updated-dependencies:
- dependency-name: github.com/grpc-ecosystem/grpc-health-probe
  dependency-version: 0.4.52
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: b1c97368d55465f7a1d57095ac8c4daa2ec94bdf
Bumps [github.com/docker/cli](https://github.com/docker/cli) from 29.5.2+incompatible to 29.5.3+incompatible.
- [Commits](docker/cli@v29.5.2...v29.5.3)

---
updated-dependencies:
- dependency-name: github.com/docker/cli
  dependency-version: 29.5.3+incompatible
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: 2e03f899a2e05f9918241baa14a446f4d7d7fd15
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-registry
Upstream-commit: 9c948cdd1ab7331ccd63d3d2866cee72f6cce934
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-registry
Upstream-commit: e9534a9c63fd6a34a1b6523274b2172e8a718fec
Bumps [github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3) from 1.14.44 to 1.14.45.
- [Release notes](https://github.com/mattn/go-sqlite3/releases)
- [Commits](mattn/go-sqlite3@v1.14.44...v1.14.45)

---
updated-dependencies:
- dependency-name: github.com/mattn/go-sqlite3
  dependency-version: 1.14.45
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: 9ff3fd40ba7471d8671ad189f2d6c2ef9715c260
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v6...v7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: de59e21a9c9365cdb950ef80ccef72297f1538c8
dependabot Bot and others added 19 commits June 12, 2026 00:12
Bumps golang from 1.25-alpine to 1.26-alpine.

---
updated-dependencies:
- dependency-name: golang
  dependency-version: 1.26-alpine
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: 9e611725f19010161826db14ff173ce98dddb898
Bumps the golang-x-deps group with 4 updates: [golang.org/x/mod](https://github.com/golang/mod), [golang.org/x/sync](https://github.com/golang/sync), [golang.org/x/sys](https://github.com/golang/sys) and [golang.org/x/text](https://github.com/golang/text).

Updates `golang.org/x/mod` from 0.36.0 to 0.37.0
- [Commits](golang/mod@v0.36.0...v0.37.0)

Updates `golang.org/x/sync` from 0.20.0 to 0.21.0
- [Commits](golang/sync@v0.20.0...v0.21.0)

Updates `golang.org/x/sys` from 0.45.0 to 0.46.0
- [Commits](golang/sys@v0.45.0...v0.46.0)

Updates `golang.org/x/text` from 0.37.0 to 0.38.0
- [Release notes](https://github.com/golang/text/releases)
- [Commits](golang/text@v0.37.0...v0.38.0)

---
updated-dependencies:
- dependency-name: golang.org/x/mod
  dependency-version: 0.37.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x-deps
- dependency-name: golang.org/x/sync
  dependency-version: 0.21.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x-deps
- dependency-name: golang.org/x/sys
  dependency-version: 0.46.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x-deps
- dependency-name: golang.org/x/text
  dependency-version: 0.38.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: golang-x-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: a8772059abe8abc2bcf267bef580f9d91cefffef
Bumps [oras.land/oras-go/v2](https://github.com/oras-project/oras-go) from 2.6.0 to 2.6.1.
- [Release notes](https://github.com/oras-project/oras-go/releases)
- [Commits](oras-project/oras-go@v2.6.0...v2.6.1)

---
updated-dependencies:
- dependency-name: oras.land/oras-go/v2
  dependency-version: 2.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: operator-registry
Upstream-commit: 50e9eb42e456389ffb53ea6c0b8a42f937602a4d
…002)

* Bump the k8s-dependencies group across 1 directory with 5 updates

Bumps the k8s-dependencies group with 3 updates in the / directory: [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver), [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) and [sigs.k8s.io/kind](https://github.com/kubernetes-sigs/kind).

Updates `k8s.io/apiextensions-apiserver` from 0.35.4 to 0.36.1
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.35.4...v0.36.1)

Updates `k8s.io/apimachinery` from 0.35.4 to 0.36.1
- [Commits](kubernetes/apimachinery@v0.35.4...v0.36.1)

Updates `k8s.io/client-go` from 0.35.4 to 0.36.1
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.35.4...v0.36.1)

Updates `sigs.k8s.io/controller-runtime` from 0.23.3 to 0.24.1
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.3...v0.24.1)

Updates `sigs.k8s.io/kind` from 0.31.0 to 0.32.0
- [Release notes](https://github.com/kubernetes-sigs/kind/releases)
- [Changelog](https://github.com/kubernetes-sigs/kind/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/kind@v0.31.0...v0.32.0)

---
updated-dependencies:
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/client-go
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: sigs.k8s.io/kind
  dependency-version: 0.32.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update kind installation in test gha

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Per G. da Silva <pegoncal@redhat.com>
Upstream-repository: operator-registry
Upstream-commit: 58c3582631881b733061a0d969997327829163af
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: operator-registry
Upstream-commit: fcd8df75113b6afb6159289bbd1bc4fba4a2f6ae
Signed-off-by: Francesco Giudici <fgiudici@redhat.com>
Upstream-repository: api
Upstream-commit: d6b839ad38af8735d50a35c16608b509ec1b38b7
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 5 to 6.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v5...v6)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: 8ad46923e7cf7a8b66f7b5b647288bb652497c12
Bumps [go.podman.io/image/v5](https://github.com/containers/container-libs) from 5.39.1 to 5.39.2.
- [Release notes](https://github.com/containers/container-libs/releases)
- [Commits](podman-container-tools/container-libs@image/v5.39.1...image/v5.39.2)

---
updated-dependencies:
- dependency-name: go.podman.io/image/v5
  dependency-version: 5.39.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: 3ee3c444ecf273f3d143971a9c351cb4dd69f9d5
Bumps [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) from 1.40.0 to 1.43.0.
- [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases)
- [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md)
- [Commits](open-telemetry/opentelemetry-go@v1.40.0...v1.43.0)

---
updated-dependencies:
- dependency-name: go.opentelemetry.io/otel/sdk
  dependency-version: 1.43.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: a88e8308b944f22420cc47c1e7de2e78ae67bdb0
Signed-off-by: grokspawn <jordan@nimblewidget.com>
Upstream-repository: api
Upstream-commit: 3bd61295080f082de7d5602b7b676f01267149df
Bumps [github.com/google/cel-go](https://github.com/google/cel-go) from 0.27.0 to 0.28.0.
- [Release notes](https://github.com/google/cel-go/releases)
- [Commits](google/cel-go@v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: github.com/google/cel-go
  dependency-version: 0.28.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: ee38ad0af11ea2230ea5647003a273178c52b3b5
Bumps the k8s-dependencies group with 4 updates: [k8s.io/api](https://github.com/kubernetes/api), [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver), [k8s.io/apimachinery](https://github.com/kubernetes/apimachinery) and [k8s.io/client-go](https://github.com/kubernetes/client-go).

Updates `k8s.io/api` from 0.35.3 to 0.35.4
- [Commits](kubernetes/api@v0.35.3...v0.35.4)

Updates `k8s.io/apiextensions-apiserver` from 0.35.3 to 0.35.4
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.35.3...v0.35.4)

Updates `k8s.io/apimachinery` from 0.35.3 to 0.35.4
- [Commits](kubernetes/apimachinery@v0.35.3...v0.35.4)

Updates `k8s.io/client-go` from 0.35.3 to 0.35.4
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.35.3...v0.35.4)

---
updated-dependencies:
- dependency-name: k8s.io/api
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/client-go
  dependency-version: 0.35.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: b530c5bf46763e047d877a1d0b16b79dbebea6f2
Bumps [github.com/google/cel-go](https://github.com/google/cel-go) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/google/cel-go/releases)
- [Commits](google/cel-go@v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: github.com/google/cel-go
  dependency-version: 0.28.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: 3acdcf590a04cc70699347065dd7269161471e49
Bumps [go.podman.io/image/v5](https://github.com/containers/container-libs) from 5.39.2 to 5.40.0.
- [Release notes](https://github.com/containers/container-libs/releases)
- [Commits](podman-container-tools/container-libs@image/v5.39.2...image/v5.40.0)

---
updated-dependencies:
- dependency-name: go.podman.io/image/v5
  dependency-version: 5.40.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: 755d5d18962479cfb7db2c9e16d2c5a750dfd109
…penshift#493)

Upstream-repository: api
Upstream-commit: da918bd4375d1a7bc5abe4fb4f72158da37f6ced
Signed-off-by: Todd Short <tshort@redhat.com>
Upstream-repository: api
Upstream-commit: b1290def0d494bb14e1f272951fd7889f9dec2db
…les (openshift#496)

* fix: stop emitting false-positive deprecated-API warnings for RBAC rules

RBAC PolicyRules only specify apiGroups and resources, not versions.
The deprecatedGroupResource map was flagging any RBAC rule that
referenced a group+resource combination where a beta version had been
removed, even when a stable version still exists in the same group.

This produced false-positive warnings for operators that use stable
APIs like batch/v1 CronJob, autoscaling/v2 HPA, events.k8s.io/v1
Event, policy/v1 PDB, discovery.k8s.io/v1 EndpointSlice, and
node.k8s.io/v1 RuntimeClass.

Remove these entries from the deprecatedGroupResource map since RBAC
rules for them are valid. Keep only PodSecurityPolicy, which was
entirely removed in v1.25 with no stable replacement in the policy
group.

The deprecatedGvk check (for actual versioned manifests in the bundle)
is unaffected and continues to correctly flag deprecated objects.

Fixes openshift#378

Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>

* refactor: rename deprecatedGroupResource to removedGroupResource

Rename identifiers to match actual semantics: this map tracks
resources entirely removed from their API group, not merely
deprecated. Renames deprecatedGroupResource -> removedGroupResource
and warnIfDeprecated -> warnIfRemoved.

Suggested-by: Copilot
Requested-by: perdasilva
Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>

---------

Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
Upstream-repository: api
Upstream-commit: 86d7cedb27dc0ec9a67903e4cf6ea18b31c80562
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 6 to 7.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@v6...v7)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Upstream-repository: api
Upstream-commit: 52c4c326869dab8aa73675533a815ef149ec7ea2
…enshift#498)

* Bump the k8s-dependencies group across 1 directory with 5 updates

Bumps the k8s-dependencies group with 2 updates in the / directory: [k8s.io/apiextensions-apiserver](https://github.com/kubernetes/apiextensions-apiserver) and [sigs.k8s.io/controller-runtime](https://github.com/kubernetes-sigs/controller-runtime).

Updates `k8s.io/apiextensions-apiserver` from 0.35.4 to 0.36.1
- [Release notes](https://github.com/kubernetes/apiextensions-apiserver/releases)
- [Commits](kubernetes/apiextensions-apiserver@v0.35.4...v0.36.1)

Updates `k8s.io/apimachinery` from 0.35.4 to 0.36.1
- [Commits](kubernetes/apimachinery@v0.35.4...v0.36.1)

Updates `k8s.io/client-go` from 0.35.4 to 0.36.1
- [Changelog](https://github.com/kubernetes/client-go/blob/master/CHANGELOG.md)
- [Commits](kubernetes/client-go@v0.35.4...v0.36.1)

Updates `k8s.io/kube-openapi` from 0.0.0-20260127142750-a19766b6e2d4 to 0.0.0-20260317180543-43fb72c5454a
- [Commits](https://github.com/kubernetes/kube-openapi/commits)

Updates `sigs.k8s.io/controller-runtime` from 0.23.3 to 0.24.1
- [Release notes](https://github.com/kubernetes-sigs/controller-runtime/releases)
- [Changelog](https://github.com/kubernetes-sigs/controller-runtime/blob/main/RELEASE.md)
- [Commits](kubernetes-sigs/controller-runtime@v0.23.3...v0.24.1)

---
updated-dependencies:
- dependency-name: k8s.io/apiextensions-apiserver
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/apimachinery
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/client-go
  dependency-version: 0.36.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
- dependency-name: k8s.io/kube-openapi
  dependency-version: 0.0.0-20260317180543-43fb72c5454a
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: k8s-dependencies
- dependency-name: sigs.k8s.io/controller-runtime
  dependency-version: 0.24.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: k8s-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Bump kind version

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

* Regenerate manifests

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

* Update kind node version determination

Signed-off-by: Per G. da Silva <pegoncal@redhat.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Per G. da Silva <pegoncal@redhat.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Per G. da Silva <pegoncal@redhat.com>
Upstream-repository: api
Upstream-commit: 887f1614d763d173a09b7ffa6706308fb20ef7ab
@openshift-bot openshift-bot force-pushed the synchronize-upstream branch from ae1909d to 86eba04 Compare June 12, 2026 00:26
@openshift-ci openshift-ci Bot removed the lgtm Indicates that a PR is ready to be merged. label Jun 12, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/factory.go (1)

163-170: ⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Shutdown() now assumes an optional InformerName was always configured.

Both staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/factory.go and staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/factory.go leave informerName nil on the default constructor path, but unconditionally call Release() during shutdown. That turns a zero-option factory into a teardown panic.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/factory.go`
around lines 163 - 170, The Shutdown() method in sharedInformerFactory calls
f.informerName.Release() unconditionally but informerName can be nil for
factories created via the default constructor; add a nil-check before calling
Release() (e.g., if f.informerName != nil { f.informerName.Release() }) or
ensure informerName is initialized on the default construction path; update the
Shutdown() implementation in sharedInformerFactory to only call Release() when
informerName is non-nil to avoid a teardown panic.
🧹 Nitpick comments (1)
staging/operator-registry/.github/workflows/test.yml (1)

25-26: ⚡ Quick win

Consider adding validation for the kind version resolution.

The command uses command substitution to resolve the kind version from go.mod. If go list fails or returns unexpected output, the error message might be cryptic. Consider adding explicit validation:

🛡️ Proposed improvement for better error messages
       - name: Install kind
-        run: go install sigs.k8s.io/kind@$(go list -m -f '{{.Version}}' sigs.k8s.io/kind)
+        run: |
+          KIND_VERSION=$(go list -m -f '{{.Version}}' sigs.k8s.io/kind)
+          if [ -z "$KIND_VERSION" ]; then
+            echo "Failed to resolve kind version from go.mod"
+            exit 1
+          fi
+          echo "Installing kind $KIND_VERSION"
+          go install "sigs.k8s.io/kind@${KIND_VERSION}"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@staging/operator-registry/.github/workflows/test.yml` around lines 25 - 26,
The workflow's "Install kind" step uses command substitution with go list which
can fail silently; update that step to run the version resolution in a short
shell snippet: call go list -m -f '{{.Version}}' sigs.k8s.io/kind, check its
exit status and that the output is non-empty, and if either check fails emit a
clear error (e.g. "failed to resolve kind version from go.mod: <reason>") and
exit non-zero before running go install sigs.k8s.io/kind@<version>; refer to the
"Install kind" step and the go install command string to locate where to add the
validation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@staging/api/Makefile`:
- Around line 121-124: The Makefile currently uses immediate expansion
(KIND_NODE_VERSION := $(shell ./hack/get-kind-node-version.sh)) which runs the
shell lookup at parse time for every make invocation; change it to a
deferred/recursive expansion so the shell call only runs when the variable is
actually used (e.g., replace := with = for KIND_NODE_VERSION and keep
KIND_CLUSTER_IMAGE defined as KIND_CLUSTER_IMAGE :=
kindest/node:v$(KIND_NODE_VERSION) or move the shell invocation into the
kind-cluster target recipe and set KIND_CLUSTER_IMAGE there so unrelated targets
don't trigger the networked shell commands.

In `@staging/operator-lifecycle-manager/.bingo/README.md`:
- Line 13: The README entry "Go 1.24.x or 1.25.x" is out of sync with the
repository toolchain pinned to Go 1.26.3; update the .bingo/README.md text to
reference Go 1.26 (or explicitly 1.26.3) so contributor guidance matches the
checked-in toolchain (compare against the module/toolchain declaration that pins
1.26.3 and use that exact version string in the README).

In
`@staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/factory.go`:
- Line 312: Update the misleading inline comment in factory.go: replace the
circular phrase "WaitForCacheSync should be used instead of WaitForCacheSync"
with the correct method reference "WaitForCacheSyncWithContext" so the comment
reads that WaitForCacheSyncWithContext should be used instead of
WaitForCacheSync; ensure the comment references the two methods
WaitForCacheSyncWithContext and WaitForCacheSync so readers can locate the
suggested change near the informer factory initialization (e.g., around the
WaitForCacheSync usage).
- Around line 93-106: The factory exposes WithInformerName(informerName
*cache.InformerName) but does not validate nil, and multiple call sites
(sharedInformerFactory.Shutdown() calling f.informerName.Release() and generated
informer constructors calling options.InformerName.WithResource(gvr))
dereference it unconditionally; add nil guards: validate the argument in
WithInformerName (return factory unchanged or panic with clear message if nil),
make sharedInformerFactory.InformerName() return nil-safe value or keep it nil
but change Shutdown() to check f.informerName != nil before calling Release(),
and update all generated informer constructors to check options.InformerName !=
nil before calling WithResource(gvr) (fall back to no-op or alternative
behavior) so no nil-pointer dereference can occur.

In
`@staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v2/operatorcondition.go`:
- Around line 64-66: NewOperatorConditionInformerWithOptions currently
dereferences options.InformerName unconditionally which can panic; fix by
checking if options.InformerName is nil before use and using a safe fallback: if
options.InformerName != nil set identifier =
options.InformerName.WithResource(gvr) else set identifier =
internalinterfaces.DefaultInformerName.WithResource(gvr) (or another suitable
default informer-name generator available in internalinterfaces) so callers that
omit InformerName (e.g., NewOperatorConditionInformer /
NewFilteredOperatorConditionInformer) do not nil-deref.

In
`@staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/operators/v1/packagemanifest.go`:
- Around line 64-67: NewPackageManifestInformerWithOptions (and the
internalversion counterpart) call options.InformerName.WithResource(gvr)
unconditionally which will panic if InformerName is nil; guard the call by
checking if options.InformerName != nil before invoking WithResource and set
identifier to a sensible zero/default (or nil) when InformerName is nil so
informer construction does not panic, e.g. replace the direct call to
options.InformerName.WithResource(gvr) with a conditional that assigns
identifier only when InformerName is non-nil and otherwise leaves identifier
unset/zero, and mirror the same nil-check fix in the internalversion
NewPackageManifestInformerWithOptions implementation.

---

Outside diff comments:
In
`@staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/factory.go`:
- Around line 163-170: The Shutdown() method in sharedInformerFactory calls
f.informerName.Release() unconditionally but informerName can be nil for
factories created via the default constructor; add a nil-check before calling
Release() (e.g., if f.informerName != nil { f.informerName.Release() }) or
ensure informerName is initialized on the default construction path; update the
Shutdown() implementation in sharedInformerFactory to only call Release() when
informerName is non-nil to avoid a teardown panic.

---

Nitpick comments:
In `@staging/operator-registry/.github/workflows/test.yml`:
- Around line 25-26: The workflow's "Install kind" step uses command
substitution with go list which can fail silently; update that step to run the
version resolution in a short shell snippet: call go list -m -f '{{.Version}}'
sigs.k8s.io/kind, check its exit status and that the output is non-empty, and if
either check fails emit a clear error (e.g. "failed to resolve kind version from
go.mod: <reason>") and exit non-zero before running go install
sigs.k8s.io/kind@<version>; refer to the "Install kind" step and the go install
command string to locate where to add the validation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository: openshift/coderabbit/.coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 847867a5-8fcf-4d93-bf0a-085682645f3d

📥 Commits

Reviewing files that changed from the base of the PR and between ae1909d and 86eba04.

⛔ Files ignored due to path filters (230)
  • go.sum is excluded by !**/*.sum
  • staging/api/.bingo/kind.sum is excluded by !**/*.sum
  • staging/api/go.sum is excluded by !**/*.sum
  • staging/operator-lifecycle-manager/.bingo/kind.sum is excluded by !**/*.sum
  • staging/operator-lifecycle-manager/go.sum is excluded by !**/*.sum
  • staging/operator-lifecycle-manager/pkg/package-server/client/openapi/zz_generated.openapi.go is excluded by !**/zz_generated*
  • staging/operator-registry/go.sum is excluded by !**/*.sum
  • vendor/github.com/fatih/color/color.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fatih/color/color_windows.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/cache.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/decode_map_utils.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/diagnose.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/encode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/simplevalue.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/stream.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/structfields.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/fxamacker/cbor/v2/valid.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/.cliff.toml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/CODE_OF_CONDUCT.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/CONTRIBUTORS.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/errors.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonpointer/pointer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.cliff.toml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/.golangci.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/CODE_OF_CONDUCT.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/CONTRIBUTORS.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/NOTICE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/jsonreference/reference.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/CODE_OF_CONDUCT.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/CONTRIBUTORS.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/SECURITY.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/go.work is excluded by !**/*.work, !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/go_name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/ifaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonname/name_provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/jsonutils/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/go-openapi/swag/mangling/BENCHMARK.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/btree/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/btree/btree_generic.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/fieldpaths.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/inlining.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/library.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/program.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/prompt.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/cel/templates/authoring.tmpl is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/checker.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/cost.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/checker/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/ast/ast.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/ast/conversion.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/decls/decls.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/env/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/env/env.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/env/io.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/overloads/overloads.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/stdlib/standard.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/err.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/list.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/object.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/optional.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/pb/file.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/pb/pb.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/pb/type.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/common/types/ref/provider.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/BUILD.bazel is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/costs.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/formatting.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/formatting_v2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/lists.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/native.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/regex.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/sets.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/ext/strings.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/attributes.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/interpreter/interpretable.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/google/cel-go/parser/parser.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/LICENSE is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/client_metrics.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/client_options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/constants.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/doc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/reporter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/server_metrics.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus/server_options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.gitignore is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/.travis.yml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/CHANGELOG.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_metrics.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/client_reporter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/makefile is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/metric_options.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/packages/grpcstatus/grpcstatus.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/packages/grpcstatus/native_unwrap1.12-.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/packages/grpcstatus/native_unwrap1.13+.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_metrics.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/server_reporter.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/grpc-ecosystem/go-grpc-prometheus/util.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/README.md is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3_context.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_dbstat.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/crds/operators.coreos.com_clusterserviceversions.yaml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/crds/operators.coreos.com_subscriptions.yaml is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/crds/zz_defs.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/validation/internal/community.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/validation/internal/operatorhub.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/validation/internal/operatorhubv2.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/api/pkg/validation/internal/removed_apis.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/factory.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/internalinterfaces/factory_interfaces.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/olmconfig.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operator.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operatorcondition.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operatorgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/catalogsource.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/clusterserviceversion.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/installplan.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/subscription.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha2/operatorgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v2/operatorcondition.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/lib/controller-runtime/client/fake_ssa.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/operator-framework/operator-lifecycle-manager/pkg/package-server/client/openapi/zz_generated.openapi.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/github.com/prometheus/common/expfmt/openmetrics_create.go is excluded by !**/vendor/**, !vendor/**
  • vendor/github.com/prometheus/common/model/metric.go is excluded by !**/vendor/**, !vendor/**
  • vendor/go.etcd.io/etcd/api/v3/version/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/mod/modfile/read.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/mod/modfile/rule.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/errgroup/errgroup.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/semaphore/semaphore.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sync/singleflight/singleflight.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_386.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/ast/edge/edge.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/golist.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/packages/packages.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/go/types/objectpath/objectpath.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gcimporter/ureader.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/gocommand/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/imports/fix.go is excluded by !**/vendor/**, !vendor/**
  • vendor/golang.org/x/tools/internal/imports/mod.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/compiler/protogen/protogen.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/encoding/protodelim/protodelim.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/encoding/protojson/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/encoding/protojson/well_known_types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/encoding/prototext/decode.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/internal/descfmt/stringer.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/internal/version/version.go is excluded by !**/vendor/**, !vendor/**
  • vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admission/v1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admission/v1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admission/v1beta1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/generated.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/register.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/types_swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1/zz_generated.deepcopy.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/k8s.io/api/admissionregistration/v1/zz_generated.model_name.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/k8s.io/api/admissionregistration/v1/zz_generated.prerelease-lifecycle.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1alpha1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1alpha1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1beta1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1beta1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/admissionregistration/v1beta1/zz_generated.prerelease-lifecycle.go is excluded by !**/vendor/**, !vendor/**, !**/zz_generated*
  • vendor/k8s.io/api/apidiscovery/v2/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apidiscovery/v2/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apidiscovery/v2/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apidiscovery/v2beta1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apidiscovery/v2beta1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apidiscovery/v2beta1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1beta1/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1beta1/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1beta1/types.go is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1beta2/generated.proto is excluded by !**/vendor/**, !vendor/**
  • vendor/k8s.io/api/apps/v1beta2/generated.protomessage.pb.go is excluded by !**/*.pb.go, !**/vendor/**, !vendor/**
📒 Files selected for processing (70)
  • go.mod
  • manifests/0000_50_olm_00-catalogsources.crd.yaml
  • manifests/0000_50_olm_00-clusterserviceversions.crd.yaml
  • manifests/0000_50_olm_00-installplans.crd.yaml
  • manifests/0000_50_olm_00-olmconfigs.crd.yaml
  • manifests/0000_50_olm_00-operatorconditions.crd.yaml
  • manifests/0000_50_olm_00-operatorgroups.crd.yaml
  • manifests/0000_50_olm_00-operators.crd.yaml
  • manifests/0000_50_olm_00-subscriptions.crd.yaml
  • microshift-manifests/0000_50_olm_00-catalogsources.crd.yaml
  • microshift-manifests/0000_50_olm_00-clusterserviceversions.crd.yaml
  • microshift-manifests/0000_50_olm_00-installplans.crd.yaml
  • microshift-manifests/0000_50_olm_00-olmconfigs.crd.yaml
  • microshift-manifests/0000_50_olm_00-operatorconditions.crd.yaml
  • microshift-manifests/0000_50_olm_00-operatorgroups.crd.yaml
  • microshift-manifests/0000_50_olm_00-operators.crd.yaml
  • microshift-manifests/0000_50_olm_00-subscriptions.crd.yaml
  • staging/api/.bingo/.gitignore
  • staging/api/.bingo/README.md
  • staging/api/.bingo/Variables.mk
  • staging/api/.bingo/kind.mod
  • staging/api/.bingo/variables.env
  • staging/api/.github/workflows/go.yaml
  • staging/api/.github/workflows/verify.yml
  • staging/api/Makefile
  • staging/api/OWNERS
  • staging/api/crds/operators.coreos.com_clusterserviceversions.yaml
  • staging/api/crds/operators.coreos.com_subscriptions.yaml
  • staging/api/crds/zz_defs.go
  • staging/api/go.mod
  • staging/api/hack/get-kind-node-version.sh
  • staging/api/pkg/validation/internal/community.go
  • staging/api/pkg/validation/internal/operatorhub.go
  • staging/api/pkg/validation/internal/operatorhubv2.go
  • staging/api/pkg/validation/internal/removed_apis.go
  • staging/api/pkg/validation/internal/removed_apis_test.go
  • staging/operator-lifecycle-manager/.bingo/.gitignore
  • staging/operator-lifecycle-manager/.bingo/README.md
  • staging/operator-lifecycle-manager/.bingo/Variables.mk
  • staging/operator-lifecycle-manager/.bingo/kind.mod
  • staging/operator-lifecycle-manager/.bingo/variables.env
  • staging/operator-lifecycle-manager/deploy/chart/crds/0000_50_olm_00-clusterserviceversions.crd.yaml
  • staging/operator-lifecycle-manager/deploy/chart/crds/0000_50_olm_00-subscriptions.crd.yaml
  • staging/operator-lifecycle-manager/go.mod
  • staging/operator-lifecycle-manager/pkg/api/client/clientset/versioned/fake/clientset_generated.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/factory.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/internalinterfaces/factory_interfaces.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/olmconfig.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operator.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operatorcondition.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1/operatorgroup.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/catalogsource.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/clusterserviceversion.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/installplan.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/subscription.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha2/operatorgroup.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v2/operatorcondition.go
  • staging/operator-lifecycle-manager/pkg/lib/controller-runtime/client/fake_ssa.go
  • staging/operator-lifecycle-manager/pkg/lib/server/server_test.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/clientset/internalversion/fake/clientset_generated.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/clientset/versioned/fake/clientset_generated.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/factory.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/internalinterfaces/factory_interfaces.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/operators/v1/packagemanifest.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/factory.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/internalinterfaces/factory_interfaces.go
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/operators/internalversion/packagemanifest.go
  • staging/operator-registry/.github/workflows/test.yml
  • staging/operator-registry/.github/workflows/unit.yaml
  • staging/operator-registry/go.mod
💤 Files with no reviewable changes (1)
  • staging/api/.github/workflows/verify.yml
✅ Files skipped from review due to trivial changes (30)
  • staging/operator-registry/.github/workflows/unit.yaml
  • staging/operator-lifecycle-manager/.bingo/.gitignore
  • staging/operator-lifecycle-manager/.bingo/kind.mod
  • staging/api/.bingo/kind.mod
  • manifests/0000_50_olm_00-catalogsources.crd.yaml
  • manifests/0000_50_olm_00-operatorconditions.crd.yaml
  • manifests/0000_50_olm_00-olmconfigs.crd.yaml
  • microshift-manifests/0000_50_olm_00-installplans.crd.yaml
  • staging/operator-lifecycle-manager/pkg/lib/controller-runtime/client/fake_ssa.go
  • microshift-manifests/0000_50_olm_00-operatorgroups.crd.yaml
  • staging/api/.bingo/.gitignore
  • manifests/0000_50_olm_00-operators.crd.yaml
  • microshift-manifests/0000_50_olm_00-catalogsources.crd.yaml
  • microshift-manifests/0000_50_olm_00-operatorconditions.crd.yaml
  • microshift-manifests/0000_50_olm_00-olmconfigs.crd.yaml
  • microshift-manifests/0000_50_olm_00-operators.crd.yaml
  • staging/api/.bingo/README.md
  • manifests/0000_50_olm_00-operatorgroups.crd.yaml
  • staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/internalinterfaces/factory_interfaces.go
  • staging/api/.bingo/variables.env
  • manifests/0000_50_olm_00-subscriptions.crd.yaml
  • staging/operator-lifecycle-manager/pkg/api/client/clientset/versioned/fake/clientset_generated.go
  • staging/operator-lifecycle-manager/deploy/chart/crds/0000_50_olm_00-subscriptions.crd.yaml
  • staging/operator-lifecycle-manager/pkg/package-server/client/clientset/internalversion/fake/clientset_generated.go
  • staging/api/crds/operators.coreos.com_subscriptions.yaml
  • microshift-manifests/0000_50_olm_00-subscriptions.crd.yaml
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/internalinterfaces/factory_interfaces.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/installplan.go
  • staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v1alpha1/subscription.go
  • staging/operator-lifecycle-manager/.bingo/Variables.mk
🚧 Files skipped from review as they are similar to previous changes (7)
  • staging/api/.github/workflows/go.yaml
  • staging/api/pkg/validation/internal/community.go
  • staging/api/pkg/validation/internal/operatorhubv2.go
  • staging/api/pkg/validation/internal/removed_apis.go
  • staging/api/pkg/validation/internal/operatorhub.go
  • staging/api/OWNERS
  • staging/api/pkg/validation/internal/removed_apis_test.go

Comment thread staging/api/Makefile
Comment on lines +121 to 124
# Determine the latest available kindest/node image for the Kubernetes minor version
# matching the k8s.io/client-go dependency (e.g., client-go v0.36.1 → kindest/node:v1.36.1)
KIND_NODE_VERSION := $(shell ./hack/get-kind-node-version.sh)
KIND_CLUSTER_IMAGE := kindest/node:v$(KIND_NODE_VERSION)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Defer the kind image lookup until kind-cluster runs.

KIND_NODE_VERSION is expanded while parsing the Makefile, so this now shells out to go, curl, and python3 for every make invocation. That makes unrelated targets (make help, make tidy, etc.) fail in offline or rate-limited environments.

♻️ Proposed fix
-KIND_NODE_VERSION := $(shell ./hack/get-kind-node-version.sh)
-KIND_CLUSTER_IMAGE := kindest/node:v$(KIND_NODE_VERSION)
+KIND_NODE_VERSION = $(shell ./hack/get-kind-node-version.sh)
+KIND_CLUSTER_IMAGE = kindest/node:v$(KIND_NODE_VERSION)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Determine the latest available kindest/node image for the Kubernetes minor version
# matching the k8s.io/client-go dependency (e.g., client-go v0.36.1 → kindest/node:v1.36.1)
KIND_NODE_VERSION := $(shell ./hack/get-kind-node-version.sh)
KIND_CLUSTER_IMAGE := kindest/node:v$(KIND_NODE_VERSION)
# Determine the latest available kindest/node image for the Kubernetes minor version
# matching the k8s.io/client-go dependency (e.g., client-go v0.36.1 → kindest/node:v1.36.1)
KIND_NODE_VERSION = $(shell ./hack/get-kind-node-version.sh)
KIND_CLUSTER_IMAGE = kindest/node:v$(KIND_NODE_VERSION)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@staging/api/Makefile` around lines 121 - 124, The Makefile currently uses
immediate expansion (KIND_NODE_VERSION := $(shell
./hack/get-kind-node-version.sh)) which runs the shell lookup at parse time for
every make invocation; change it to a deferred/recursive expansion so the shell
call only runs when the variable is actually used (e.g., replace := with = for
KIND_NODE_VERSION and keep KIND_CLUSTER_IMAGE defined as KIND_CLUSTER_IMAGE :=
kindest/node:v$(KIND_NODE_VERSION) or move the shell invocation into the
kind-cluster target recipe and set KIND_CLUSTER_IMAGE there so unrelated targets
don't trigger the networked shell commands.

## Requirements

* Go 1.14+
* Go 1.24.x or 1.25.x

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Align the bingo README with the module toolchain.

This says Go 1.24.x/1.25.x, but the module is pinned to Go 1.26.3. Please update the contributor guidance so it matches the checked-in toolchain.

♻️ Proposed fix
-* Go 1.24.x or 1.25.x
+* Go 1.26.3
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* Go 1.24.x or 1.25.x
* Go 1.26.3
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@staging/operator-lifecycle-manager/.bingo/README.md` at line 13, The README
entry "Go 1.24.x or 1.25.x" is out of sync with the repository toolchain pinned
to Go 1.26.3; update the .bingo/README.md text to reference Go 1.26 (or
explicitly 1.26.3) so contributor guidance matches the checked-in toolchain
(compare against the module/toolchain declaration that pins 1.26.3 and use that
exact version string in the README).

Comment on lines +93 to +106
// WithInformerName sets the InformerName for informer identity used in metrics.
// The InformerName must be created via cache.NewInformerName() at startup,
// which validates global uniqueness. Each informer type will register its
// GVR under this name.
func WithInformerName(informerName *cache.InformerName) SharedInformerOption {
return func(factory *sharedInformerFactory) *sharedInformerFactory {
factory.informerName = informerName
return factory
}
}

func (f *sharedInformerFactory) InformerName() *cache.InformerName {
return f.informerName
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Systematic nil-pointer dereference risk across factory and all generated informers.

The InformerName field is dereferenced without nil checks in factory.go and all generated informer constructors:

  • factory.go:170: f.informerName.Release() in Shutdown() will panic if the factory was created without WithInformerName
  • All generated informer files (olmconfig.go, operator.go, operatorcondition.go, operatorgroup.go, catalogsource.go, clusterserviceversion.go, and v1alpha2/operatorgroup.go) call options.InformerName.WithResource(gvr) at lines 65-66, which will panic if InformerName is nil

The shared root cause is that WithInformerName (factory.go:97-102) does not validate that informerName is non-nil, and there's no documentation indicating it's required.

Recommended fix: Add nil guards at each dereference site:

🛡️ Proposed nil guard for factory.go Shutdown
 func (f *sharedInformerFactory) Shutdown() {
 	f.lock.Lock()
 	f.shuttingDown = true
 	f.lock.Unlock()
 
 	// Will return immediately if there is nothing to wait for.
 	f.wg.Wait()
-	f.informerName.Release()
+	if f.informerName != nil {
+		f.informerName.Release()
+	}
 }
🛡️ Proposed nil guard for informer constructors (example: olmconfig.go)
 func NewOLMConfigInformerWithOptions(client versioned.Interface, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
 	gvr := schema.GroupVersionResource{Group: "operators.coreos.com", Version: "v1", Resource: "olmconfigs"}
-	identifier := options.InformerName.WithResource(gvr)
+	var identifier string
+	if options.InformerName != nil {
+		identifier = options.InformerName.WithResource(gvr)
+	}
 	tweakListOptions := options.TweakListOptions

Apply the same pattern to all seven informer files at the corresponding lines.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/factory.go`
around lines 93 - 106, The factory exposes WithInformerName(informerName
*cache.InformerName) but does not validate nil, and multiple call sites
(sharedInformerFactory.Shutdown() calling f.informerName.Release() and generated
informer constructors calling options.InformerName.WithResource(gvr))
dereference it unconditionally; add nil guards: validate the argument in
WithInformerName (return factory unchanged or panic with clear message if nil),
make sharedInformerFactory.InformerName() return nil-safe value or keep it nil
but change Shutdown() to check f.informerName != nil before calling Release(),
and update all generated informer constructors to check options.InformerName !=
nil before calling WithResource(gvr) (fall back to no-op or alternative
behavior) so no nil-pointer dereference can occur.

// WaitForCacheSync blocks until all started informers' caches were synced
// or the stop channel gets closed.
//
// Contextual logging: WaitForCacheSync should be used instead of WaitForCacheSync in code which supports contextual logging. It also returns a more useful result.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Documentation typo: method name is circular.

The comment says "WaitForCacheSync should be used instead of WaitForCacheSync" which is circular. Should be:

Suggested change
// Contextual logging: WaitForCacheSync should be used instead of WaitForCacheSync in code which supports contextual logging. It also returns a more useful result.
// // Contextual logging: WaitForCacheSyncWithContext should be used instead of WaitForCacheSync in code which supports contextual logging. It also returns a more useful result.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/factory.go`
at line 312, Update the misleading inline comment in factory.go: replace the
circular phrase "WaitForCacheSync should be used instead of WaitForCacheSync"
with the correct method reference "WaitForCacheSyncWithContext" so the comment
reads that WaitForCacheSyncWithContext should be used instead of
WaitForCacheSync; ensure the comment references the two methods
WaitForCacheSyncWithContext and WaitForCacheSync so readers can locate the
suggested change near the informer factory initialization (e.g., around the
WaitForCacheSync usage).

Comment on lines +64 to +66
func NewOperatorConditionInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
gvr := schema.GroupVersionResource{Group: "operators.coreos.com", Version: "v2", Resource: "operatorconditions"}
identifier := options.InformerName.WithResource(gvr)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for direct calls to NewOperatorConditionInformer or NewFilteredOperatorConditionInformer
# that bypass the factory pattern

rg -n 'New(Filtered)?OperatorConditionInformer\(' \
  -g '!*_test.go' \
  -g '!*/informers/*' \
  --type go \
  -C 2

# Also check if any other v2 informer constructors are called directly
rg -n 'informersv2\.New(Filtered)?\w+Informer\(' \
  --type go \
  -C 2

Repository: openshift/operator-framework-olm

Length of output: 9605


Critical: NewOperatorConditionInformerWithOptions can panic when options.InformerName is nil
NewOperatorConditionInformerWithOptions unconditionally dereferences options.InformerName (identifier := options.InformerName.WithResource(gvr)), but the exported wrappers NewOperatorConditionInformer / NewFilteredOperatorConditionInformer omit InformerName when constructing internalinterfaces.InformerOptions, so direct callers can nil-deref (factory path only is safe).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@staging/operator-lifecycle-manager/pkg/api/client/informers/externalversions/operators/v2/operatorcondition.go`
around lines 64 - 66, NewOperatorConditionInformerWithOptions currently
dereferences options.InformerName unconditionally which can panic; fix by
checking if options.InformerName is nil before use and using a safe fallback: if
options.InformerName != nil set identifier =
options.InformerName.WithResource(gvr) else set identifier =
internalinterfaces.DefaultInformerName.WithResource(gvr) (or another suitable
default informer-name generator available in internalinterfaces) so callers that
omit InformerName (e.g., NewOperatorConditionInformer /
NewFilteredOperatorConditionInformer) do not nil-deref.

Comment on lines +64 to +67
func NewPackageManifestInformerWithOptions(client versioned.Interface, namespace string, options internalinterfaces.InformerOptions) cache.SharedIndexInformer {
gvr := schema.GroupVersionResource{Group: "packages.operators.coreos.com", Version: "v1", Resource: "packagemanifests"}
identifier := options.InformerName.WithResource(gvr)
tweakListOptions := options.TweakListOptions

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

The new PackageManifest helpers treat optional InformerName as required.

Both staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/operators/v1/packagemanifest.go and staging/operator-lifecycle-manager/pkg/package-server/client/informers/internalversion/operators/internalversion/packagemanifest.go call options.InformerName.WithResource(gvr) unconditionally even though the public constructors and default factory path can supply nil. That makes ordinary informer construction panic before the informer starts.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In
`@staging/operator-lifecycle-manager/pkg/package-server/client/informers/externalversions/operators/v1/packagemanifest.go`
around lines 64 - 67, NewPackageManifestInformerWithOptions (and the
internalversion counterpart) call options.InformerName.WithResource(gvr)
unconditionally which will panic if InformerName is nil; guard the call by
checking if options.InformerName != nil before invoking WithResource and set
identifier to a sensible zero/default (or nil) when InformerName is nil so
informer construction does not panic, e.g. replace the direct call to
options.InformerName.WithResource(gvr) with a conditional that assigns
identifier only when InformerName is non-nil and otherwise leaves identifier
unset/zero, and mirror the same nil-check fix in the internalversion
NewPackageManifestInformerWithOptions implementation.

@perdasilva

Copy link
Copy Markdown
Contributor

/retest

@perdasilva

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Jun 12, 2026
@openshift-ci

openshift-ci Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@openshift-bot: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

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

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants