diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 37d707ccf..b80808eab 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -49,7 +49,7 @@ "name": "ci", "source": "./plugins/ci", "description": "A plugin to work with OpenShift CI and analyze Prow job results", - "version": "0.0.49", + "version": "0.0.50", "category": "ci", "keywords": [ "prow", diff --git a/docs/index.html b/docs/index.html index 0d2bce263..cc2b3a6ac 100644 --- a/docs/index.html +++ b/docs/index.html @@ -487,7 +487,7 @@

ai-helpers

{ "name": "ci", "description": "Tools for working with OpenShift CI and analyzing Prow job results", - "version": "0.0.49", + "version": "0.0.50", "has_readme": true, "commands": [ { diff --git a/plugins/ci/.claude-plugin/plugin.json b/plugins/ci/.claude-plugin/plugin.json index f8a9e9524..701102c07 100644 --- a/plugins/ci/.claude-plugin/plugin.json +++ b/plugins/ci/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "ci", "description": "Tools for working with OpenShift CI and analyzing Prow job results", - "version": "0.0.49", + "version": "0.0.50", "author": { "name": "github.com/openshift-eng" } diff --git a/plugins/ci/references/jobs.md b/plugins/ci/references/jobs.md index f1b5073d0..b2f81970d 100644 --- a/plugins/ci/references/jobs.md +++ b/plugins/ci/references/jobs.md @@ -41,7 +41,7 @@ Job names may contain fragments that indicate which RHCOS variant the cluster us - Example: `periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-ovn-rhcos9` 4. **No fragment** — default by OCP major version **at install time** (not the payload/target version): - OCP 4.x → RHCOS 9 - - OCP 5.x → RHCOS 9 (current default, will change to RHCOS 10) + - OCP 5.x → RHCOS 10 For upgrade jobs, use the **install-time** OCP version (see "Upgrade Jobs" above), not the payload/target version. This matters for major upgrades: a major upgrade job in a 5.x payload installs OCP 4.x, so its RHCOS default follows OCP 4.x rules. diff --git a/plugins/ci/skills/payload-analysis/SKILL.md b/plugins/ci/skills/payload-analysis/SKILL.md index 060bdf84f..1f1b6fca8 100644 --- a/plugins/ci/skills/payload-analysis/SKILL.md +++ b/plugins/ci/skills/payload-analysis/SKILL.md @@ -100,7 +100,7 @@ From `summary.json` top-level fields: From `summary.json` → `blocking_jobs.failed_jobs[]`, each entry contains: - `name`, `state`, `prow_url`, `gcs_url`, `is_aggregated`, `retries` -- `rhcos_version`: the RHCOS variant for this job (`rhcos9`, `rhcos10`, `rhcos9_10`, or `rhcos9-default`) +- `rhcos_version`: the RHCOS variant for this job (`rhcos9`, `rhcos10`, `rhcos9_10`, `rhcos9-default`, or `rhcos10-default`) - `streak`: `streak_length`, `originating_payload`, `is_new_failure`, `failure_pattern` - `build_log_errors`, `test_failure_count` - Paths: `job_json`, `junit_results`, `build_log` @@ -157,7 +157,7 @@ You MUST use the following prompt verbatim (substituting the placeholder values) Where `` is the `rhcos_version` field from the snapshot's failed job entry, and `` is one of: - For **`rhcos9`** or **`rhcos9-default`**: "RHCOS 9 is based on RHEL 9 — the standard CoreOS variant for this OCP version." -- For **`rhcos10`**: "RHCOS 10 is based on RHEL 10 with a different kernel, systemd, SELinux policy, and package versions than RHCOS 9. If the failure involves OS-level components (kernel, bootloader, rpm-ostree, MCO, Ignition), consider whether RHEL 10 differences could be the root cause." +- For **`rhcos10`** or **`rhcos10-default`**: "RHCOS 10 is based on RHEL 10 with a different kernel, systemd, SELinux policy, and package versions than RHCOS 9. If the failure involves OS-level components (kernel, bootloader, rpm-ostree, MCO, Ignition), consider whether RHEL 10 differences could be the root cause." - For **`rhcos9_10`** (heterogeneous): "This is a heterogeneous cluster with both RHCOS 9 and RHCOS 10 nodes. Failures may be specific to one node variant — check whether failing nodes are RHCOS 9 or RHCOS 10 when node-level logs are available." **Structured Return Format**: Instruct each subagent to include an `ANALYSIS_RESULT` block at the end of its response: @@ -172,7 +172,7 @@ ANALYSIS_RESULT: - underlying_job_name: - retries_consistent: yes|no|no_retries|only_final_examined - retry_summary: -- rhcos_version: rhcos9|rhcos10|rhcos9_10|rhcos9-default +- rhcos_version: rhcos9|rhcos10|rhcos9_10|rhcos9-default|rhcos10-default ``` **Note for aggregated jobs**: Since only the final attempt is examined (retries re-run aggregation only), set `retries_consistent: only_final_examined` and `retry_summary: "Aggregated job — only final attempt examined (retries re-run aggregation only)"`. @@ -189,6 +189,7 @@ After collecting subagent results, look for patterns across multiple jobs: - It appears in one or more RHCOS 10 jobs but in zero RHCOS 9 jobs → `failure_scope: "rhcos10-only"` - It appears in one or more RHCOS 9 jobs but in zero RHCOS 10 jobs → `failure_scope: "rhcos9-only"` - Jobs with `rhcos9-default` count as RHCOS 9 for this check + - Jobs with `rhcos10-default` count as RHCOS 10 for this check - Jobs with `rhcos9_10` (heterogeneous) count toward both variants for this check - Variant isolation is strong diagnostic context — it narrows the root cause to OS-specific changes (kernel, systemd, SELinux, package differences between RHEL 9 and RHEL 10). @@ -311,7 +312,7 @@ The report must include the following sections: A table showing ALL blocking jobs with columns: - Job Name -- RHCOS (the RHCOS version badge for this job from the snapshot's `rhcos_version` field: use `badge-rhcos9` / `badge-rhcos10` / `badge-rhcos-mixed` CSS classes; `rhcos9-default` renders with `badge-rhcos9`. When a failure is variant-isolated, add a `variant-isolated` class to highlight the badge) +- RHCOS (the RHCOS version badge for this job from the snapshot's `rhcos_version` field: use `badge-rhcos9` / `badge-rhcos10` / `badge-rhcos-mixed` CSS classes; `rhcos9-default` renders with `badge-rhcos9`, `rhcos10-default` renders with `badge-rhcos10`. When a failure is variant-isolated, add a `variant-isolated` class to highlight the badge) - Status (color-coded: green for passed, red for failed) - Streak (consecutive failing payloads; "N/A" for passed) - History (the `failure_pattern` from the snapshot, e.g., "F F F S F F", with color-coded markers) diff --git a/plugins/ci/skills/payload-snapshot/SKILL.md b/plugins/ci/skills/payload-snapshot/SKILL.md index da83c7ae1..bce460ce7 100644 --- a/plugins/ci/skills/payload-snapshot/SKILL.md +++ b/plugins/ci/skills/payload-snapshot/SKILL.md @@ -193,7 +193,8 @@ The `rhcos_version` field is determined from the job name and OCP version: - `rhcos9_10` — heterogeneous cluster (mixed RHCOS 9 and 10 node pools) - `rhcos10` — RHCOS 10 only - `rhcos9` — RHCOS 9 (explicit) -- `rhcos9-default` — no explicit fragment; currently defaults to RHCOS 9 when no fragment is present +- `rhcos9-default` — no explicit fragment; defaults to RHCOS 9 for OCP 4.x installs (including major upgrades to 5.x) +- `rhcos10-default` — no explicit fragment; defaults to RHCOS 10 for OCP 5.x fresh installs ### `build_log.json` (failed blocking jobs only) diff --git a/plugins/ci/skills/payload-snapshot/scripts/payload_snapshot.py b/plugins/ci/skills/payload-snapshot/scripts/payload_snapshot.py index 35291136a..33c316528 100755 --- a/plugins/ci/skills/payload-snapshot/scripts/payload_snapshot.py +++ b/plugins/ci/skills/payload-snapshot/scripts/payload_snapshot.py @@ -1975,7 +1975,7 @@ def _determine_rhcos_version(job_name: str, version: str) -> str: major = int(install_version.split(".")[0]) if major >= 5: - return "rhcos9-default" + return "rhcos10-default" return "rhcos9-default"