Skip to content

fix(observability): bundle patched Perses Loki/Table/StatChart plugins [RHOAIENG-78528]#8726

Merged
openshift-merge-bot[bot] merged 2 commits into
opendatahub-io:mainfrom
christianvogt:perses-plugin-updates
Jul 22, 2026
Merged

fix(observability): bundle patched Perses Loki/Table/StatChart plugins [RHOAIENG-78528]#8726
openshift-merge-bot[bot] merged 2 commits into
opendatahub-io:mainfrom
christianvogt:perses-plugin-updates

Conversation

@christianvogt

@christianvogt christianvogt commented Jul 21, 2026

Copy link
Copy Markdown
Member

https://redhat.atlassian.net/browse/RHOAIENG-78528

Description

Bundles newer Perses plugin builds as local overrides so Loki-backed Table and StatChart panels use instant queries instead of always hitting query_range.

The COO-shipped Perses Loki plugin incorrectly sends range queries for panels that need instant queries, producing silently wrong values. Upstream fixes landed in:

This PR overrides:

Plugin Version
@perses-dev/loki-plugin v0.6.0-rc.2
@perses-dev/table-plugin v0.13.0-rc.1
@perses-dev/stat-chart-plugin v0.13.0-rc.1

Also registers the existing Prometheus override under the remote module name (Prometheus) so bundled overrides match both the Perses API name and the npm package name.

Compare the usage breakdown table:
Before:
image
After:
image

How Has This Been Tested?

Manually tested on a shared cluster: compared Loki-backed StatChart / Table panel values against direct Loki instant queries and confirmed results align with the patched plugin behavior.

Confirmed Model dashboard continues to load for a regular user.

Test Impact

No new automated tests. Coverage is a third-party Perses plugin version override; validation is against live Loki query behavior on a cluster.

Request review criteria:

Self checklist (all need to be checked):

  • The developer has manually tested the changes and verified that the changes work
  • Testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
  • The developer has added tests or explained why testing cannot be added (unit or cypress tests for related changes)
  • The code follows our Best Practices (React coding standards, PatternFly usage, performance considerations)

If you have UI changes:

  • Included any necessary screenshots or gifs if it was a UI change.
  • Included tags to the UX team if it was a UI/UX change.

After the PR is posted & before it merges:

  • The developer has tested their solution on a cluster by using the image produced by the PR to main

Summary by CodeRabbit

  • New Features
    • Added support for Loki data visualizations in observability dashboards.
    • Added statistical chart and table visualizations.
  • Improvements
    • Enhanced bundled plugin compatibility by dynamically resolving and caching bundled overrides for Prometheus, Loki, StatChart, and Table.
    • Improved behavior when bundled modules fail to load, including retry after transient errors.
  • Tests
    • Added Jest coverage for bundled override resolution and plugin loader integration.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

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

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: fe788277-cd4f-481b-95f0-347a90ffda33

📥 Commits

Reviewing files that changed from the base of the PR and between e7229e2 and 61b04c3.

📒 Files selected for processing (2)
  • packages/observability/src/perses/__tests__/persesPluginsLoader.spec.ts
  • packages/observability/src/perses/persesPluginsLoader.tsx
📜 Recent review details
⏰ Context from checks skipped due to timeout. (3)
  • GitHub Check: Phase 0: Hermetic Build Preflight
  • GitHub Check: Red Hat Konflux / odh-core-bff-on-pull-request
  • GitHub Check: Setup
🧰 Additional context used
📓 Path-based instructions (3)
**

⚙️ CodeRabbit configuration file

**: REVIEW PRIORITIES:

  1. Security vulnerabilities — provide severity, exploit scenario,
    and remediation code. Cite CWE/CVE IDs.
  2. Bugs that could reach production — logic errors, null/undefined,
    race conditions, incorrect async handling, resource leaks.
  3. API contract correctness — shape mismatches, missing error handling,
    silent failures, wrong HTTP status codes.
  4. Performance only when measurable — O(n^2) in hot paths, unbounded
    memory growth, missing pagination.

Do not comment on:

  • Naming preferences (unless genuinely misleading)
  • Import ordering or formatting (handled by ESLint and Prettier)
  • Alternative patterns that are equally valid
  • Missing docs unless a public API is genuinely unclear
  • Code deduplication / DRY suggestions where both copies are short
    and self-contained (< 20 lines)
  • Adding explicit type annotations when TypeScript can infer the type
  • Suggesting exhaustive switch/if-else when a default branch exists

Files:

  • packages/observability/src/perses/__tests__/persesPluginsLoader.spec.ts
  • packages/observability/src/perses/persesPluginsLoader.tsx
packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}

⚙️ CodeRabbit configuration file

packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}: FEATURE PACKAGE SOURCE:
These packages contribute to the dashboard via extensions or direct imports.

  1. Follow the same PatternFly v6 and TypeScript strict-mode conventions as the main frontend.
  2. Exports must be stable — other packages depend on them.
  3. Co-locate tests with source files.
  4. Check for AGENTS.md in the package root for package-specific guidance.

Files:

  • packages/observability/src/perses/__tests__/persesPluginsLoader.spec.ts
  • packages/observability/src/perses/persesPluginsLoader.tsx
**/*.{ts,tsx,js,jsx}

⚙️ CodeRabbit configuration file

**/*.{ts,tsx,js,jsx}: WEB SECURITY (XSS, CSRF Prevention):

  1. No dangerouslySetInnerHTML without sanitization (XSS - CWE-79)
  2. Validate all API responses before rendering
  3. CSRF token validation for state-changing operations
  4. No sensitive data in localStorage

Files:

  • packages/observability/src/perses/__tests__/persesPluginsLoader.spec.ts
  • packages/observability/src/perses/persesPluginsLoader.tsx
🔇 Additional comments (4)
packages/observability/src/perses/persesPluginsLoader.tsx (3)

42-84: LGTM!


1-89: No package-root AGENTS.md under packages/observability.

			> Likely an incorrect or invalid review comment.

27-33: 🔒 Security & Privacy

No code issue here — these are exact dependency pins already declared in packages/observability/package.json, and this loader only lazy-loads the existing bundled plugins.

			> Likely an incorrect or invalid review comment.
packages/observability/src/perses/__tests__/persesPluginsLoader.spec.ts (1)

1-252: LGTM!


📝 Walkthrough

Walkthrough

The observability package adds Loki, StatChart, and Table Perses plugin dependencies. The plugin loader dynamically imports locally bundled Prometheus, Loki, Table, and StatChart implementations, caches them by server and npm module names, and uses the asynchronous override loader for installed-plugin and module-import resolution. Tests cover resolution, caching, retries, failures, and remote-loader delegation.

🚥 Pre-merge checks | ✅ 10
✅ Passed checks (10 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly matches the main change: bundling patched Perses plugins for observability.
Description check ✅ Passed The PR body follows the template with issue link, description, testing, test impact, and checklist filled in.
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.
Contribution Quality And Spam Detection ✅ Passed Real functional fix with added unit tests; description is specific and issue-linked, with no second-category spam or security-theater signals.
No Hardcoded Secrets ✅ Passed No API keys, passwords, tokens, base64 blobs, or credentialed URLs in touched files; only package names and test fixtures. No CWE-798/CWE-259 issue.
No Weak Cryptography ✅ Passed No MD5/SHA1/DES/RC4/3DES/Blowfish/ECB, custom crypto, or secret comparisons found in touched files; no CWE-327/CWE-208 issue.
No Injection Vectors ✅ Passed No CWE-89/78/94/502/79 sinks in the changed files; dynamic imports are hardcoded, and all interpolations use constants or test mocks only.
No Privileged Containers ✅ Passed PASS: diff only touches TS/TSX test code; no Kubernetes/OpenShift manifests or Dockerfiles changed, and no privileged/hostNetwork/SYS_ADMIN/root flags found (CWE-250/CWE-732).
No Sensitive Data In Logs ✅ Passed No logging calls or raw request/response dumps were added in changed files; only plugin override wiring and tests. No CWE-532 exposure found.

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

@christianvogt
christianvogt requested review from antowaddle, liday-rh and lucferbux and removed request for bobbravo2 and mturley July 21, 2026 19:00

@odh-dashboard-agent odh-dashboard-agent 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.

Preflight Agent Report

Verdict: ⚠️ READY WITH WARNINGS
Commit: 11127d1

Checks
Check Status Details
Conflicts ⚠️ Mergeable, but branch is BEHIND main — consider rebasing before merge
CI (Quality Gates) ⏭️ Quality Gates Summary ✅ · Application Quality Gate (observability) ✅
CI (Konflux / Prow) ⚠️ Still running/queued — Konflux builds and Prow image mirrors pending
Jira RHOAIENG-78528 — Critical Bug, In Progress
Test Coverage No test files added; Test Impact section explains why (third-party plugin override, validated on cluster)
PR Body All template sections complete · Jira link present · Before/After screenshots included
Claude (local) No correctness bugs — two-key Map design is intentional and correct
Style (local) No CSS/styling changes
RBAC (local) No RBAC/auth concerns — pure plugin bundling change
Jira Eval (local) No formal acceptance criteria in RHOAIENG-78528
Human (PR) ⚠️ REVIEW_REQUIRED — no human approvals yet

Automated by ODH Dashboard Agent

@christianvogt
christianvogt force-pushed the perses-plugin-updates branch from 11127d1 to e7229e2 Compare July 21, 2026 19:07

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

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 `@packages/observability/package.json`:
- Around line 51-55: Update the `@perses-dev/plugin-system` dependency in the
package manifest from ^0.54.0-beta.10 to ^0.54.0-rc.1, aligning it with the
listed Perses plugin RC dependencies while leaving the other dependency versions
unchanged.
🪄 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), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: b879de0c-9ac6-4654-ada6-840fa0ec06fc

📥 Commits

Reviewing files that changed from the base of the PR and between 1860708 and 11127d1.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json, !package-lock.json
📒 Files selected for processing (2)
  • packages/observability/package.json
  • packages/observability/src/perses/persesPluginsLoader.tsx
📜 Review details
⏰ Context from checks skipped due to timeout. (4)
  • GitHub Check: ODH Dashboard Agent
  • GitHub Check: Phase 0: Hermetic Build Preflight
  • GitHub Check: preflight (8726, 11127d1, perses-plugin-updates, christianvogt/o...
  • GitHub Check: Setup
🧰 Additional context used
📓 Path-based instructions (4)
**

⚙️ CodeRabbit configuration file

**: REVIEW PRIORITIES:

  1. Security vulnerabilities — provide severity, exploit scenario,
    and remediation code. Cite CWE/CVE IDs.
  2. Bugs that could reach production — logic errors, null/undefined,
    race conditions, incorrect async handling, resource leaks.
  3. API contract correctness — shape mismatches, missing error handling,
    silent failures, wrong HTTP status codes.
  4. Performance only when measurable — O(n^2) in hot paths, unbounded
    memory growth, missing pagination.

Do not comment on:

  • Naming preferences (unless genuinely misleading)
  • Import ordering or formatting (handled by ESLint and Prettier)
  • Alternative patterns that are equally valid
  • Missing docs unless a public API is genuinely unclear
  • Code deduplication / DRY suggestions where both copies are short
    and self-contained (< 20 lines)
  • Adding explicit type annotations when TypeScript can infer the type
  • Suggesting exhaustive switch/if-else when a default branch exists

Files:

  • packages/observability/package.json
  • packages/observability/src/perses/persesPluginsLoader.tsx
**/package.json

⚙️ CodeRabbit configuration file

**/package.json: SUPPLY CHAIN: NPM PACKAGE MANIFEST TAMPERING (CWE-829)

package.json controls dependency resolution and lifecycle script execution.
Attackers use it to introduce malicious packages or execute code during
npm install.

FLAG AS CRITICAL:

  1. Lifecycle scripts (preinstall, postinstall, prepare, prepublish) that
    run shell commands, curl/wget, or reference external URLs. NOTE:
    "prepare" running husky and "postinstall" running turbo/lerna are
    standard toolchain patterns and should not be flagged
  2. New dependencies with names that differ by 1-2 characters from
    well-known packages already in the project's dependencies (e.g.,
    "lodassh" when "lodash" is already a dependency). This is a
    best-effort heuristic, not a comprehensive typosquatting check
  3. publishConfig with a non-default registry URL
  4. Scoped packages (@scope/pkg) where the scope doesn't match a known,
    trusted organization
  5. New dependencies not imported or referenced anywhere in the code
    changes within the same PR (dependency added but never used)

Files:

  • packages/observability/package.json
packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}

⚙️ CodeRabbit configuration file

packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}: FEATURE PACKAGE SOURCE:
These packages contribute to the dashboard via extensions or direct imports.

  1. Follow the same PatternFly v6 and TypeScript strict-mode conventions as the main frontend.
  2. Exports must be stable — other packages depend on them.
  3. Co-locate tests with source files.
  4. Check for AGENTS.md in the package root for package-specific guidance.

Files:

  • packages/observability/src/perses/persesPluginsLoader.tsx
**/*.{ts,tsx,js,jsx}

⚙️ CodeRabbit configuration file

**/*.{ts,tsx,js,jsx}: WEB SECURITY (XSS, CSRF Prevention):

  1. No dangerouslySetInnerHTML without sanitization (XSS - CWE-79)
  2. Validate all API responses before rendering
  3. CSRF token validation for state-changing operations
  4. No sensitive data in localStorage

Files:

  • packages/observability/src/perses/persesPluginsLoader.tsx
🔇 Additional comments (1)
packages/observability/src/perses/persesPluginsLoader.tsx (1)

4-7: Also applies to: 28-42

Comment thread packages/observability/package.json

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 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 `@packages/observability/src/perses/persesPluginsLoader.tsx`:
- Around line 23-59: Add co-located tests for the override-loading logic in
loadBundledOverride and both loader entry points. Cover manifest-name lookup,
cached npm-name alias lookup, delegation for unknown plugins, and retry behavior
after a rejected dynamic import, using mocked bundled modules and loaders
without changing unrelated behavior.
- Around line 52-57: Update the override-loading promise in the loader flow
around loadedOverrides and getPluginModule so rejected dynamic imports remove
their cache entries before propagating the error. Evict both the requested name
and any npm package name alias that may have been registered, while preserving
successful caching and rejection behavior.
🪄 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), Organization UI (inherited)

Review profile: ASSERTIVE

Plan: Enterprise

Run ID: 4a737bac-bcc2-4002-807f-b0ffc5c28322

📥 Commits

Reviewing files that changed from the base of the PR and between 11127d1 and e7229e2.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json, !package-lock.json
📒 Files selected for processing (2)
  • packages/observability/package.json
  • packages/observability/src/perses/persesPluginsLoader.tsx
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
  • GitHub Check: Phase 0: Hermetic Build Preflight
  • GitHub Check: Setup
🧰 Additional context used
📓 Path-based instructions (4)
**

⚙️ CodeRabbit configuration file

**: REVIEW PRIORITIES:

  1. Security vulnerabilities — provide severity, exploit scenario,
    and remediation code. Cite CWE/CVE IDs.
  2. Bugs that could reach production — logic errors, null/undefined,
    race conditions, incorrect async handling, resource leaks.
  3. API contract correctness — shape mismatches, missing error handling,
    silent failures, wrong HTTP status codes.
  4. Performance only when measurable — O(n^2) in hot paths, unbounded
    memory growth, missing pagination.

Do not comment on:

  • Naming preferences (unless genuinely misleading)
  • Import ordering or formatting (handled by ESLint and Prettier)
  • Alternative patterns that are equally valid
  • Missing docs unless a public API is genuinely unclear
  • Code deduplication / DRY suggestions where both copies are short
    and self-contained (< 20 lines)
  • Adding explicit type annotations when TypeScript can infer the type
  • Suggesting exhaustive switch/if-else when a default branch exists

Files:

  • packages/observability/package.json
  • packages/observability/src/perses/persesPluginsLoader.tsx
**/package.json

⚙️ CodeRabbit configuration file

**/package.json: SUPPLY CHAIN: NPM PACKAGE MANIFEST TAMPERING (CWE-829)

package.json controls dependency resolution and lifecycle script execution.
Attackers use it to introduce malicious packages or execute code during
npm install.

FLAG AS CRITICAL:

  1. Lifecycle scripts (preinstall, postinstall, prepare, prepublish) that
    run shell commands, curl/wget, or reference external URLs. NOTE:
    "prepare" running husky and "postinstall" running turbo/lerna are
    standard toolchain patterns and should not be flagged
  2. New dependencies with names that differ by 1-2 characters from
    well-known packages already in the project's dependencies (e.g.,
    "lodassh" when "lodash" is already a dependency). This is a
    best-effort heuristic, not a comprehensive typosquatting check
  3. publishConfig with a non-default registry URL
  4. Scoped packages (@scope/pkg) where the scope doesn't match a known,
    trusted organization
  5. New dependencies not imported or referenced anywhere in the code
    changes within the same PR (dependency added but never used)

Files:

  • packages/observability/package.json
packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}

⚙️ CodeRabbit configuration file

packages/{model-registry,model-serving,model-training,kserve,llmd-serving,feature-store,observability,plugin-core,app-config}/src/**/*.{ts,tsx}: FEATURE PACKAGE SOURCE:
These packages contribute to the dashboard via extensions or direct imports.

  1. Follow the same PatternFly v6 and TypeScript strict-mode conventions as the main frontend.
  2. Exports must be stable — other packages depend on them.
  3. Co-locate tests with source files.
  4. Check for AGENTS.md in the package root for package-specific guidance.

Files:

  • packages/observability/src/perses/persesPluginsLoader.tsx
**/*.{ts,tsx,js,jsx}

⚙️ CodeRabbit configuration file

**/*.{ts,tsx,js,jsx}: WEB SECURITY (XSS, CSRF Prevention):

  1. No dangerouslySetInnerHTML without sanitization (XSS - CWE-79)
  2. Validate all API responses before rendering
  3. CSRF token validation for state-changing operations
  4. No sensitive data in localStorage

Files:

  • packages/observability/src/perses/persesPluginsLoader.tsx
🔇 Additional comments (1)
packages/observability/package.json (1)

52-52: Duplicate: align plugin-system with the added Perses RC plugins.

Line 52 still pins @perses-dev/plugin-system to ^0.54.0-beta.10, while the new Loki, Table, and StatChart RCs require the 0.54.0-rc.1 peer range noted in the previous review. Strict peer resolution can therefore fail installation instead of loading the bundled plugins. (docs.npmjs.com)

Proposed fix
-    "`@perses-dev/plugin-system`": "^0.54.0-beta.10",
+    "`@perses-dev/plugin-system`": "^0.54.0-rc.1",
#!/usr/bin/env bash
set -euo pipefail

for spec in \
  '`@perses-dev/loki-plugin`@0.6.0-rc.2' \
  '`@perses-dev/stat-chart-plugin`@0.13.0-rc.1' \
  '`@perses-dev/table-plugin`@0.13.0-rc.1'; do
  npm view "$spec" peerDependencies --json
done

npm install --ignore-scripts --strict-peer-deps --dry-run

Source: MCP tools

Comment thread packages/observability/src/perses/persesPluginsLoader.tsx Outdated
Comment thread packages/observability/src/perses/persesPluginsLoader.tsx Outdated
@codecov

codecov Bot commented Jul 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 89.18919% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 60.70%. Comparing base (1860708) to head (61b04c3).
⚠️ Report is 18 commits behind head on main.

Files with missing lines Patch % Lines
...s/observability/src/perses/persesPluginsLoader.tsx 89.18% 4 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #8726      +/-   ##
==========================================
+ Coverage   60.67%   60.70%   +0.03%     
==========================================
  Files        2979     2979              
  Lines      100608   100640      +32     
  Branches    23963    23967       +4     
==========================================
+ Hits        61045    61095      +50     
+ Misses      39563    39545      -18     
Files with missing lines Coverage Δ
...s/observability/src/perses/persesPluginsLoader.tsx 93.54% <89.18%> (+73.54%) ⬆️

... and 2 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 1860708...61b04c3. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@DaoDaoNoCode

Copy link
Copy Markdown
Member

Note for future reference: @perses-dev/stat-chart-plugin is pinned to v0.13.0-rc.1 which includes hardcoded queryOptions: { mode: 'instant' } (upstream PR perses/plugins#738). This was later reverted upstream (perses/plugins#744) because it breaks StatChart panels that use sparklines — sparklines need range data.

This is safe for our dashboards because none of our 8 StatChart panels (4 ODH + 4 RHOAI in manifests/observability/) use sparklines — they only use calculation: mean or calculation: last-number for single aggregate values.

v0.13.0-rc.2 has the revert (no instant mode), which would be safer generally but means StatChart panels would still send range queries to Loki, defeating the purpose of this fix. The proper upstream solution (perses/plugins#746 — derive mode from spec) is still open.

When upgrading these overrides in the future, verify that the new version either includes #746 or that our stat panels still don't use sparklines.

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

/lgtm
The comment above is just a FYI for future developers, the fix in this PR is correct.

@openshift-ci

openshift-ci Bot commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: DaoDaoNoCode

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-merge-bot
openshift-merge-bot Bot merged commit ae15d2e into opendatahub-io:main Jul 22, 2026
102 of 105 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants