Skip to content

USHIFT-7420: Enable CI Doctor to use JSON based PCP graphs - #252

Merged
openshift-merge-bot[bot] merged 1 commit into
openshift-eng:mainfrom
pmtk:doctor-pcp-graphs-json
Aug 3, 2026
Merged

USHIFT-7420: Enable CI Doctor to use JSON based PCP graphs#252
openshift-merge-bot[bot] merged 1 commit into
openshift-eng:mainfrom
pmtk:doctor-pcp-graphs-json

Conversation

@pmtk

@pmtk pmtk commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features

    • PCP performance reports now use JSON metric data rendered in interactive charts.
    • Added support for CPU, memory, I/O, and disk metric JSON outputs.
    • Performance analysis now uses sustained metric samples and cites specific metric evidence.
  • Documentation

    • Updated setup and usage guidance for JSON-based metrics and interactive dashboards.
    • Clarified requirements for adding new metric types and generating standalone reports.
  • Chores

    • Updated the microshift-ci plugin version to 1.5.4.

@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: pmtk

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 Aug 3, 2026
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Walkthrough

The microshift-ci plugin documentation now describes PCP metrics as JSON outputs rendered with Chart.js. Analysis guidance uses sustained metric samples and metric data points as evidence. Both plugin manifests update the version to 1.5.4.

Changes

PCP JSON metrics transition

Layer / File(s) Summary
Document JSON metric outputs
.claude-plugin/marketplace.json, plugins/microshift-ci/.claude-plugin/plugin.json, plugins/microshift-ci/scripts/pcp-graphs/README.md, plugins/microshift-ci/skills/doctor/SKILL.md
The documentation describes JSON metric files, Chart.js rendering, updated prerequisites, output fields, and extension steps.
Update metric analysis evidence
plugins/microshift-ci/agents/prow-job-analyzer.md
The analyzer guidance uses JSON metrics, four-sample sustained patterns, metric data points, and quoted evidence for high-confidence causal chains.
Synchronize plugin versions
.claude-plugin/marketplace.json, plugins/microshift-ci/.claude-plugin/plugin.json
Both manifests update microshift-ci from version 1.5.3 to 1.5.4.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

Suggested reviewers: ggiguash, kasturinarra

🚥 Pre-merge checks | ✅ 11
✅ Passed checks (11 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: enabling CI Doctor to use JSON-based PCP graphs.
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.
No-Weak-Crypto ✅ Passed The PR changes only two JSON manifests and three Markdown files; added lines contain no MD5, SHA1, DES, RC4, Blowfish, ECB, or crypto implementation.
Container-Privileges ✅ Passed The patch changes only plugin metadata and Markdown documentation; added lines contain no privileged:true, hostPID, hostNetwork, hostIPC, SYS_ADMIN, or allowPrivilegeEscalation:true settings.
No-Sensitive-Data-In-Logs ✅ Passed The commit changes only versions and PCP documentation; it adds no logging code or sensitive literals, and the documented JSON outputs contain timestamps and numeric metrics.
No-Hardcoded-Secrets ✅ Passed The PR changes only plugin versions and documentation. Added-line and full-file scans found no secret assignments, credential URLs, private keys, bearer tokens, or long base64 literals.
No-Injection-Vectors ✅ Passed The PR changes only JSON and Markdown files; scans of all 36 added lines and changed paths found no listed injection vectors.
Ai-Attribution ✅ Passed The PR has one commit with no AI-tool mention and no Co-Authored-By trailer; no AI attribution trailer is required by the stated condition.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 markdownlint-cli2 (0.23.1)
plugins/microshift-ci/agents/prow-job-analyzer.md

markdownlint-cli2 v0.23.1 (markdownlint v0.41.1)
Finding: :plugins/microshift-ci/agents/prow-job-analyzer.md :plugins/microshift-ci/scripts/pcp-graphs/README.md :plugins/microshift-ci/skills/doctor/SKILL.md !node_modules/** !two-node-toolbox/** !plugins/workspace/domains/** !plugins/workspace/skills/**
Linting: 3 files
Summary: 0 issues in 0 files
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:95:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:915:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1111:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/n

... [truncated 1262 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}

plugins/microshift-ci/scripts/pcp-graphs/README.md

markdownlint-cli2 v0.23.1 (markdownlint v0.41.1)
Finding: :plugins/microshift-ci/agents/prow-job-analyzer.md :plugins/microshift-ci/scripts/pcp-graphs/README.md :plugins/microshift-ci/skills/doctor/SKILL.md !node_modules/** !two-node-toolbox/** !plugins/workspace/domains/** !plugins/workspace/skills/**
Linting: 3 files
Summary: 0 issues in 0 files
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:95:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:915:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1111:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/n

... [truncated 1262 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}

plugins/microshift-ci/skills/doctor/SKILL.md

markdownlint-cli2 v0.23.1 (markdownlint v0.41.1)
Finding: :plugins/microshift-ci/agents/prow-job-analyzer.md :plugins/microshift-ci/scripts/pcp-graphs/README.md :plugins/microshift-ci/skills/doctor/SKILL.md !node_modules/** !two-node-toolbox/** !plugins/workspace/domains/** !plugins/workspace/skills/**
Linting: 3 files
Summary: 0 issues in 0 files
AggregateError: Unable to import module 'markdownlint-cli2-formatter-pretty'.
at importModule (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:95:11)
at async Promise.all (index 0)
at async outputResults (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:915:9)
at async main (file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2.mjs:1111:5)
at async file:///usr/local/lib/node_modules/markdownlint-cli2/markdownlint-cli2-bin.mjs:14:22 {
[errors]: [
Error: Cannot find module 'markdownlint-cli2-formatter-pretty'
Require stack:
- /usr/local/lib/n

... [truncated 1262 characters] ...

node:internal/modules/esm/resolve:271:11)
at moduleResolve (node:internal/modules/esm/resolve:861:10)
at defaultResolve (node:internal/modules/esm/resolve:988:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:697:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:714:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:746:52)
at #resolve (node:internal/modules/esm/loader:679:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:599:35)
at node:internal/modules/esm/loader:628:32
at TracingChannel.tracePromise (node:diagnostics_channel:362:14) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///markdownlint-cli2-formatter-pretty'
}
]
}


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
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🤖 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 `@plugins/microshift-ci/agents/prow-job-analyzer.md`:
- Line 100: Update the causal_chain guidance and the high-confidence rule so
binary evidence is handled consistently: either disallow binary links in causal
chains or explicitly define when a binary link with :1 and an empty quote can
qualify for high confidence. Ensure the rules at causal_chain and confidence
guidance agree without weakening quoted artifact-line or metric-data
requirements.

In `@plugins/microshift-ci/scripts/pcp-graphs/README.md`:
- Around line 51-56: Document the complete PCP prerequisite contract by adding
the PCP Python module import check and its supported installation method to the
prerequisite and installation guidance in
plugins/microshift-ci/scripts/pcp-graphs/README.md (lines 51-56), and add the
same prerequisite to plugins/microshift-ci/skills/doctor/SKILL.md (line 220),
matching the checks performed by doctor.sh graphs.
- Around line 98-103: Update the “Adding a New Metric Type” procedure to cover
the standalone dashboard path: require adding extraction logic to
generate-dashboard.sh and registering the new JSON file in
create-pcp-dashboard.py alongside the existing metric files. If the procedure is
intentionally limited to the CI Doctor report, state that scope explicitly
instead; keep the documented steps accurate without duplicating derived
configuration.

In `@plugins/microshift-ci/skills/doctor/SKILL.md`:
- Around line 81-86: Document partial metric extraction handling: in
plugins/microshift-ci/skills/doctor/SKILL.md lines 81-86, describe per-file
extraction failures and require validation of each available output. In
plugins/microshift-ci/agents/prow-job-analyzer.md line 20, state that graphs_dir
may contain a partial metric set; at line 39, validate available JSON and
timestamp spacing, then record absent metrics in analysis_gaps rather than
treating them as negative evidence.
🪄 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: Pro Plus

Run ID: bab9ac5c-e461-473a-9ea7-edbbda9c2d2e

📥 Commits

Reviewing files that changed from the base of the PR and between a0f0c9b and abe021d.

📒 Files selected for processing (5)
  • .claude-plugin/marketplace.json
  • plugins/microshift-ci/.claude-plugin/plugin.json
  • plugins/microshift-ci/agents/prow-job-analyzer.md
  • plugins/microshift-ci/scripts/pcp-graphs/README.md
  • plugins/microshift-ci/skills/doctor/SKILL.md

Comment thread plugins/microshift-ci/agents/prow-job-analyzer.md
Comment thread plugins/microshift-ci/scripts/pcp-graphs/README.md
Comment thread plugins/microshift-ci/scripts/pcp-graphs/README.md
Comment thread plugins/microshift-ci/skills/doctor/SKILL.md
@openshift-ci openshift-ci Bot added the ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review label Aug 3, 2026
@ggiguash

ggiguash commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

/lgtm

@openshift-ci openshift-ci Bot added the lgtm Indicates that a PR is ready to be merged. label Aug 3, 2026
@openshift-merge-bot
openshift-merge-bot Bot merged commit 33a5dd7 into openshift-eng:main Aug 3, 2026
7 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. lgtm Indicates that a PR is ready to be merged. ready-for-human-review Indicates a PR has been reviewed by automated tools and is ready for human review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants