Skip to content

Reduce sensitivity of component readiness for GA releases#3441

Open
dgoodwin wants to merge 3 commits intoopenshift:mainfrom
dgoodwin:z-stream-cr-sensitivity
Open

Reduce sensitivity of component readiness for GA releases#3441
dgoodwin wants to merge 3 commits intoopenshift:mainfrom
dgoodwin:z-stream-cr-sensitivity

Conversation

@dgoodwin
Copy link
Copy Markdown
Contributor

@dgoodwin dgoodwin commented Apr 16, 2026

The noise of component readiness is presently so overwhelming for
z-stream releases that no one actually monitors them. On the belief that
churn is lower in these releases, this change reduces the levels at
which we flag a regression to be less sensitive.

Allow up to a 10% pass rate drop instead of 5.
Require at least 4 failures in the week instead of 3.
Stop doing multi-release fallback looking for the highest pass rate.
Require 90% pass rate for new tests in that release instead of 95%.

For 4.21 this cuts the current list of 30 down to 15 and still shows some clear problems. For 4.20 it cuts 48 down to 28.

Summary by CodeRabbit

  • Chores
    • Adjusted component readiness thresholds: increased minimum failure tolerance, increased pity/sensitivity factor, and lowered required pass rate for new tests across multiple views; disabled multi-release analysis for affected GA-release configs.
  • Documentation
    • Updated command/workflow guidance and examples to reflect the new GA-release sensitivity reductions and expanded apply-step behavior.

The noise of component readiness is presently so overwhelming for
z-stream releases that no one actually monitors them. On the belief that
churn is lower in these releases, this change reduces the levels at
which we flag a regression to be less sensitive.

Allow up to a 10% pass rate drop instead of 5.
Require at least 4 failures in the week instead of 3.
Stop doing multi-release fallback looking for the highest pass rate.
Require 90% pass rate for new tests in that release instead of 95%.
@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: automatic mode

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 16, 2026

Walkthrough

Tightened component-readiness thresholds in config/views.yaml (higher minimum_failure and pity_factor, lower pass_rate_required_new_tests, and disabled multi-release analysis) and expanded the GA-release sensitivity-reduction documentation/command text in .claude/commands/sippy-update-ga-release-views.md (selection logic and explicit parameter changes).

Changes

Cohort / File(s) Summary
Component Readiness Configuration
config/views.yaml
Updated component_readiness[].advanced_options: minimum_failure 3→4, pity_factor 5→10, pass_rate_required_new_tests 95→90, and include_multi_release_analysis set to false across multiple entries.
GA Views Update Command Doc
.claude/commands/sippy-update-ga-release-views.md
Expanded command to treat GA-release views as a sensitivity-reduction operation; changed view selection from automate_jira.enabled to sample_release.release == <GA> and documented explicit transformations: disable include_multi_release_analysis and set pity_factor (5→10), minimum_failure (3→4), pass_rate_required_new_tests (95→90); updated examples/verification text.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

🚥 Pre-merge checks | ✅ 14
✅ Passed checks (14 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Reduce sensitivity of component readiness for GA releases' directly and clearly summarizes the main objective of the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Go Error Handling ✅ Passed PR only modifies YAML configuration and Markdown files, not Go source files, making Go error handling checks inapplicable.
Sql Injection Prevention ✅ Passed The PR does not introduce SQL injection vulnerabilities due to robust validation, parameterized queries, read-only permissions, and absence of user input concatenation.
Excessive Css In React Should Use Styles ✅ Passed PR modifies only YAML configuration and markdown documentation files with no React components or inline CSS styling.
Single Responsibility And Clear Naming ✅ Passed The pull request contains no changes to exported or public code entities, packages, structs, or methods; all modifications are limited to YAML configuration parameters and markdown documentation.
Stable And Deterministic Test Names ✅ Passed Project uses Go's standard testing framework, not Ginkgo. Test files use standard Go testing patterns and imports. Ginkgo is only an indirect dependency.
Test Structure And Quality ✅ Passed PR contains only configuration (views.yaml) and documentation (.claude/commands/sippy-update-ga-release-views.md) changes, no Ginkgo test files modified.
Microshift Test Compatibility ✅ Passed PR only modifies YAML configuration and Markdown documentation files with no new Ginkgo e2e tests added, making this check not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This pull request does not add any new Ginkgo e2e tests. Changes are limited to YAML configuration and documentation files only.
Topology-Aware Scheduling Compatibility ✅ Passed This check is not applicable to the provided pull request. The custom check is designed to flag scheduling constraints in deployment manifests, operator code, and controllers that could break on different OpenShift topologies (SNO, Two-Node, HyperShift, etc.). However, this PR only modifies configuration values in config/views.yaml and documentation in .claude/commands/sippy-update-ga-release-views.md for the Sippy tool—a CI job analysis system. No deployment manifests, operator code, controllers, or Kubernetes scheduling constraints are introduced or modified, so no topology-awareness issues can arise from these changes.
Ote Binary Stdout Contract ✅ Passed PR modifies only YAML configuration and Markdown documentation with no Go source code changes, so the OTE Binary Stdout Contract cannot be violated.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed PR contains only YAML configuration and markdown documentation changes, no new Ginkgo e2e test files or test code.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

@openshift-ci openshift-ci bot requested review from neisw and xueqzhan April 16, 2026 16:42
@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Apr 16, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

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 the current code and only fix it if needed.

Inline comments:
In `@config/views.yaml`:
- Around line 3617-3619: The 4.17-main and 4.16-main view blocks currently only
set minimum_failure/confidence/pity_factor and omit
pass_rate_required_new_tests, causing Advanced.PassRateRequiredNewTests to
default to 0; update those view entries (the blocks that contain
minimum_failure, confidence, pity_factor for 4.17-main and 4.16-main) to
explicitly add pass_rate_required_new_tests: 90 so they match the 4.18+ policy
and ensure consistency with Advanced.PassRateRequiredNewTests.
🪄 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: 27e4d123-0a29-4219-b15b-d4ff0baa92d0

📥 Commits

Reviewing files that changed from the base of the PR and between 219f0aa and f89eeb7.

📒 Files selected for processing (1)
  • config/views.yaml

Comment thread config/views.yaml
Comment on lines +3617 to +3619
minimum_failure: 4
confidence: 95
pity_factor: 5
pity_factor: 10
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot Apr 16, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Make the older *-main policy explicit too.

4.17-main and 4.16-main only pick up the looser minimum_failure/pity_factor settings. They still omit pass_rate_required_new_tests, so Advanced.PassRateRequiredNewTests falls back to 0 here rather than the new explicit 90 used in 4.18+. If these views are still active, that makes the GA policy inconsistent and more permissive than intended.

Suggested follow-up
   advanced_options:
     minimum_failure: 4
     confidence: 95
     pity_factor: 10
     ignore_missing: false
     ignore_disruption: true
     flake_as_failure: false
+    pass_rate_required_new_tests: 90
+    include_multi_release_analysis: false

Also applies to: 3673-3675

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@config/views.yaml` around lines 3617 - 3619, The 4.17-main and 4.16-main view
blocks currently only set minimum_failure/confidence/pity_factor and omit
pass_rate_required_new_tests, causing Advanced.PassRateRequiredNewTests to
default to 0; update those view entries (the blocks that contain
minimum_failure, confidence, pity_factor for 4.17-main and 4.16-main) to
explicitly add pass_rate_required_new_tests: 90 so they match the 4.18+ policy
and ensure consistency with Advanced.PassRateRequiredNewTests.

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.

Those releases did not have this feature enabled at all.

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.

@dgoodwin, thanks for the clarification — that makes sense. The omission of pass_rate_required_new_tests in 4.17-main and 4.16-main is intentional since those older releases never had that feature enabled, rather than being an inconsistency to fix.


📝 Learnings were identified and not saved (knowledge base disabled). Enable

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

Comment thread config/views.yaml
- crun
advanced_options:
minimum_failure: 3
minimum_failure: 4
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.

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.

Done.

@sosiouxme
Copy link
Copy Markdown
Member

/test security

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@dgoodwin
Copy link
Copy Markdown
Contributor Author

/test e2e

1 similar comment
@dgoodwin
Copy link
Copy Markdown
Contributor Author

/test e2e


**D. Increase pity_factor** (for views of the GA release itself):
- Find views where `sample_release.release` equals the GA release
- If `pity_factor` is set to `5` (i.e. 5%), change it to `10` (i.e. 10%)
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.

I wonder if this is too rigid of direction. Maybe it is set to 6 or something in the future, and now this command is ignored and it is not changed to 10 as desired.

Same with other directions here

@sosiouxme
Copy link
Copy Markdown
Member

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Apr 20, 2026
@dgoodwin
Copy link
Copy Markdown
Contributor Author

/hold

@openshift-ci openshift-ci bot added the do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. label Apr 20, 2026
@openshift-ci openshift-ci bot removed the lgtm Indicates that a PR is ready to be merged. label Apr 20, 2026
@smg247
Copy link
Copy Markdown
Member

smg247 commented Apr 20, 2026

/lgtm

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Apr 20, 2026
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 20, 2026

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dgoodwin, smg247, sosiouxme

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:
  • OWNERS [dgoodwin,smg247,sosiouxme]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (2)
.claude/commands/sippy-update-ga-release-views.md (2)

187-187: ⚠️ Potential issue | 🟡 Minor

Fix inconsistent field name.

Same issue as line 42: the documentation refers to multi_release_analysis, but the actual field name is include_multi_release_analysis.

📝 Proposed fix
-  - Views where `sample_release.release` equals the GA release (sensitivity reductions: automate_jira, multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests)
+  - Views where `sample_release.release` equals the GA release (sensitivity reductions: automate_jira, include_multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/sippy-update-ga-release-views.md at line 187, The doc uses
the wrong field name `multi_release_analysis`; update instances (including the
line that reads "Views where `sample_release.release` equals the GA release
(sensitivity reductions: automate_jira, multi_release_analysis, pity_factor,
minimum_failure, pass_rate_required_new_tests)") to the correct field
`include_multi_release_analysis` so the documentation matches the actual schema;
search for `multi_release_analysis` and replace with
`include_multi_release_analysis` (also check the earlier occurrence noted around
line 42) to keep names consistent.

151-165: ⚠️ Potential issue | 🟠 Major

Avoid hardcoding old values in the selection criteria.

The selection logic for Types D, E, and F hardcodes specific old values (pity_factor: 5, minimum_failure: 3, pass_rate_required_new_tests: 95). This creates several problems:

  1. Non-idempotent: Running the command twice will fail on the second run because the first run already changed these values, so no views will match the old value criteria.
  2. Brittle: If the default values change in the future (e.g., the default pity_factor becomes 6 instead of 5), the command will silently fail to update views.
  3. Inconsistent with Types B and C: Types B and C check for boolean states (enabled: true), while Types D, E, and F check for specific numeric values.

Consider revising the logic to either:

  • Set the values unconditionally for all views where sample_release.release equals the GA release, OR
  • Check if the current value differs from the target value and update only if needed

This aligns with smg247's earlier concern about rigid hardcoded values in the command logic.

📋 Proposed revision to the selection logic
 **Type D: Increase pity_factor (for views of the GA release itself)**
 
-1. **Find Views**: Identify all views where `sample_release.release` equals the GA release AND `pity_factor: 5`
+1. **Find Views**: Identify all views where `sample_release.release` equals the GA release
 2. **Update**:
-   - `pity_factor: 5` → `pity_factor: 10`
+   - Set `pity_factor: 10` (regardless of current value)
 
 **Type E: Increase minimum_failure (for views of the GA release itself)**
 
-1. **Find Views**: Identify all views where `sample_release.release` equals the GA release AND `minimum_failure: 3`
+1. **Find Views**: Identify all views where `sample_release.release` equals the GA release
 2. **Update**:
-   - `minimum_failure: 3` → `minimum_failure: 4`
+   - Set `minimum_failure: 4` (regardless of current value)
 
 **Type F: Decrease pass_rate_required_new_tests (for views of the GA release itself)**
 
-1. **Find Views**: Identify all views where `sample_release.release` equals the GA release AND `pass_rate_required_new_tests: 95`
+1. **Find Views**: Identify all views where `sample_release.release` equals the GA release
 2. **Update**:
-   - `pass_rate_required_new_tests: 95` → `pass_rate_required_new_tests: 90`
+   - Set `pass_rate_required_new_tests: 90` (regardless of current value)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/sippy-update-ga-release-views.md around lines 151 - 165,
Update the selection logic for Types D, E, and F to stop matching on hardcoded
old numeric values; instead locate views by sample_release.release == GA release
and then either (a) set pity_factor, minimum_failure, and
pass_rate_required_new_tests unconditionally to the new target values, or (b)
read the current value and update only when it differs from the target;
specifically modify the code that implements "Type D/Type E/Type F" selection so
it no longer filters by pity_factor:5, minimum_failure:3, or
pass_rate_required_new_tests:95 but operates on all views for the GA release (or
compares current vs target before writing) to make the command idempotent and
robust.
🧹 Nitpick comments (1)
.claude/commands/sippy-update-ga-release-views.md (1)

169-182: Expand Implementation Approach to cover all update types.

The Implementation Approach section only describes how to update base_release dates (Type A updates), but does not provide guidance for implementing the sensitivity parameter updates (Types B-F: automate_jira, include_multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests).

Consider adding implementation guidance for these additional update types to make this section complete and more useful for implementers.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/sippy-update-ga-release-views.md around lines 169 - 182,
The Implementation Approach only covers replacing base_release
relative_start/relative_end values but omits guidance for changing sensitivity
parameters; update the section to include step-by-step Edit-tool instructions
for each additional update type: open config/views.yaml, locate views where
base_release.release equals the GA release and then (Type B) set automate_jira:
true/false as required, (Type C) set include_multi_release_analysis: true/false,
(Type D) update pity_factor to the specified numeric value, (Type E) update
minimum_failure to the specified integer, and (Type F) update
pass_rate_required_new_tests to the specified percentage/float; emphasize using
the Edit tool for each individual field change to preserve exact YAML formatting
and include examples of exact key names (automate_jira,
include_multi_release_analysis, pity_factor, minimum_failure,
pass_rate_required_new_tests) and the same caution about not using yaml.dump().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/commands/sippy-update-ga-release-views.md:
- Line 42: The documentation line that lists views uses the wrong field name
"multi_release_analysis"; update it to the actual field name
"include_multi_release_analysis" to match the config (as used in
config/views.yaml and elsewhere); locate the reference in the sentence that
lists sensitivity reductions (currently mentioning automate_jira,
multi_release_analysis, pity_factor, minimum_failure,
pass_rate_required_new_tests) and replace "multi_release_analysis" with
"include_multi_release_analysis" so the docs and config stay consistent.

---

Duplicate comments:
In @.claude/commands/sippy-update-ga-release-views.md:
- Line 187: The doc uses the wrong field name `multi_release_analysis`; update
instances (including the line that reads "Views where `sample_release.release`
equals the GA release (sensitivity reductions: automate_jira,
multi_release_analysis, pity_factor, minimum_failure,
pass_rate_required_new_tests)") to the correct field
`include_multi_release_analysis` so the documentation matches the actual schema;
search for `multi_release_analysis` and replace with
`include_multi_release_analysis` (also check the earlier occurrence noted around
line 42) to keep names consistent.
- Around line 151-165: Update the selection logic for Types D, E, and F to stop
matching on hardcoded old numeric values; instead locate views by
sample_release.release == GA release and then either (a) set pity_factor,
minimum_failure, and pass_rate_required_new_tests unconditionally to the new
target values, or (b) read the current value and update only when it differs
from the target; specifically modify the code that implements "Type D/Type
E/Type F" selection so it no longer filters by pity_factor:5, minimum_failure:3,
or pass_rate_required_new_tests:95 but operates on all views for the GA release
(or compares current vs target before writing) to make the command idempotent
and robust.

---

Nitpick comments:
In @.claude/commands/sippy-update-ga-release-views.md:
- Around line 169-182: The Implementation Approach only covers replacing
base_release relative_start/relative_end values but omits guidance for changing
sensitivity parameters; update the section to include step-by-step Edit-tool
instructions for each additional update type: open config/views.yaml, locate
views where base_release.release equals the GA release and then (Type B) set
automate_jira: true/false as required, (Type C) set
include_multi_release_analysis: true/false, (Type D) update pity_factor to the
specified numeric value, (Type E) update minimum_failure to the specified
integer, and (Type F) update pass_rate_required_new_tests to the specified
percentage/float; emphasize using the Edit tool for each individual field change
to preserve exact YAML formatting and include examples of exact key names
(automate_jira, include_multi_release_analysis, pity_factor, minimum_failure,
pass_rate_required_new_tests) and the same caution about not using yaml.dump().
🪄 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: cf995b96-84ba-415e-8b64-b2eda2e9ad3d

📥 Commits

Reviewing files that changed from the base of the PR and between 9a122f1 and 0c5c2e2.

📒 Files selected for processing (1)
  • .claude/commands/sippy-update-ga-release-views.md

- Read `config/views.yaml`
- Find all views where `base_release.release` equals the GA release (for date updates)
- Find all views where `sample_release.release` equals the GA release AND have `automate_jira.enabled: true` (for JIRA automation disabling)
- Find all views where `sample_release.release` equals the GA release (for sensitivity reductions: automate_jira, multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests)
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.

⚠️ Potential issue | 🟡 Minor

Fix inconsistent field name.

The documentation refers to multi_release_analysis, but the actual field name is include_multi_release_analysis (as shown in lines 64, 147, and confirmed by the context snippets from config/views.yaml). Use the complete field name for consistency.

📝 Proposed fix
-   - Find all views where `sample_release.release` equals the GA release (for sensitivity reductions: automate_jira, multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests)
+   - Find all views where `sample_release.release` equals the GA release (for sensitivity reductions: automate_jira, include_multi_release_analysis, pity_factor, minimum_failure, pass_rate_required_new_tests)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/commands/sippy-update-ga-release-views.md at line 42, The
documentation line that lists views uses the wrong field name
"multi_release_analysis"; update it to the actual field name
"include_multi_release_analysis" to match the config (as used in
config/views.yaml and elsewhere); locate the reference in the sentence that
lists sensitivity reductions (currently mentioning automate_jira,
multi_release_analysis, pity_factor, minimum_failure,
pass_rate_required_new_tests) and replace "multi_release_analysis" with
"include_multi_release_analysis" so the docs and config stay consistent.

@openshift-merge-bot
Copy link
Copy Markdown
Contributor

Scheduling required tests:
/test e2e

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 20, 2026

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

@dgoodwin
Copy link
Copy Markdown
Contributor Author

/hold cancel

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. do-not-merge/hold Indicates that a PR should not merge because someone has issued a /hold command. lgtm Indicates that a PR is ready to be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants