Skip to content

NO-JIRA: sync with upstream 2026-07-17 - #398

Merged
openshift-merge-bot[bot] merged 22 commits into
mainfrom
upstream-sync
Jul 22, 2026
Merged

NO-JIRA: sync with upstream 2026-07-17#398
openshift-merge-bot[bot] merged 22 commits into
mainfrom
upstream-sync

Conversation

@openshift-ci-robot

@openshift-ci-robot openshift-ci-robot commented Jul 17, 2026

Copy link
Copy Markdown

🔄 Upstream Sync

Update: Wed Jul 22 08:02:31 UTC 2026

New changes detected from upstream:

manusa and others added 5 commits July 16, 2026 10:12
…#1292)

The NetObserv eval tasks from containers#1159 lacked the `project` label and
`project-name`/`project-url` annotations, so generateValidatedProjects
skipped them and NetObserv was absent from the "Validated Kubernetes
Ecosystem Projects" table in README.md. Add the metadata to the four
tasks and regenerate the table.

Fixes containers#1290

Signed-off-by: Marc Nuri <marc@marcnuri.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ners#1298)

Pass FilteringProvider through to each tool sub-package and add per-tool
TargetCompatibilityFilters that check for kubevirt.io/v1 VirtualMachine.
This hides kubevirt tools when no target cluster has KubeVirt installed,
following the pattern established for OpenShift projects_list filtering.

Per-tool wiring is used so future tools can independently
check for HCO, AAQ, or other kubevirt ecosystem GVKs.

Assisted-By: Claude <noreply@anthropic.com>

Signed-off-by: Lee Yarwood <lyarwood@redhat.com>
…rs#1297)

* netobserv followup hardening
Signed-off-by: Julien Pinsonneau <jpinsonn@redhat.com>

* test(netobserv): cover OpenShift HTTPS detection and CA pinning

Add tests for the two security behaviors this change delivers:

- A provider that reports the OpenShift Project GVK synthesizes an
  https:// plugin URL. This is also the fail-open direction, since
  AnyTargetHasGVKs returns true on a discovery error, so the bearer
  token is never sent in cleartext.
- A configured certificate_authority is the sole trust anchor: a
  server cert not signed by the pinned CA is rejected.

Also clarify the additionalProperties:false schema comment. It is a
client-facing hint, not a server-side guard: the go-sdk raw AddTool
path does not validate tool arguments against the schema, so unknown
fields are not rejected server-side.

Signed-off-by: Marc Nuri <marc@marcnuri.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Signed-off-by: Marc Nuri <marc@marcnuri.com>
Co-authored-by: Marc Nuri <marc@marcnuri.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iners#1304)

Bumps the github-actions group with 1 update: [actions/setup-go](https://github.com/actions/setup-go).


Updates `actions/setup-go` from 6 to 7
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…un (containers#1300)

Signed-off-by: Calum Murray <cmurray@redhat.com>
@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 17, 2026
@openshift-ci-robot

openshift-ci-robot commented Jul 17, 2026

Copy link
Copy Markdown
Author

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

Details

In response to this:

🔄 Upstream Sync

This PR syncs the fork with the latest upstream changes.

Changes:

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 requested a review from matzew July 17, 2026 08:03
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Ignore keyword(s) in the title.

⛔ Ignored keywords (1)
  • NO-JIRA: sync with upstream

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: d2ecec53-4488-46bf-b2be-ae76190d36a9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Changes

Workflow execution

Layer / File(s) Summary
Review-triggered MCPChecker chain
.github/workflows/mcpchecker-trigger.yaml, .github/workflows/mcpchecker.yaml
Submitted reviews containing /run-mcpchecker now route through workflow_run, validate reviewer permissions and commit identity, and select the verified suite.
Workflow support
.github/workflows/build.yaml, .github/workflows/e2e.yaml, .github/workflows/release.yaml, .github/workflows/mcpchecker-report.yaml
Go setup actions are updated and report eligibility now checks for workflow_run events.

KubeVirt compatibility filtering

Layer / File(s) Summary
Filtering provider propagation
pkg/api/toolsets.go, pkg/mcp/tools_gosdk.go, pkg/toolsets/kubevirt/toolset.go
Filtering providers are passed through handler parameters and KubeVirt tool registration.
VirtualMachine compatibility gates
pkg/kubevirt/gvr.go, pkg/toolsets/kubevirt/vm/*/tool.go
KubeVirt VM tools now require a registered VirtualMachine GVK.
Compatibility validation
pkg/kubevirt/gvr_test.go, pkg/toolsets/kubevirt/vm/guestagent/tool_test.go, pkg/mcp/toolsets_test.go
Tests cover predicate behavior, filter registration, and omission of incompatible VM tools.

NetObserv integration updates

Layer / File(s) Summary
Context-aware NetObserv client
pkg/netobserv/config.go, pkg/netobserv/netobserv.go, pkg/netobserv/openshift.go
NetObserv uses context and filtering providers for defaulting and OpenShift detection, with stricter CA and redirect handling.
NetObserv behavior tests
pkg/netobserv/*_test.go
Tests cover updated constructors, HTTPS selection, CA validation and pinning, redirects, and discovery behavior.
Tool schemas and query handling
pkg/toolsets/netobserv/tools/*, pkg/netobserv/query.go
Tool schemas share an additionalProperties: false restriction, aggregate defaults are removed, and handlers pass expanded client parameters.
Evaluation registration
README.md, docs/NETOBSERV.md, evals/tasks/netobserv/*
NetObserv documentation and task metadata now describe review-based triggering and project annotations.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Reviewer
  participant TriggerWorkflow
  participant EvaluationWorkflow
  participant NetObservEvaluation
  Reviewer->>TriggerWorkflow: Submit review with /run-mcpchecker netobserv
  TriggerWorkflow->>EvaluationWorkflow: Complete trigger workflow
  EvaluationWorkflow->>EvaluationWorkflow: Verify review and pin commit_id
  EvaluationWorkflow->>NetObservEvaluation: Run selected suite at pinned SHA
Loading

Suggested reviewers: manusa, cali0707, ksimon1

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title is generic and does not describe the main code changes in the sync. Use a concise title that names the primary change, such as updating mcpchecker workflows, NetObserv, and KubeVirt filtering.
✅ Passed checks (3 passed)
Check name Status Explanation
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.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upstream-sync

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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.

Actionable comments posted: 3

🧹 Nitpick comments (2)
pkg/kubevirt/gvr_test.go (1)

28-48: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use testify/require for assertions.

While this test correctly uses standard t.Run() for a simple self-contained test, the project relies heavily on the testify library. Consider refactoring these manual checks to use require.Len, require.Equal, require.True, and require.False for better readability and clearer failure messages.

♻️ Proposed refactor
-		if len(p.queriedGVKs) != 1 {
-			t.Fatalf("expected 1 GVK query, got %d", len(p.queriedGVKs))
-		}
-		if p.queriedGVKs[0] != VirtualMachineGVK {
-			t.Errorf("expected query for %v, got %v", VirtualMachineGVK, p.queriedGVKs[0])
-		}
+		require.Len(t, p.queriedGVKs, 1, "expected 1 GVK query")
+		require.Equal(t, VirtualMachineGVK, p.queriedGVKs[0], "expected query for VirtualMachineGVK")
 	})

 	t.Run("returns true when provider has VirtualMachine GVK", func(t *testing.T) {
 		filter := HasVirtualMachine(&fakeFilteringProvider{hasGVKs: true})
-		if !filter() {
-			t.Error("expected HasVirtualMachine to return true")
-		}
+		require.True(t, filter(), "expected HasVirtualMachine to return true")
 	})

 	t.Run("returns false when provider does not have VirtualMachine GVK", func(t *testing.T) {
 		filter := HasVirtualMachine(&fakeFilteringProvider{hasGVKs: false})
-		if filter() {
-			t.Error("expected HasVirtualMachine to return false")
-		}
+		require.False(t, filter(), "expected HasVirtualMachine to return false")

Note: Make sure to include "github.com/stretchr/testify/require" in your imports.

🤖 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/kubevirt/gvr_test.go` around lines 28 - 48, Refactor the assertions in
the HasVirtualMachine tests to use testify/require, adding the require import
and replacing manual length, equality, true, and false checks with require.Len,
require.Equal, require.True, and require.False. Keep the existing test cases and
expectations unchanged.
pkg/mcp/toolsets_test.go (1)

134-134: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use the kubevirt toolset's GetName() here. Keep the slice narrowed for this test, but derive the toolset name from (&kubevirt.Toolset{}).GetName() instead of a string literal.

🤖 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/mcp/toolsets_test.go` at line 134, Update the toolset assignment in the
test to retain a single kubevirt entry while deriving its value from
(&kubevirt.Toolset{}).GetName() instead of using the "kubevirt" string literal.

Source: Coding guidelines

🤖 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 @.github/workflows/mcpchecker.yaml:
- Around line 122-137: The mcpchecker workflow must bind execution to the exact
review that triggered it rather than selecting a historical matching body. In
.github/workflows/mcpchecker-trigger.yaml lines 31-38, pass the submitted
review’s immutable ID through the workflow dispatch or routing payload; in
.github/workflows/mcpchecker.yaml lines 122-137, consume that ID when evaluating
reviews and select only the review whose ID matches, preserving the existing
non-dismissed and command validation.
- Around line 47-49: Update the workflow concurrency group expression and the
associated PR lookup to use the workflow run’s repository-qualified PR identity
rather than head_branch alone; include the commit SHA as a fallback when no
associated PR identity is available, ensuring runs from forks remain distinct
and the lookup targets the correct open PR.

In @.github/workflows/release.yaml:
- Around line 29-31: Update the actions/setup-go@v7 configuration in the release
job to explicitly disable caching by setting its cache option to false, while
preserving the existing go-version-file configuration.

---

Nitpick comments:
In `@pkg/kubevirt/gvr_test.go`:
- Around line 28-48: Refactor the assertions in the HasVirtualMachine tests to
use testify/require, adding the require import and replacing manual length,
equality, true, and false checks with require.Len, require.Equal, require.True,
and require.False. Keep the existing test cases and expectations unchanged.

In `@pkg/mcp/toolsets_test.go`:
- Line 134: Update the toolset assignment in the test to retain a single
kubevirt entry while deriving its value from (&kubevirt.Toolset{}).GetName()
instead of using the "kubevirt" string literal.
🪄 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: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 0d79e427-fd22-4863-9a62-4d8934aad775

📥 Commits

Reviewing files that changed from the base of the PR and between 4583840 and 44ad0d3.

📒 Files selected for processing (36)
  • .github/workflows/build.yaml
  • .github/workflows/e2e.yaml
  • .github/workflows/mcpchecker-report.yaml
  • .github/workflows/mcpchecker-trigger.yaml
  • .github/workflows/mcpchecker.yaml
  • .github/workflows/release.yaml
  • README.md
  • docs/NETOBSERV.md
  • evals/tasks/netobserv/README.md
  • evals/tasks/netobserv/export-flows/export-flows.yaml
  • evals/tasks/netobserv/get-flow-metrics/get-flow-metrics.yaml
  • evals/tasks/netobserv/list-flows/list-flows.yaml
  • evals/tasks/netobserv/tls-breakdown/tls-breakdown.yaml
  • pkg/api/toolsets.go
  • pkg/kubevirt/gvr.go
  • pkg/kubevirt/gvr_test.go
  • pkg/mcp/tools_gosdk.go
  • pkg/mcp/toolsets_test.go
  • pkg/netobserv/config.go
  • pkg/netobserv/config_test.go
  • pkg/netobserv/netobserv.go
  • pkg/netobserv/netobserv_test.go
  • pkg/netobserv/openshift.go
  • pkg/netobserv/openshift_test.go
  • pkg/netobserv/query.go
  • pkg/toolsets/kubevirt/toolset.go
  • pkg/toolsets/kubevirt/vm/clone/tool.go
  • pkg/toolsets/kubevirt/vm/create/tool.go
  • pkg/toolsets/kubevirt/vm/guestagent/tool.go
  • pkg/toolsets/kubevirt/vm/guestagent/tool_test.go
  • pkg/toolsets/kubevirt/vm/lifecycle/tool.go
  • pkg/toolsets/netobserv/tools/defaults.go
  • pkg/toolsets/netobserv/tools/export_flows.go
  • pkg/toolsets/netobserv/tools/get_flow_metrics.go
  • pkg/toolsets/netobserv/tools/list_flows.go
  • pkg/toolsets/netobserv/tools/schema.go
💤 Files with no reviewable changes (1)
  • pkg/toolsets/netobserv/tools/defaults.go

Comment on lines +47 to +49
# For workflow_run events, use head_branch to group by PR branch so different
# PRs don't cancel each other.
group: ${{ github.workflow }}-${{ github.event_name == 'workflow_run' && format('branch-{0}', github.event.workflow_run.head_branch) || github.ref }}

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 | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow file =="
nl -ba .github/workflows/mcpchecker.yaml | sed -n '1,220p'

echo
echo "== references to pulls.list / head_branch / concurrency =="
rg -n "pulls\.list|head_branch|concurrency|workflow_run|head\.ref|head_repo|head.repository|head\.sha|pull_request" .github/workflows . -g '*.yml' -g '*.yaml' -g '*.js' -g '*.ts' -g '*.sh' -g '*.py'

Repository: openshift/openshift-mcp-server

Length of output: 228


🏁 Script executed:

#!/bin/bash
set -euo pipefail
nl -ba .github/workflows/mcpchecker.yaml | sed -n '1,220p'

Repository: openshift/openshift-mcp-server

Length of output: 208


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow file =="
sed -n '1,220p' .github/workflows/mcpchecker.yaml | cat -n

echo
echo "== candidate PR lookup / concurrency references =="
rg -n "pulls\.list|head_branch|concurrency|workflow_run|head\.ref|head_repo|head\.repository|head\.sha|pull_request" .github/workflows . -g '*.yml' -g '*.yaml' -g '*.js' -g '*.ts' -g '*.sh' -g '*.py'

Repository: openshift/openshift-mcp-server

Length of output: 17953


🏁 Script executed:

#!/bin/bash
set -euo pipefail

sed -n '220,320p' .github/workflows/mcpchecker.yaml | cat -n

Repository: openshift/openshift-mcp-server

Length of output: 5165


Use repository-qualified PR identity here.
Branch names collide across forks, so head_branch can cancel unrelated runs and can pick the wrong open PR in the lookup below. Use the workflow run’s associated PR/repository identity, with a commit-SHA fallback when needed. This also applies to the PR lookup path below.

🤖 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 @.github/workflows/mcpchecker.yaml around lines 47 - 49, Update the workflow
concurrency group expression and the associated PR lookup to use the workflow
run’s repository-qualified PR identity rather than head_branch alone; include
the commit SHA as a fallback when no associated PR identity is available,
ensuring runs from forks remain distinct and the lookup targets the correct open
PR.

Comment on lines +122 to 137
// Fetch all reviews and find the most recent non-dismissed review
// containing /run-mcpchecker.
const reviews = await github.paginate(
github.rest.pulls.listReviews,
{ owner, repo, pull_number: prNum, per_page: 100 },
);

let seenComment = false;
let lastCommitSha = null;
for (const event of timeline) {
if (event.event === 'committed') {
if (!seenComment) {
lastCommitSha = event.sha;
} else {
core.setOutput('should-run', 'false');
core.setOutput('is-pr', 'true');
core.setOutput('pr-number', String(prNum));
core.setOutput('pr-sha', '');
core.info('TOCTOU: PR was updated after the /run-mcpchecker comment');
await github.rest.issues.createComment({
owner, repo, issue_number: prNum,
body: '**Evaluation not started:** the PR was updated after this ' +
'`/run-mcpchecker` comment was posted. Please re-review and ' +
'comment `/run-mcpchecker` again.',
});
return;
}
} else if (event.event === 'head_ref_force_pushed') {
if (seenComment) {
core.setOutput('should-run', 'false');
core.setOutput('is-pr', 'true');
core.setOutput('pr-number', String(prNum));
core.setOutput('pr-sha', '');
core.info('TOCTOU: PR was force-pushed after the /run-mcpchecker comment');
await github.rest.issues.createComment({
owner, repo, issue_number: prNum,
body: '**Evaluation not started:** the PR was force-pushed after this ' +
'`/run-mcpchecker` comment was posted. Please re-review and ' +
'comment `/run-mcpchecker` again.',
});
return;
}
// After a force-push the old commit SHAs are invalid; reset
// and let subsequent committed events repopulate.
lastCommitSha = null;
} else if (event.event === 'commented' && event.id === commentId) {
seenComment = true;
let triggerReview = null;
for (let i = reviews.length - 1; i >= 0; i--) {
const r = reviews[i];
if (r.state === 'DISMISSED') continue;
if (r.body && r.body.includes('/run-mcpchecker')) {
triggerReview = r;
break;
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

sed -n '1,220p' .github/workflows/mcpchecker.yaml && printf '\n---\n' && sed -n '1,180p' .github/workflows/mcpchecker-trigger.yaml && printf '\n---\n' && rg -n "review_id|node_id|pull_request_review|listReviews|/run-mcpchecker|mcpchecker-trigger" .github/workflows -S

Repository: openshift/openshift-mcp-server

Length of output: 11970


Bind the run to the triggering review ID.

.github/workflows/mcpchecker.yaml#L122-L137 scans all reviews and picks the latest non-dismissed /run-mcpchecker body, so a later review can satisfy an earlier run. The trigger workflow only passes a routing signal, so it should carry the submitted review’s immutable ID through the chain and match that exact review instead of searching historical reviews by body text.

  • .github/workflows/mcpchecker.yaml#L122-L137
  • .github/workflows/mcpchecker-trigger.yaml#L31-L38
📍 Affects 2 files
  • .github/workflows/mcpchecker.yaml#L122-L137 (this comment)
  • .github/workflows/mcpchecker-trigger.yaml#L31-L38
🤖 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 @.github/workflows/mcpchecker.yaml around lines 122 - 137, The mcpchecker
workflow must bind execution to the exact review that triggered it rather than
selecting a historical matching body. In
.github/workflows/mcpchecker-trigger.yaml lines 31-38, pass the submitted
review’s immutable ID through the workflow dispatch or routing payload; in
.github/workflows/mcpchecker.yaml lines 122-137, consume that ID when evaluating
reviews and select only the review whose ID matches, preserving the existing
non-dismissed and command validation.

Comment on lines +29 to 31
- uses: actions/setup-go@v7
with:
go-version-file: go.mod

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔒 Security & Privacy | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== .github/workflows/release.yaml ==="
nl -ba .github/workflows/release.yaml | sed -n '1,220p'

echo
echo "=== Search for setup-go and cache settings ==="
rg -n --hidden --glob '.github/workflows/*.yaml' 'actions/setup-go|cache:' .github/workflows

Repository: openshift/openshift-mcp-server

Length of output: 247


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "=== .github/workflows/release.yaml ==="
sed -n '1,220p' .github/workflows/release.yaml | cat -n

echo
echo "=== Search for setup-go and cache settings ==="
rg -n --hidden --glob '.github/workflows/*.yaml' 'actions/setup-go|cache:' .github/workflows || true

Repository: openshift/openshift-mcp-server

Length of output: 2884


🌐 Web query:

actions/setup-go v7 cache default go-version-file cache input default false documentation

💡 Result:

In actions/setup-go, the caching feature is enabled by default [1][2][3]. The cache input is an optional parameter that defaults to true, meaning you do not need to explicitly set it to true to enable caching [1][4]. If you wish to disable caching, you must explicitly set the cache input to false (e.g., cache: false) [1][3]. Regarding dependency tracking, as of recent updates (introduced in early 2026), the action defaults to using go.mod as the dependency file for calculating the cache key [5]. The action automatically searches for this file in the repository root [1][3]. If you have specific requirements, such as using go.sum or pointing to a dependency file in a different directory, you can configure this using the cache-dependency-path input [1][5][3]. For clarity, the cache input and the cache-dependency-path input serve different purposes: - cache: A boolean input that toggles the caching feature on or off (defaults to true) [1][4]. - cache-dependency-path: A string input used to specify the path to your dependency file (e.g., go.mod or go.sum) when the default behavior needs to be overridden [1][5][3].

Citations:


Disable setup-go caching in the release job.

actions/setup-go@v7 enables caching by default, so this release workflow is still using a shared mutable cache while building published artifacts. Set cache: false here to keep the release build isolated.

🧰 Tools
🪛 zizmor (1.26.1)

[error] 29-29: runtime artifacts potentially vulnerable to a cache poisoning attack (cache-poisoning): enables caching by default

(cache-poisoning)

🤖 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 @.github/workflows/release.yaml around lines 29 - 31, Update the
actions/setup-go@v7 configuration in the release job to explicitly disable
caching by setting its cache option to false, while preserving the existing
go-version-file configuration.

Source: Linters/SAST tools

cajieh and others added 4 commits July 17, 2026 10:13
…ontainers#1270)

Add support for configuring TLS minimum version and cipher suites via
environment variables, enabling operator-level control over TLS settings.

Changes:
- Add pkg/tlsutil package with TLS configuration utilities
- Add TLS_MIN_VERSION env var (values: "1.0", "1.1", "1.2", "1.3")
- Add TLS_CIPHER_SUITES env var (comma-separated cipher suite names)
- Add tls_min_version and tls_cipher_suites config file options
- Wire TLS config into HTTP server (inbound) and outbound clients
  (Kiali, OAuth, token exchange, well-known metadata)
- Add comprehensive tests for TLS configuration parsing

Environment variables take precedence over config file values.
Config file options only affect the HTTP server; env vars affect
both server and all outbound client connections.

Closes: containers#1266

Signed-off-by: cyril-ui-developer <cyril.ajieh@gmail.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Calum Murray <cmurray@redhat.com>
Signed-off-by: josunect <jcordoba@redhat.com>
Signed-off-by: arkadeepsen <arsen@redhat.com>
hhovsepy and others added 4 commits July 20, 2026 13:19
…pport (containers#1256)

* feat(kiali): update tool schemas for Gateway API and Inference API support

Update manage_istio_config tool descriptions to support
gateway.networking.k8s.io and inference.networking.k8s.io resources,
with corrected version guidance and partial-create merge semantics.

Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>

* test(kiali): add Gateway API and Inference API mcpchecker evals

Add three Configuration Management eval tasks for manage_istio_config_read
and manage_istio_config: list HTTPRoutes, create HTTPRoute, and list
InferencePools. Install Gateway API CRDs during setup-kiali; Inference API
CRDs are installed per-task.

Companion to kiali/kiali#9988.

Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>

---------

Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…iners#1319)

Bumps the github-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](actions/checkout@v7...v7.0.1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ners#1317)

Bumps [github.com/go-logr/logr](https://github.com/go-logr/logr) from 1.4.3 to 1.4.4.
- [Release notes](https://github.com/go-logr/logr/releases)
- [Changelog](https://github.com/go-logr/logr/blob/master/CHANGELOG.md)
- [Commits](go-logr/logr@v1.4.3...v1.4.4)

---
updated-dependencies:
- dependency-name: github.com/go-logr/logr
  dependency-version: 1.4.4
  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>
Cali0707 and others added 5 commits July 21, 2026 12:17
…tainers#1303)

* test: verify that the mcp server works with kuadrant mcp gateway

Signed-off-by: Calum Murray <cmurray@redhat.com>

* chore: address review comments

Signed-off-by: Calum Murray <cmurray@redhat.com>

---------

Signed-off-by: Calum Murray <cmurray@redhat.com>
Signed-off-by: josunect <jcordoba@redhat.com>
* feat(tekton): add PipelineRun troubleshooting tools

Add PipelineRun cancel and log helpers, read-only Pipeline-as-Code Repository and TektonConfig tools, and a PipelineRun troubleshooting prompt.

Update Tekton docs, eval tasks, snapshots, and MCP coverage for the new tools.

Signed-off-by: Vibhav Bobade <vibhav.bobde@gmail.com>

* fix(tekton): address PipelineRun review feedback

Signed-off-by: Vibhav Bobade <vibhav.bobde@gmail.com>

---------

Signed-off-by: Vibhav Bobade <vibhav.bobde@gmail.com>
Signed-off-by: Calum Murray <cmurray@redhat.com>
…tainers#1224)

* feat(kiali): add meshCluster parameter for multi-cluster support

Expose an optional meshCluster parameter on eight Kiali tools to target
a specific Istio mesh cluster. The value is remapped to clusterName when
calling the Kiali API.

Add kiali_list_mesh_clusters so models can discover mesh cluster names
before calling other tools. Mark all Kiali tools as not cluster-aware so
the MCP server does not inject context on them; mesh scope is selected
only via meshCluster.

Related: kiali/kiali#9927, kiali/kiali#9981

Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>

* fix(kiali): use ToolsetName and mark prompts not cluster-aware

Build meshCluster descriptions with ToolsetName() for downstream
overrides, and disable context injection on Kiali prompts as well as tools.

Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>

---------

Signed-off-by: Hayk Hovsepyan <hhovsepy@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Signed-off-by: Calum Murray <cmurray@redhat.com>
@Cali0707

Copy link
Copy Markdown

/test images

@Cali0707

Copy link
Copy Markdown

/retest-required

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

/lgtm
/approve

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

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: Cali0707, openshift-ci-robot

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 22, 2026
@openshift-ci

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown

@openshift-ci-robot: 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 214deb5 into main Jul 22, 2026
9 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants