Skip to content

OTA-1997: Allow the CVO to use the agentic-skills payload image when creating proposals - #1433

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
racheljpg:agenticskillsimage
Jul 28, 2026
Merged

OTA-1997: Allow the CVO to use the agentic-skills payload image when creating proposals#1433
openshift-merge-bot[bot] merged 1 commit into
openshift:mainfrom
racheljpg:agenticskillsimage

Conversation

@racheljpg

@racheljpg racheljpg commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Hello. This is a PR to address some issues that were implemented by the previous iteration of this PR.
It had to be reverted, because it introduced a field in the CVO deployment that the 4.22 CVO couldn't render, so it broke during upgrades.
This PR should hopefully address that issue.
Thanks!

Assisted-by: Claude Code

Summary by CodeRabbit

  • New Features
    • Cluster deployments now use the configured CLUSTER_PROFILE setting.
    • Added an agentic-skills image reference for AgenticRun skills.
    • Agentic plugin images (console and skills) can be derived from release payload Docker image tags.
  • Bug Fixes
    • AgenticRun creation is skipped when no skills image is configured, avoiding incomplete runs.
  • Tests
    • Updated expectations to use the new Agentic skills image reference.

@openshift-ci openshift-ci Bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 27, 2026
@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai

coderabbitai Bot commented Jul 27, 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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 293ef95f-f749-4038-8305-2593c9fe2f36

📥 Commits

Reviewing files that changed from the base of the PR and between 9657b79 and 3c86f2c.

📒 Files selected for processing (6)
  • install/0000_00_cluster-version-operator_30_deployment.yaml
  • install/image-references
  • pkg/agenticrun/controller.go
  • pkg/agenticrun/controller_test.go
  • pkg/cvo/cvo.go
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
💤 Files with no reviewable changes (2)
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
  • install/0000_00_cluster-version-operator_30_deployment.yaml
🚧 Files skipped from review as they are similar to previous changes (4)
  • install/image-references
  • pkg/cvo/cvo.go
  • pkg/agenticrun/controller.go
  • pkg/agenticrun/controller_test.go

Walkthrough

The change sources the agentic skills image from payload tags, skips AgenticRun synchronization when it is unset, and replaces the deployment’s skills-image environment variable with templated CLUSTER_PROFILE configuration.

Changes

Agentic skills image wiring

Layer / File(s) Summary
Payload image discovery
pkg/cvo/cvo.go, install/image-references
Payload tag processing scans Docker image tags for both the agentic console plugin and agentic skills images, and the ImageStream declares the agentic-skills tag.
Controller skills-image gating
pkg/agenticrun/controller.go, pkg/agenticrun/controller_test.go
The default configuration leaves SkillsImage empty, explicit configuration is supported through SetSkillsImage, synchronization is skipped when the image is unset, and tests use the updated image value.
Deployment profile configuration
install/0000_00_cluster-version-operator_30_deployment.yaml, pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
Deployment manifests replace LIGHTSPEED_SKILLS_IMAGE with templated CLUSTER_PROFILE configuration.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ImageStream
  participant CVO
  participant Controller
  participant AgenticRun
  ImageStream->>CVO: Declare agentic-skills DockerImage tag
  CVO->>CVO: Discover agentic skills image from payload tags
  CVO->>Controller: SetSkillsImage(image)
  Controller->>Controller: Sync()
  Controller->>AgenticRun: Reconcile using configured skills image
Loading

Possibly related PRs

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: CVO now uses the agentic-skills payload image when creating proposals.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed No Ginkgo-style test titles were added or changed; the diff only updates test data and standard t.Run subtest names.
Test Structure And Quality ✅ Passed Changed tests are plain unit tests using fake clients; no Ginkgo, cluster resources, Eventually/Consistently, or cleanup issues appear.
Microshift Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; changes are controller/manifests/unit tests only, with no MicroShift-unsupported APIs or features introduced.
Single Node Openshift (Sno) Test Compatibility ✅ Passed No new Ginkgo e2e tests were added; the only test file changed is a standard Go unit test, so SNO-specific assumptions are not applicable.
Topology-Aware Scheduling Compatibility ✅ Passed The PR only changes image/env plumbing and skips agentic-run creation when skills image is unset; no new nodeSelector, affinity, spread, replica, or PDB constraints were added.
Ote Binary Stdout Contract ✅ Passed Changed files add config wiring only; no new fmt.Print/println or stdout writes in main/init/TestMain/RunSpecs setup were introduced.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed Changed tests are unit tests only; no new Ginkgo e2e declarations or IPv4/external-connectivity assumptions were found in the diff.
No-Weak-Crypto ✅ Passed Touched files contain no MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, no custom crypto, and no secret comparisons; only existing crypto/tls import appears.
Container-Privileges ✅ Passed No new privileged settings were introduced; the diff only changes env vars/image tags, and existing hostNetwork/securityContext lines were unchanged.
No-Sensitive-Data-In-Logs ✅ Passed Only new log is a generic skip message; changed code does not log secrets, tokens, hostnames, or customer data.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

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

🧹 Nitpick comments (2)
pkg/agenticrun/controller_test.go (1)

143-143: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Cover the setter and empty-image path.

This test bypasses SetSkillsImage by mutating c.config directly, and its only case uses a non-empty image. Use the setter and add a table case asserting that no AgenticRun is created when the image is empty.

🤖 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 `@pkg/agenticrun/controller_test.go` at line 143, Update the test setup in the
relevant AgenticRun test to configure the image through SetSkillsImage instead
of mutating c.config.SkillsImage directly. Convert the test to table-driven
cases and add an empty-image case that asserts no AgenticRun is created, while
preserving the existing non-empty-image coverage.
pkg/cvo/cvo.go (1)

449-456: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add coverage for payload-driven skills-image wiring.

The new producer path is not exercised by the current tests, which assign c.config.SkillsImage directly. Add an InitializeFromPayload test covering the agentic-skills tag and a non-DockerImage reference; otherwise a parsing regression could silently disable AgenticRun creation.

🤖 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 `@pkg/cvo/cvo.go` around lines 449 - 456, Add test coverage for
InitializeFromPayload that supplies an agentic-skills tag with a DockerImage
source and verifies the skills image is wired into AgenticRun creation; also
include a non-DockerImage reference and verify it is ignored. Use the existing
payload fixtures and assertions, rather than directly assigning
c.config.SkillsImage.
🤖 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.

Nitpick comments:
In `@pkg/agenticrun/controller_test.go`:
- Line 143: Update the test setup in the relevant AgenticRun test to configure
the image through SetSkillsImage instead of mutating c.config.SkillsImage
directly. Convert the test to table-driven cases and add an empty-image case
that asserts no AgenticRun is created, while preserving the existing
non-empty-image coverage.

In `@pkg/cvo/cvo.go`:
- Around line 449-456: Add test coverage for InitializeFromPayload that supplies
an agentic-skills tag with a DockerImage source and verifies the skills image is
wired into AgenticRun creation; also include a non-DockerImage reference and
verify it is ignored. Use the existing payload fixtures and assertions, rather
than directly assigning c.config.SkillsImage.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 8c7b5fc3-4af6-45e9-8d8e-809f7ebd1f6a

📥 Commits

Reviewing files that changed from the base of the PR and between 70bafac and 3a46d7c.

📒 Files selected for processing (5)
  • install/0000_00_cluster-version-operator_30_deployment.yaml
  • pkg/agenticrun/controller.go
  • pkg/agenticrun/controller_test.go
  • pkg/cvo/cvo.go
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
💤 Files with no reviewable changes (2)
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
  • install/0000_00_cluster-version-operator_30_deployment.yaml

- name: CLUSTER_PROFILE
value: '{{ .ClusterProfile }}'
- name: LIGHTSPEED_SKILLS_IMAGE
value: "quay.io/openshift/ci:ocp_5.0_agentic-skills"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is the main change since #1427, right? We'd previously used index .Images "agentic-skills" there, and it makes sense to me to not set the env-var at all, which is what we're doing this time around.

Comment thread pkg/agenticrun/controller.go Outdated
Namespace: envOrDefault("LIGHTSPEED_AGENTIC_RUN_NAMESPACE", "openshift-lightspeed"),
PromptConfigMap: envOrDefault("LIGHTSPEED_PROMPT_CONFIGMAP", "cluster-update-advisory-prompt"),
SkillsImage: envOrDefault("LIGHTSPEED_SKILLS_IMAGE", "quay.io/openshift/ci:ocp_5.0_agentic-skills"),
SkillsImage: os.Getenv("LIGHTSPEED_SKILLS_IMAGE"),

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

We don't need the Getenv anymore, right? We're getting the skills image from the image-references in the payload. Hmm, which we'll want to restore to what we had in #1427, and which #1431 reverted, right? I think we need that image-references entry to get the agentic-skills ImageStreamTag pulled into the release payload via openshift/oc#2287.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sorry, yes, you're right! I've updated it now so we don't get this anymore since we don't need it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

And added the image-references entry!

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

One additional follow-up on removing the environment variable.

@racheljpg
racheljpg force-pushed the agenticskillsimage branch from 3a46d7c to 63171fd Compare July 27, 2026 17:42

@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: 1

🤖 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 `@install/image-references`:
- Around line 5-8: Add the required metadata to the agentic-skills ImageStream,
including metadata.name, the cluster-profile annotations, and the
kubernetes.io/description annotation, following the conventions used by other
install manifest ImageStreams so it renders and installs consistently.
🪄 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 YAML (base), Central YAML (inherited)

Review profile: CHILL

Plan: Enterprise

Run ID: 9235ebb4-b41d-4556-a033-58e9e1b53fdc

📥 Commits

Reviewing files that changed from the base of the PR and between 3a46d7c and 63171fd.

📒 Files selected for processing (6)
  • install/0000_00_cluster-version-operator_30_deployment.yaml
  • install/image-references
  • pkg/agenticrun/controller.go
  • pkg/agenticrun/controller_test.go
  • pkg/cvo/cvo.go
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
💤 Files with no reviewable changes (2)
  • pkg/payload/testdata/TestRenderManifest_expected_cvo_deployment.yaml
  • install/0000_00_cluster-version-operator_30_deployment.yaml
🚧 Files skipped from review as they are similar to previous changes (3)
  • pkg/cvo/cvo.go
  • pkg/agenticrun/controller.go
  • pkg/agenticrun/controller_test.go

Comment thread install/image-references
Comment on lines +5 to +8
- name: agentic-skills
from:
kind: DockerImage
name: placeholder.url.oc.will.replace.this.example.org:agentic-skills

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Complete the ImageStream metadata before adding this tag.

As supplied, this install manifest has no metadata.name, cluster-profile annotations, or kubernetes.io/description. Add the required metadata and annotations so the ImageStream can be rendered and installed consistently.

🤖 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 `@install/image-references` around lines 5 - 8, Add the required metadata to
the agentic-skills ImageStream, including metadata.name, the cluster-profile
annotations, and the kubernetes.io/description annotation, following the
conventions used by other install manifest ImageStreams so it renders and
installs consistently.

Source: Path instructions

@racheljpg
racheljpg marked this pull request as ready for review July 27, 2026 17:49
@openshift-ci openshift-ci Bot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jul 27, 2026
Comment thread pkg/agenticrun/controller.go Outdated
}

if c.config.SkillsImage == "" {
klog.V(i.Normal).Infof("Skipping agentic run creation: LIGHTSPEED_SKILLS_IMAGE is not set")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This error message needs to be updated now that we've removed the env. var. completely. Maybe just:

Suggested change
klog.V(i.Normal).Infof("Skipping agentic run creation: LIGHTSPEED_SKILLS_IMAGE is not set")
klog.V(i.Normal).Infof("Skipping agentic run creation: skills image is not set")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Thanks - updated!

@racheljpg
racheljpg force-pushed the agenticskillsimage branch from 63171fd to e9599b1 Compare July 27, 2026 17:51
@racheljpg

Copy link
Copy Markdown
Contributor Author

/test unit

@wking

wking commented Jul 27, 2026

Copy link
Copy Markdown
Member

/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade 5
/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade 5

@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

@wking: trigger 2 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/da564900-89e5-11f1-96c6-88d2db72748d-0

@redhat-chai-bot

Copy link
Copy Markdown
Contributor

Review: Does this PR solve the underlying problem from the RCA?

Short answer: Yes — for the specific regression. The root cause was that #1427 placed {{ index .Images "agentic-skills" }} in the CVO's own Deployment manifest. During a 4.22→5.0 upgrade, the 4.22 CVO's manifestRenderConfig has no Images field, so rendering fails and the manifest is silently skipped. Since the skipped manifest is the CVO Deployment, the CVO never self-updates — a circular dependency that caused version flapping, etcd quorum loss, and ~50h of blocked payloads.

This PR removes the LIGHTSPEED_SKILLS_IMAGE env var from the Deployment manifest entirely and instead resolves the skills image at runtime in InitializeFromPayload by reading the agentic-skills tag from the payload's ImageStream. This is exactly the approach the RCA §7.2 recommended: "resolve the image inside the CVO at runtime from the release payload." The CVO Deployment manifest now contains only template fields that the 4.22 CVO already understands (.ReleaseImage, .ClusterProfile), so it renders cleanly during major upgrades.

Remaining concerns worth calling out

1. The systemic guard is still missing (RCA §7.3)

The silent-skip behavior in pkg/payload/payload.go:196-206 remains. The code comment there even names .Images as the motivating example for the skip. This PR avoids the specific trigger, but any future PR that introduces a new template field in 0000_00_cluster-version-operator_30_deployment.yaml that the N-1 CVO cannot render would reproduce the same catastrophic failure.

The RCA recommends: "never silently skip the CVO's own Deployment. If that manifest fails to render, this is fatal and must surface as ReleaseAccepted=False or a Degraded condition rather than a warning nobody reads."

That guard would be valuable as a follow-up — it would turn a silent, hard-to-diagnose ~50h outage into an immediate loud failure.

2. Presubmit coverage gap

As discussed in this thread, the upgrade-into-change and upgrade-out-of-change presubmits are micro upgrades where both the old and new CVO share the same manifestRenderConfig (both have the Images field). They cannot catch this class of cross-minor template incompatibility. The /payload-aggregate runs wking kicked off against 4.22→5.0 are the right validation for this fix. For the longer term, the RCA §7.4 suggests a guard test that renders every payload manifest with the previous release's manifestRenderConfig.

3. Minor: image-references entry

The agentic-skills entry in install/image-references is necessary — without it, the image won't be pulled into the release payload via oc adm release new, and InitializeFromPayload won't find the tag. This was reverted in #1431 and correctly restored here.

Summary

The fix correctly addresses the root cause by moving the skills image resolution from manifest-template-time to Go-runtime-time, which is robust against cross-version manifestRenderConfig mismatches. The broader systemic concern (the silent-skip behavior for the CVO's own Deployment) is worth a separate follow-up.


Posted via Chai Bot from this Slack thread at the request of a team member.

@wking wking changed the title Allow the CVO to use the agentic-skills payload image when creating proposals OTA-1997: Allow the CVO to use the agentic-skills payload image when creating proposals Jul 27, 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 Jul 27, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

@racheljpg: This pull request references OTA-1997 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

Hello. This is a PR to address some issues that were implemented by the previous iteration of this PR.
It had to be reverted, because it introduced a field in the CVO deployment that the 4.22 CVO couldn't render, so it broke during upgrades.
This PR should hopefully address that issue.
Thanks!

Assisted-by: Claude Code

Summary by CodeRabbit

  • New Features
  • Cluster deployments now use the configured CLUSTER_PROFILE setting.
  • Added an agentic-skills image reference for AgenticRun skills.
  • Agentic plugin images (console and skills) can be derived from release payload Docker image tags.
  • Bug Fixes
  • AgenticRun creation is skipped when no skills image is configured, preventing incomplete runs.
  • Tests
  • Updated test expectations to use the new Agentic skills image reference.

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.

@wking

wking commented Jul 27, 2026

Copy link
Copy Markdown
Member

Some kind of unrelated DNS issue:

/override ci/prow/e2e-agnostic-ovn

e2e-agnosic-operator stumbled on install, so try that one again:

/test e2e-agnostic-operator

API LBs follow /readyz of kube-apiserver and stop sending requests failure is definitely unrelated:

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3

API LBs follow /readyz of kube-apiserver and stop sending requests is unrelated too:

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3

TestPodUpdateSCCEnforcement with service account failure also unrelated:

/override ci/prow/e2e-agnostic-ovn-techpreview

The HAProxy router should pass the http2 tests also unrelated:

/override ci/prow/e2e-hypershift-conformance

@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

@wking: /override requires failed status contexts, check run or a prowjob name to operate on.
The following unknown contexts/checkruns were given:

  • ci/prow/e2e-agnostic-ovn-techpreview

Only the following failed contexts/checkruns were expected:

  • CodeRabbit
  • ci/prow/e2e-agnostic-operator
  • ci/prow/e2e-agnostic-ovn
  • ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3
  • ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3
  • ci/prow/e2e-agnostic-ovn-techpreview-serial-3of3
  • ci/prow/e2e-agnostic-ovn-upgrade-into-change
  • ci/prow/e2e-agnostic-ovn-upgrade-out-of-change
  • ci/prow/e2e-aws-ovn-techpreview
  • ci/prow/e2e-hypershift
  • ci/prow/e2e-hypershift-conformance
  • ci/prow/gofmt
  • ci/prow/images
  • ci/prow/lint
  • ci/prow/okd-scos-images
  • ci/prow/unit
  • ci/prow/verify-deps
  • ci/prow/verify-update
  • ci/prow/verify-yaml
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-operator
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn-techpreview-serial-1of3
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn-techpreview-serial-2of3
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn-techpreview-serial-3of3
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn-upgrade-into-change
  • pull-ci-openshift-cluster-version-operator-main-e2e-agnostic-ovn-upgrade-out-of-change
  • pull-ci-openshift-cluster-version-operator-main-e2e-aws-ovn-techpreview
  • pull-ci-openshift-cluster-version-operator-main-e2e-hypershift
  • pull-ci-openshift-cluster-version-operator-main-e2e-hypershift-conformance
  • pull-ci-openshift-cluster-version-operator-main-gofmt
  • pull-ci-openshift-cluster-version-operator-main-images
  • pull-ci-openshift-cluster-version-operator-main-lint
  • pull-ci-openshift-cluster-version-operator-main-okd-scos-images
  • pull-ci-openshift-cluster-version-operator-main-unit
  • pull-ci-openshift-cluster-version-operator-main-verify-deps
  • pull-ci-openshift-cluster-version-operator-main-verify-update
  • pull-ci-openshift-cluster-version-operator-main-verify-yaml
  • tide

If you are trying to override a checkrun that has a space in it, you must put a double quote on the context.

Details

In response to this:

Some kind of unrelated DNS issue:

/override ci/prow/e2e-agnostic-ovn

e2e-agnosic-operator stumbled on install, so try that one again:

/test e2e-agnostic-operator

API LBs follow /readyz of kube-apiserver and stop sending requests failure is definitely unrelated:

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3

API LBs follow /readyz of kube-apiserver and stop sending requests is unrelated too:

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3

TestPodUpdateSCCEnforcement with service account failure also unrelated:

/override ci/prow/e2e-agnostic-ovn-techpreview

The HAProxy router should pass the http2 tests also unrelated:

/override ci/prow/e2e-hypershift-conformance

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.

@wking

wking commented Jul 27, 2026

Copy link
Copy Markdown
Member

Same logic, better spelling

/override ci/prow/e2e-agnostic-ovn
/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3
/override ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3
/override ci/prow/e2e-aws-ovn-techpreview
/override ci/prow/e2e-hypershift-conformance

@openshift-ci

openshift-ci Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

@wking: Overrode contexts on behalf of wking: ci/prow/e2e-agnostic-ovn, ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3, ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3, ci/prow/e2e-aws-ovn-techpreview, ci/prow/e2e-hypershift-conformance

Details

In response to this:

Same logic, better spelling

/override ci/prow/e2e-agnostic-ovn
/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3
/override ci/prow/e2e-agnostic-ovn-techpreview-serial-2of3
/override ci/prow/e2e-aws-ovn-techpreview
/override ci/prow/e2e-hypershift-conformance

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.

@wking

wking commented Jul 27, 2026

Copy link
Copy Markdown
Member

earlier aggregates both terminated. So we'll need to run these again after rebasing around #1432.

@openshift-ci openshift-ci Bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 28, 2026
@racheljpg
racheljpg force-pushed the agenticskillsimage branch from e9599b1 to 9657b79 Compare July 28, 2026 00:27
@openshift-ci openshift-ci Bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Jul 28, 2026
@racheljpg

Copy link
Copy Markdown
Contributor Author

/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade 5
/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade 5

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@racheljpg: trigger 2 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/c0484d70-8a1b-11f1-87c6-3f8a04ff6860-0

@racheljpg
racheljpg force-pushed the agenticskillsimage branch from 9657b79 to 3c86f2c Compare July 28, 2026 00:36
@racheljpg

Copy link
Copy Markdown
Contributor Author

ignore those periodics above - I triggered those before realising there was an issue with my rebase

/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade 5
/payload-aggregate periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade 5

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@racheljpg: trigger 2 job(s) for the /payload-(with-prs|job|aggregate|job-with-prs|aggregate-with-prs) command

  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-aws-ovn-upgrade
  • periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

See details on https://pr-payload-tests.ci.openshift.org/runs/ci/19b442d0-8a65-11f1-9d35-9ebb5991575b-0

@racheljpg

Copy link
Copy Markdown
Contributor Author

/retest

@jrangelramos

Copy link
Copy Markdown
Member

Pre-Verified

I deployed the CVO in a live 5.0.0 ec4 cluster with a custom Agentic Skill image (built from upstream main and exposed on OCP internal registry).

Post deploy validations

  • Ensure env var is not on CVO deployment
$ oc get deployment -n openshift-cluster-version cluster-version-operator -o json | jq '.spec.template.spec.containers[0].env[] | select(.name | test("LIGHTSPEED|SKILL"))'
  • Check the image-references inside the running pod
$  oc exec -n openshift-cluster-version $(oc get pod -n openshift-cluster-version -l k8s-app=cluster-version-operator -o name) -- cat /release-manifests/image-references | jq .
{
  "kind": "ImageStream",
  "apiVersion": "image.openshift.io/v1",
  "metadata": {
    "name": "5.0.0-ec.4",
    "creationTimestamp": null
  },
  "spec": {
    "tags": [
      {
        "name": "cluster-version-operator",
        "annotations": {
          "io.openshift.build.versions": "kubernetes=1.35.0"
        },
        "from": {
          "kind": "DockerImage",
          "name": "cluster-version-operator:latest"
        },
        "generation": null,
        "importPolicy": {},
        "referencePolicy": {
          "type": ""
        }
      },
      {
        "name": "agentic-skills",
        "from": {
          "kind": "DockerImage",
          "name": "image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076"
        },
        "generation": null,
        "importPolicy": {},
        "referencePolicy": {
          "type": ""
        }
      }
    ]
  }
}
  • Check CVO logs for the skills image (we should not see "kipping agentic run creation: skills image is not set"
$ oc logs -f cluster-version-operator-7d765b6f76-5h6d6 | grep -i -E "skills|agentic"                       
I0728 11:36:50.578093       1 controller.go:192] Started syncing CVO configuration "ClusterVersionOperator/agenticrun-lifecycle-controller"
I0728 11:36:50.617821       1 controller.go:169] AgenticRun CustomResourceDefinition available? true (<nil>)
I0728 11:36:50.621938       1 controller.go:249] Skipping agentic run creation: cluster is progressing (Working towards 5.0.0-ec.4: 6 of 19 done (31% complete))
I0728 11:39:35.682717       1 controller.go:192] Started syncing CVO configuration "ClusterVersionOperator/agenticrun-lifecycle-controller"
  • Check agenticrun were created and has the Image reference
$ oc get agenticrun -n openshift-lightspeed                                          
NAME                       AGE
ota-5-0-0-ec-4-to-5-0-1    4s
ota-5-0-0-ec-4-to-5-0-10   6s
ota-5-0-0-ec-4-to-5-0-7    5s
ota-5-0-0-ec-4-to-5-0-8    5s
ota-5-0-0-ec-4-to-5-0-9    5s
ota-5-0-0-ec-4-to-5-1-0    6s
ota-5-0-0-ec-4-to-5-1-1    6s
ota-5-0-0-ec-4-to-5-1-2    6s
ota-5-0-0-ec-4-to-5-1-3    6s
ota-5-0-0-ec-4-to-5-1-4    6s
$ oc get agenticruns -n openshift-lightspeed -o jsonpath='{range .items[*]}{.spec.tools.skills[0].image}{"\n"}{end}'
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076
image-registry.openshift-image-registry.svc:5000/openshift-lightspeed/agentic-skills@sha256:749114dd17b427c96a2759249b3f8cd901ca7f69c811ee042551d089f4b07076

@jrangelramos

Copy link
Copy Markdown
Member

/lgtm

@wking wking left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

From the most recent aggregate jobs, the AWS aggregate had a Job execution failed: Pod got deleted unexpectedly harness failure, leaving us blind to how things would have gone there. The Azure aggregate failed, but some individual runs passed, and they all completed an update:

$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032596555927552/artifacts/e2e-azure-ovn-upgrade-2/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:21:30Z 2026-07-28T11:20:50Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:06Z 2026-07-28T10:04:55Z Completed 4.22.0-0.ci-2026-07-28-031447
$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032597453508608/artifacts/e2e-azure-ovn-upgrade-4/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:22:48Z 2026-07-28T11:25:47Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:11Z 2026-07-28T10:03:06Z Completed 4.22.0-0.ci-2026-07-28-031447
$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032596115525632/artifacts/e2e-azure-ovn-upgrade-1/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:22:17Z 2026-07-28T11:26:01Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:46Z 2026-07-28T10:08:41Z Completed 4.22.0-0.ci-2026-07-28-031447

So looks fixed to me:

/lgtm
/verified by periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Jul 28, 2026
@openshift-ci-robot

Copy link
Copy Markdown
Contributor

@wking: This PR has been marked as verified by periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade.

Details

In response to this:

From the most recent aggregate jobs, the AWS aggregate had a Job execution failed: Pod got deleted unexpectedly harness failure, leaving us blind to how things would have gone there. The Azure aggregate failed, but some individual runs passed, and they all completed an update:

$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032596555927552/artifacts/e2e-azure-ovn-upgrade-2/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:21:30Z 2026-07-28T11:20:50Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:06Z 2026-07-28T10:04:55Z Completed 4.22.0-0.ci-2026-07-28-031447
$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032597453508608/artifacts/e2e-azure-ovn-upgrade-4/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:22:48Z 2026-07-28T11:25:47Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:11Z 2026-07-28T10:03:06Z Completed 4.22.0-0.ci-2026-07-28-031447
$ curl -s https://gcsweb-ci.apps.ci.l2s4.p1.openshiftapps.com/gcs/test-platform-results/logs/openshift-cluster-version-operator-1433-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade/2082032596115525632/artifacts/e2e-azure-ovn-upgrade-1/gather-extra/artifacts/clusterversion.json | jq -r '.items[].status.history[] | .startedTime + " " + .completionTime + " " + .state + " " + .version'
2026-07-28T10:22:17Z 2026-07-28T11:26:01Z Completed 5.0.0-0.ci-2026-07-28-092705-test-ci-op-bil3gzvz-latest
2026-07-28T09:40:46Z 2026-07-28T10:08:41Z Completed 4.22.0-0.ci-2026-07-28-031447

So looks fixed to me:

/lgtm
/verified by periodic-ci-openshift-release-main-ci-5.0-upgrade-from-stable-4.22-e2e-azure-ovn-upgrade

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.

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jrangelramos, racheljpg, wking

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-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Jul 28, 2026
@wking

wking commented Jul 28, 2026

Copy link
Copy Markdown
Member

Feature:APIServer failures are unrelated to this change.

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@wking: Overrode contexts on behalf of wking: ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3

Details

In response to this:

Feature:APIServer failures are unrelated to this change.

/override ci/prow/e2e-agnostic-ovn-techpreview-serial-1of3

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.

@openshift-ci

openshift-ci Bot commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

@racheljpg: 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.

@openshift-merge-bot
openshift-merge-bot Bot merged commit bc2e913 into openshift:main Jul 28, 2026
20 checks passed
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. verified Signifies that the PR passed pre-merge verification criteria

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants