Skip to content

feat: improve CodeRabbit review guardrails and verification#5122

Merged
rnetser merged 7 commits into
RedHatQE:mainfrom
rnetser:feat/coderabbit-review-improvements
Jun 8, 2026
Merged

feat: improve CodeRabbit review guardrails and verification#5122
rnetser merged 7 commits into
RedHatQE:mainfrom
rnetser:feat/coderabbit-review-improvements

Conversation

@rnetser

@rnetser rnetser commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator
What this PR does / why we need it:

Improves CodeRabbit review workflows to ensure higher quality reviews and PR verification:

  1. Skip STD/STP checks for unit testsutilities/unittests/ files no longer trigger false STP link warnings
  2. Test plan uses checkboxes — every listed test is a GitHub checkbox the PR author checks off after running
  3. Real cluster test commands — when changes affect session/runtime code, the test plan includes concrete pytest commands (error path + happy path), not just unit test paths
  4. Auto-unresolve prematurely resolved threads — detects when CodeRabbit threads are resolved without any reply or with a trivial (<15 char) response, unresolves them with a warning
  5. Approval policy — CodeRabbit accepts reasonable test plan responses from PR authors without blocking
Which issue(s) this PR fixes:
Special notes for reviewer:

The unresolve workflow triggers on synchronize (new push) and checks all resolved CodeRabbit threads. Two cases caught:

  • Thread resolved with no reply at all (just clicked "Resolve conversation")
  • Thread resolved with trivial reply (<15 chars)
jira-ticket:

Assisted-by: Claude noreply@anthropic.com

Summary by CodeRabbit

  • Chores
    • Relaxed review/enforcement for internal unit-test areas to reduce docstring/link/coverage strictness.
    • Clarified PR approval policy: prior review comments must be addressed via changes or substantive author explanations; “resolved” alone is insufficient.
    • Tightened test-execution-plan guidance: require concrete test commands when runtime/session code is affected and a single non-blocking inline test-plan comment.
    • Added automation to reopen review threads lacking substantive author replies and to post a follow-up warning.
  • Tests
    • STP/RFE/Jira link enforcement limited to newly added test files/functions only.

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Ignoring CodeRabbit configuration file changes. For security, only the configuration from the base branch is applied for open source repositories.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e7380817-66f5-4400-86e0-680522a481f2

📥 Commits

Reviewing files that changed from the base of the PR and between 3b4c48e and 1ba9d1b.

📒 Files selected for processing (3)
  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📜 Recent review details
🧰 Additional context used
🧠 Learnings (49)
📓 Common learnings
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 2469
File: utilities/sanity.py:139-142
Timestamp: 2025-11-08T07:36:57.616Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep refactoring PRs (like PR `#2469`) strictly focused on moving/organizing code into more granular modules without adding new functionality, error handling, or behavioral changes. Such improvements should be handled in separate PRs.
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_sanity.py:22-22
Timestamp: 2026-05-18T06:31:35.221Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PLC0415 (import-outside-top-level) Ruff rule is enabled, pre-existing violations in utilities/unittests/ test files are intentionally suppressed with per-line `# noqa: PLC0415` comments as a temporary measure. These suppressions are documented in the PR description and are candidates for dedicated follow-up cleanup PRs. Do not flag these suppressions as violations; they are an accepted part of the incremental rule-enablement strategy. Additionally, imports inside unit test methods in utilities/unittests/ may be intentionally placed there so they execute after patch decorators activate, which matters when modules have import-time side effects.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/architecture.py:25-25
Timestamp: 2026-05-18T06:30:28.071Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enforces a new Ruff rule (e.g., PLC0415) and explicitly documents in the PR description that pre-existing violations are suppressed with `# noqa: <rule>` as a temporary measure for follow-up cleanup PRs, do not raise review findings against those suppressions. The suppression policy is intentional and the violations are tracked for future resolution. Only flag new suppressions introduced without such documented justification.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4701
File: tests/virt/node/general/test_windows_vtpm_bitlocker.py:50-52
Timestamp: 2026-05-03T15:38:12.880Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, do not flag pre-existing code patterns (e.g., nested `if` statements, unnecessary list comprehensions) that are not introduced by the current PR when the PR is a lint cleanup/tooling bump. Such improvements should be deferred to dedicated follow-up PRs. This applies to all Python files under tests/ and utilities/.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-03T15:38:39.607Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, lint cleanup PRs (e.g. pre-commit hook bumps with ruff/mypy) should NOT be asked to fix pre-existing code patterns that are outside the diff. Issues like bare `except Exception`, missing `raise ... from`, timezone-naive datetime comparisons, implicit `return None`, TRY003 long error messages in exceptions, and boolean accumulator logic in utility functions are pre-existing and should only be addressed in dedicated follow-up PRs, not in automated lint-cleanup PRs.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1244
File: utilities/os_utils.py:248-250
Timestamp: 2025-07-08T05:51:06.314Z
Learning: User rnetser prefers fail-fast code design where functions should raise exceptions immediately when encountering unexpected or malformed input, rather than implementing defensive error handling with fallbacks. They value making problems visible immediately during development over graceful degradation.
📚 Learning: 2026-01-05T10:33:55.037Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-01T06:43:11.108Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4908
File: utilities/unittests/test_pytest_utils.py:374-374
Timestamp: 2026-06-01T06:43:11.108Z
Learning: In RedHatQE/openshift-virtualization-tests, unit test files located under `utilities/unittests/` (and its subdirectories) do NOT require STP/RFE/Jira traceability links in test function docstrings. The STP/RFE/Jira traceability requirement applies only to integration/functional tests under the `tests/` directory. Do not flag missing STP/RFE/Jira links in any `test_*.py` file under `utilities/unittests/`.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-29T11:02:22.804Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-04-30T13:42:43.892Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T06:31:35.221Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_sanity.py:22-22
Timestamp: 2026-05-18T06:31:35.221Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PLC0415 (import-outside-top-level) Ruff rule is enabled, pre-existing violations in utilities/unittests/ test files are intentionally suppressed with per-line `# noqa: PLC0415` comments as a temporary measure. These suppressions are documented in the PR description and are candidates for dedicated follow-up cleanup PRs. Do not flag these suppressions as violations; they are an accepted part of the incremental rule-enablement strategy. Additionally, imports inside unit test methods in utilities/unittests/ may be intentionally placed there so they execute after patch decorators activate, which matters when modules have import-time side effects.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-17T14:29:44.166Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T14:29:44.166Z
Learning: For RedHatQE/openshift-virtualization-tests’ `.coderabbit.yaml` custom check (“STP link required”), ensure the STP/RFE/Jira link appears in at least one of these docstring locations: the module-level docstring, an enclosing class docstring, or the individual test function docstring. This satisfies the requirement for all tests covered by that scope. The check must be satisfied for (A) newly added test files named `test_*.py` and (B) newly added `def test_*` functions inside existing Python files. Do not rely on `pytest.mark.polarion` (decorators) as a substitute for the STP docstring link.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-31T17:55:25.719Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-31T17:55:25.719Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the STP/RFE/Jira link requirement applies ONLY to test files under the `tests/` directory (feature/STD tests). It does NOT apply to unit tests under `utilities/unittests/`, which cover internal utility functions and bug fixes.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:30:28.071Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/architecture.py:25-25
Timestamp: 2026-05-18T06:30:28.071Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enforces a new Ruff rule (e.g., PLC0415) and explicitly documents in the PR description that pre-existing violations are suppressed with `# noqa: <rule>` as a temporary measure for follow-up cleanup PRs, do not raise review findings against those suppressions. The suppression policy is intentional and the violations are tracked for future resolution. Only flag new suppressions introduced without such documented justification.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-04T13:45:41.527Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4725
File: tests/virt/cluster/common_templates/centos/test_centos_os_support.py:78-83
Timestamp: 2026-05-04T13:45:41.527Z
Learning: In RedHatQE/openshift-virtualization-tests, when reviewing lint-cleanup or formatting-only PRs (e.g., removing `# noqa` comments, UTF-8 headers), do not flag pre-existing code patterns such as `.is_connective(tcp_timeout=120)` that were present before the PR. Only raise issues when the PR itself introduces or modifies the problematic construct. This applies to all Python files in the repository.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-14T14:01:37.353Z
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-06-10T09:41:58.035Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1168
File: tests/storage/storage_migration/utils.py:92-99
Timestamp: 2025-06-10T09:41:58.035Z
Learning: When CodeRabbit flags technical issues in code reviews, do not resolve the comments without first addressing them and getting a response from the user. Proper procedure is to discuss the technical issues and proposed solutions before marking comments as resolved.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-20T11:18:46.206Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-10T08:15:30.936Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-10T08:15:30.936Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the AI Contribution Policy (docs/AI_CONTRIBUTION_POLICY.md) requires that AI-assisted commits use the `Assisted-by:` trailer (e.g., `Assisted-by: Claude Sonnet 4.6 <noreplyanthropic.com>`), NOT `Co-Authored-By:`. Using `Co-Authored-By` for AI tools is a policy violation because it implies human co-authorship. All commits must also have a `Signed-off-by:` trailer for DCO compliance. During PR reviews, flag any commit that uses `Co-Authored-By` with an AI tool name instead of `Assisted-by`.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-19T10:17:44.423Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:44.423Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation coding guideline (using the `**` path glob) can fire as a false positive when the PR description already contains all required sections with meaningful content. Do not re-post the PR template violation comment if the PR objectives or description summary shows the required sections (`##### What this PR does / why we need it:`, `##### Which issue(s) this PR fixes:`, `##### Special notes for reviewer:`, `##### jira-ticket:`) are already present and populated. The `**` glob triggers the check per-file in every diff context, so verify the actual PR description content before flagging it as a violation.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: PR discipline: Keep PRs focused on ONE topic. Out-of-scope improvements go in separate PRs. PR title must reflect the actual change, not a side effect. PR description must include motivation (WHY), not just what changed. Mark PR as draft when there are unresolved blockers, failing CI, or open design questions. Never merge a PR with known unresolved issues. DCO (Signed-off-by) REQUIRED on all commits. PR template sections REQUIRED: preserve all sections from `.github/pull_request_template.md`, including 'What this PR does / why we need it:' with meaningful content (not blank/placeholder), 'Which issue(s) this PR fixes:', 'Special notes for reviewer:', and 'jira-ticket:'.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T06:31:18.023Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_pytest_utils.py:270-270
Timestamp: 2026-05-18T06:31:18.023Z
Learning: In RedHatQE/openshift-virtualization-tests, when a Ruff rule enforcement PR (e.g., enabling PLC0415 import-outside-top-level) is introduced, pre-existing violations are intentionally annotated with per-line `# noqa: PLC0415` comments as a temporary suppression to keep CI green. These suppressions are NOT code-quality issues to flag during review — they are an agreed-upon, documented mechanism (stated in the PR's "Special notes for reviewer" section) for incremental cleanup. Do not suggest removing or consolidating these suppressions in the same PR; they are addressed in dedicated follow-up PRs.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T06:31:20.848Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_hco.py:501-501
Timestamp: 2026-05-18T06:31:20.848Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 import-outside-top-level) and annotates pre-existing violations with `# noqa: <RULE>` as a temporary measure to keep CI green (with follow-up PRs planned for cleanup), do NOT flag those suppressions as issues. The suppressions are intentional, documented in the PR description under "Special notes for reviewer", and should be treated as deferred technical debt — not immediate violations. Only flag `# noqa: PLC0415` suppressions that are newly introduced *without* such documented intent.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-12-16T14:00:59.076Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-12-22T15:56:00.157Z
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : STD (Software Test Description) docstrings must follow the format in `docs/SOFTWARE_TEST_DESCRIPTION.md`. Required sections: `Preconditions:`, `Steps:`, `Expected:`. Never use alternative section names. Each test verifies ONE thing with ONE `Expected:` assertion. Do NOT include implementation details, fixture names, code references, or variable names. Include STP link at the module, class, or test level. Markers can be at any level. Use `[Markers: ...]` syntax for parametrized markers. Name resources by function (e.g., 'client VM') not labels (e.g., 'VM-A'). Class/module docstring holds shared `Preconditions:`, individual tests add only their own. Include `[NEGATIVE]` indicator for failure scenario tests.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-04T10:17:16.006Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-06-04T10:17:16.006Z
Learning: Applies to test_*.py : Newly added test files (test_*.py) must contain at least one STP link in the module docstring. The link must appear as 'STP:' followed by a URL, 'RFE:' followed by an issue tracker URL, or 'Jira:' followed by an issue tracker URL. Alternatively, the link can be in the class or test function docstring.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-19T17:16:58.838Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/test_migration_stuntime.py:33-38
Timestamp: 2026-05-19T17:16:58.838Z
Learning: In RedHatQE/openshift-virtualization-tests, standalone triple-quoted string blocks (e.g., `"""Preconditions:..."""`) placed at module level after `pytestmark` in test files under `tests/` are the established STD (Standard Test Definition) documentation convention for shared preconditions. Do not flag these as dead code or suggest moving them into module/class docstrings. This pattern is intentional and used consistently across STD test modules.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-14T16:15:36.741Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4328
File: tests/network/flat_overlay/test_multi_network_policy.py:32-32
Timestamp: 2026-04-14T16:15:36.741Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when reviewing any PR with "Quarantine" in the title or a `quarantine` label, always verify compliance with docs/QUARANTINE_GUIDELINES.md:
- Category 1 (Product Bug): must use `pytest.mark.jira("CNV-XXXXX", run=False)` — the `pytest_jira` plugin conditionally skips the test when the Jira issue is open. Do NOT suggest replacing this with `xfail`.
- Category 2 (Automation Issue): must use `pytest.mark.xfail(run=False, reason=...)` — pytest itself handles the skip.
Flag any quarantine PR that uses the wrong category marker, is missing a Jira ticket reference, or uses `run=False` in the wrong context. Raising these compliance questions is always appropriate for quarantine PRs, even if the final resolution confirms the marker is correct.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-04T13:45:35.675Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-04T13:45:35.675Z
Learning: In the `openshift-virtualization-tests` repository, the PR description template is fulfilled on GitHub's rendered view. Do not flag missing PR template sections based on the raw diff alone.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:31:00.848Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_bitwarden.py:207-207
Timestamp: 2026-05-18T06:31:00.848Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 — import-outside-top-level), it is explicitly acceptable to annotate pre-existing violations with per-line `# noqa: PLC0415` as a temporary suppression to keep CI green. These suppressions are intentional and documented in the PR description as candidates for follow-up cleanup PRs. Do NOT flag such `# noqa: PLC0415` comments as policy violations in the context of rule-enablement PRs. Blanket `# noqa` and `per-file-ignores` remain disallowed; only targeted single-rule suppressions are permitted as a transitional measure.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-04T10:17:16.006Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-06-04T10:17:16.006Z
Learning: Applies to **/test_*.py : Newly added test functions (def test_*) in existing test files must have at least one STP link in the function docstring, or inherit coverage from an existing module-level or class-level STP link in the same file. The link must appear as 'STP:' followed by a URL, 'RFE:' followed by an issue tracker URL, or 'Jira:' followed by an issue tracker URL. The pytest.mark.polarion decorator alone does NOT satisfy this requirement.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : Every new feature test file must include an STP link in the module, class, or test docstring. If there is no STP, the module, class, or test docstring must include a link to the RFE or Jira epic (not support cases) for coverage tracking.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-04T10:17:16.006Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-06-04T10:17:16.006Z
Learning: Only check code that is newly added (not modified) in the PR's diff when validating STP link requirements for test files and test functions.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-03-31T08:35:26.070Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 4318
File: tests/network/bandwidth/test_bandwidth.py:1-3
Timestamp: 2026-03-31T08:35:26.070Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the requirement to include an STP link in the module docstring applies only to STD tests for new features. Tests that are support exceptions (linked to SUPPORTEX-* tickets, e.g., SUPPORTEX-29574) do NOT have an associated STP and therefore do NOT require an STP link in the module docstring. Do not flag missing STP links for support exception test files.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-17T13:28:29.374Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T13:28:29.374Z
Learning: In RedHatQE/openshift-virtualization-tests, STP links in test file docstrings use two label variants: "STP:" (followed by URL) or "STP Reference:" (followed by URL). The URL always contains "openshift-virtualization-tests-design-docs/blob/main/stps/". The pytest.mark.polarion("CNV-XXXX") decorator is a separate per-test Polarion identifier and does NOT substitute for the STP docstring link. New test files must have the STP link at module, class, or test docstring level, with RFE: or Jira: links accepted as alternatives when no STP exists.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-24T18:35:11.039Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 4542
File: tests/network/libs/bgp.py:148-177
Timestamp: 2026-04-24T18:35:11.039Z
Learning: In tests/network/libs/bgp.py, do not flag or recommend changing the `create_evpn_frr_configuration` default `label=None`. This is intentional: EVPN RouteAdvertisements use a narrow `frr_configuration_selector` that targets only EVPN-labeled FRRConfigurations, while BGP RouteAdvertisements use an empty (match-all) selector. Because BGP and EVPN FRRConfigurations apply to different routers with disjoint prefix sets, there is no conflict, so `label` does not need to be required.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-27T15:30:20.252Z
Learnt from: SamAlber
Repo: RedHatQE/openshift-virtualization-tests PR: 3748
File: tests/storage/cdi_import/test_import_http.py:506-508
Timestamp: 2026-04-27T15:30:20.252Z
Learning: In tests/storage/cdi_import/test_import_http.py, when using pytest parametrize dicts for image paths, prefer referencing explicit image constants (e.g., Images.Windows.WIN2022_IMG) directly rather than deriving the value via lookups like LATEST_WINDOWS_OS_DICT.get("image_path"). This keeps the test inputs immediately visible for readability and failure triage. Do not request changes that replace these explicit constant references with dynamic lookups from LATEST_WINDOWS_OS_DICT.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-07T11:11:59.120Z
Learnt from: OhadRevah
Repo: RedHatQE/openshift-virtualization-tests PR: 4162
File: tests/install_upgrade_operators/crypto_policy/constants.py:4-4
Timestamp: 2026-05-07T11:11:59.120Z
Learning: In tests/install_upgrade_operators/crypto_policy/constants.py, treat `MANAGED_CRS_LIST` and `MANAGED_CRS_LIST_WITH_AAQ` as intentionally different scopes. `MANAGED_CRS_LIST` is meant for existing crypto-policy tests and intentionally excludes `AAQ` (it includes only KubeVirt, CDI, NetworkAddonsConfig, SSP). The separate `MANAGED_CRS_LIST_WITH_AAQ` explicitly extends it with `AAQ` (e.g., `[*MANAGED_CRS_LIST, AAQ]`) for AAQ-inclusive tests such as fixtures in conftest.py (e.g., `modern_tls_profile_applied`). Do not raise a review issue claiming `AAQ` is missing from `MANAGED_CRS_LIST`; verify tests use the correct list for their intended scope instead.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T11:17:18.196Z
Learnt from: RoniKishner
Repo: RedHatQE/openshift-virtualization-tests PR: 4898
File: tests/infrastructure/instance_types/conftest.py:158-162
Timestamp: 2026-05-18T11:17:18.196Z
Learning: In tests/infrastructure/instance_types/conftest.py, do not treat the windows_test_images_namespace_role_binding fixture as an overly permissive RoleBinding. It is intentionally designed to grant the view verb to system:authenticated on the windows-test-images namespace so shared Windows test images are universally readable across all namespaces/tests in the cluster (matching the OpenShift golden-image namespace pattern).

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-20T09:43:31.397Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 4932
File: tests/network/l2_bridge/nad_ref_change/lib_helpers.py:78-91
Timestamp: 2026-05-20T09:43:31.397Z
Learning: In tests/network/l2_bridge/nad_ref_change/lib_helpers.py, inside the bridge_vm() helper, do not raise guidance to use zip(..., strict=True) or to add explicit length-mismatch validation around zip(actual_iface_names, nad_names). The nad_names, ip_addresses, and iface_names inputs are intentionally controlled by each callsite and guaranteed to be aligned by design for this internal test fixture builder.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2025-12-16T14:06:22.391Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:06:22.391Z
Learning: In the openshift-virtualization-tests repository, when posting test execution plan inline review comments using GitHub API, the full test execution plan content must go in the `comments[].body` field (which appears on Files Changed tab), NOT in the top-level `body` field (which appears in PR discussion thread). The top-level `body` field should be omitted or left empty to avoid posting redundant comments in the PR discussion thread.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-02T21:17:09.602Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 5039
File: tests/network/l2_bridge/nad_ref_change/lib_helpers.py:1-1
Timestamp: 2026-06-02T21:17:09.602Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR only relocates functions to shared libraries and updates import paths in test files (no logic change), do NOT flag the callers as requiring full test re-execution. At most, run `pytest --collect-only` to verify the new import paths resolve correctly. Only require full re-execution of caller tests when the moved function's implementation changes behavior.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-03T15:08:46.871Z
Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:39-39
Timestamp: 2026-06-03T15:08:46.871Z
Learning: In RedHatQE/openshift-virtualization-tests, GitHub Actions workflow reviewers should follow the repo convention of allowing `uses:` references that are pinned to mutable version tags (e.g., `owner/actionv4`, `owner/actionv5`) and should NOT flag these as security issues. Full commit-SHA pinning for third-party actions is explicitly out of scope for this repository, so do not treat non-SHA `uses:` references as violations.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-06-03T09:46:34.574Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 5111
File: tests/network/localnet/upgrade/test_default_bridge_connectivity.py:1-11
Timestamp: 2026-06-03T09:46:34.574Z
Learning: In RedHatQE/openshift-virtualization-tests, new test files (test_*.py) written as bug automation — i.e., tests that verify a fix for an OCP bug (OCPBUGS-*) or a CNV Jira bug (CNV-*) — do NOT require the STD-first workflow (separate STD placeholder PR before implementation) and do NOT require an STP link. The bug tracker URL (e.g., https://redhat.atlassian.net/browse/OCPBUGS-66994) in the module docstring is sufficient traceability. The STD may be included in the same implementation PR. Do not flag missing STP links or missing dedicated STD PRs for OCPBUGS/CNV bug-automation tests.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-17T14:29:54.117Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T14:29:54.117Z
Learning: In RedHatQE/openshift-virtualization-tests .coderabbit.yaml "STP link required" custom check: the STP/RFE/Jira link can appear at module-level docstring, enclosing class docstring, OR individual test function docstring — any level satisfies the requirement. The check must cover both (A) newly added test files (test_*.py) AND (B) newly added test functions (def test_*) inside existing files. A module-level or class-level STP link covers all tests in that scope. pytest.mark.polarion decorators do NOT substitute for the STP docstring link.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-04T10:17:10.615Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: docs/AI_CONTRIBUTION_POLICY.md:0-0
Timestamp: 2026-06-04T10:17:10.615Z
Learning: Applies to docs/**/test_*.py : Do not submit AI-generated tests without verifying marker completeness per project test fixture guidelines

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-19T10:17:37.060Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:37.060Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PR template validation rule is triggered, avoid posting the PR template violation comment if the PR description already contains the required sections with meaningful content:
- `##### What this PR does / why we need it:`
- `##### Which issue(s) this PR fixes:`
- `##### Special notes for reviewer:`
- `##### jira-ticket:`
Because the current implementation can use a broad `**` path glob and re-run the check per diff context/file, reviewers/automation should verify the actual PR description content before flagging it as a violation or duplicating the comment.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-20T11:18:31.677Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:31.677Z
Learning: In RedHatQE/openshift-virtualization-tests, make the PR template validation (HIGH-severity) heuristic more conservative: if the author explicitly rebuts the “missing template section” finding and confirms the required sections are present with meaningful content, treat the original finding as a false positive and do not re-raise it. Only raise the HIGH-severity flag when a required PR section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content can be verified as empty/placeholder-only.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-11-25T01:56:54.902Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 2838
File: .github/workflows/net-utils-builder-staging.yml:37-37
Timestamp: 2025-11-25T01:56:54.902Z
Learning: In the openshift-virtualization-tests repository, when renaming container images that are built and used by GitHub Actions workflows, the changes must be done sequentially: first merge the workflow files (.github/workflows/) that update the image name in the CI/CD pipelines, then update the code references (like constants.py and manifest files) in a follow-up PR. This prevents the old workflow from running with mismatched image names during the transition.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-27T09:38:55.486Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-27T09:38:55.486Z
Learning: For PR reviews in RedHatQE/openshift-virtualization-tests, pre-merge checks must be re-evaluated and reported on every new commit push, not just on the initial review. The user (rnetser) has explicitly stated: "you must always run the pre merge checks on every commit."

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
🪛 zizmor (1.25.2)
.github/workflows/request-coderabbit-test-instructions.yml

[error] 5-9: use of fundamentally insecure workflow trigger (dangerous-triggers): pull_request_target is almost always used insecurely

(dangerous-triggers)


[warning] 5-9: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting

(concurrency-limits)


[error] 41-41: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)


[info] 41-41: action functionality is already included by the runner (superfluous-actions): use gh pr comment or gh issue comment in a script step

(superfluous-actions)

.github/workflows/unresolve-coderabbit-threads.yml

[error] 21-21: overly broad permissions (excessive-permissions): pull-requests: write is overly broad at the workflow level

(excessive-permissions)


[error] 11-13: use of fundamentally insecure workflow trigger (dangerous-triggers): pull_request_target is almost always used insecurely

(dangerous-triggers)


[warning] 21-21: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[info] 25-25: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)

🔀 Multi-repo context

Linked repositories findings

RedHatQE/openshift-virtualization-tests-design-docs

  • Repository contains CodeRabbit config .coderabbit.yaml at repo root. The file defines review behavior, auto_review, code_guidelines and learning scopes — this is the policy file the PR edits. [.::RedHatQE/openshift-virtualization-tests-design-docs:: .coderabbit.yaml lines 1-200]

  • STP and testing guidance present and relevant to the PR's test-plan and "real pytest commands" requirements:

    • docs/stp-guide.md documents mandatory STP expectations, approval/sign-off workflow, and STP templates. [.::RedHatQE/openshift-virtualization-tests-design-docs:: docs/stp-guide.md lines 1-200]
    • docs/testing-tiers.md describes Unit vs Tier1 vs Tier2 and explicitly distinguishes when real-cluster tests (Tier1/Tier2) are required vs unit tests; this supports the PR's changes requiring concrete pytest commands when session/collection/runtime behavior is affected. [.::RedHatQE/openshift-virtualization-tests-design-docs:: docs/testing-tiers.md lines 1-200]
  • stps/stp-template/* contains STP templates referenced by reviewers and CodeRabbit checks; changes to CodeRabbit test-plan templates should remain consistent with these templates. [.::RedHatQE/openshift-virtualization-tests-design-docs:: stps/stp-template/stp.md]

  • No existing GitHub workflows for request-coderabbit-test-instructions.yml or unresolve-coderabbit-threads.yml were found in this repo (only .github/labeler.yml present). This means the PR’s new workflows (added in openshift-virtualization-tests) are not already present here and will not conflict with local workflows in this repo. [.::RedHatQE/openshift-virtualization-tests-design-docs:: .github/ (listed files)]

Summary assessment:

  • The repo is a direct consumer of CodeRabbit configuration and STP/testing guidance; the PR’s changes to .coderabbit.yaml (relaxing checks for utilities/unittests, requiring concrete real-cluster pytest commands when runtime behavior is affected, and approval policy clarifications) map to files and policies present here. Reviewers should ensure the PR’s template/workflow changes remain consistent with docs/testing-tiers.md and stp templates. [.::RedHatQE/openshift-virtualization-tests-design-docs:: .coderabbit.yaml, docs/testing-tiers.md, stps/stp-template/stp.md]
🔇 Additional comments (11)
.coderabbit.yaml (4)

21-31: LGTM!


47-59: LGTM!


107-108: LGTM!


111-112: LGTM!

.github/workflows/request-coderabbit-test-instructions.yml (6)

1-27: LGTM!


36-43: LGTM!


52-53: LGTM!


119-125: LGTM!


127-150: LGTM!


173-175: LGTM!

.github/workflows/unresolve-coderabbit-threads.yml (1)

1-138: LGTM!


📝 Walkthrough

Walkthrough

This PR relaxes CodeRabbit rules for utilities unit tests, clarifies an Approval Policy for test-plan replies, tightens the test-instruction comment template (mandatory pytest commands and single non-blocking inline comment), and adds a workflow that unresolves review threads lacking substantive human responses.

Changes

Test Requirements and Approval Policy

Layer / File(s) Summary
Unit test relaxed rules
.coderabbit.yaml
Path-scoped instructions for utilities/unittests/** disable STD docstring, STP/RFE/Jira link, and coverage-tracking enforcement while preserving other coding standards.
Approval policy for test-plan replies
.coderabbit.yaml
Approval Policy added: approvals allowed when authors give reasonable, specific explanations for test-plan request replies; resolving a thread alone is insufficient.
STP check and test-instruction template
.coderabbit.yaml, .github/workflows/request-coderabbit-test-instructions.yml
STP link required pre-merge check now skips utilities/unittests/** and is limited to newly added tests/ items; test-instruction workflow now requires a single non-blocking inline COMMENT on the first changed line, and the template includes a mandatory "Real test commands" section requiring concrete pytest commands for error/fix and happy paths when session/runtime behavior is affected.

Automatic Thread Resolution Cleanup

Layer / File(s) Summary
Workflow metadata, guard, and env
.github/workflows/unresolve-coderabbit-threads.yml
Adds workflow on pull_request_target synchronize with per-PR concurrency; excludes bot-authored PRs, sets token/env vars, runner/timeout, and permissions.
GraphQL query and pagination
.github/workflows/unresolve-coderabbit-threads.yml
Uses gh api graphql with pagination (100 nodes/page) to collect review threads for the PR.
Filtering resolved bot threads
.github/workflows/unresolve-coderabbit-threads.yml
jq filters resolved threads opened by coderabbitai where the most recent 5 comments contain no substantive PR-author reply (body length >= 15).
Unresolve mutations and reply comments
.github/workflows/unresolve-coderabbit-threads.yml
For each matched thread ID, runs unresolveReviewThread and attempts addPullRequestReviewThreadReply with a warning; failures are logged and processing continues; prints completion when done.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

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

@openshift-virtualization-qe-bot-2

Copy link
Copy Markdown
Contributor

Report bugs in Issues

Welcome! 🎉

This pull request will be automatically processed with the following features:

🔄 Automatic Actions

  • Reviewer Assignment: Reviewers are automatically assigned based on the OWNERS file in the repository root
  • Size Labeling: PR size labels (XS, S, M, L, XL, XXL) are automatically applied based on changes
  • Issue Creation: A tracking issue is created for this PR and will be closed when the PR is merged or closed
  • Branch Labeling: Branch-specific labels are applied to track the target branch
  • Auto-verification: Auto-verified users have their PRs automatically marked as verified
  • Labels: Enabled categories: branch, can-be-merged, cherry-pick, has-conflicts, hold, needs-rebase, size, verified, wip

📋 Available Commands

PR Status Management

  • /wip - Mark PR as work in progress (adds WIP: prefix to title)
  • /wip cancel - Remove work in progress status
  • /hold - Block PR merging (approvers only)
  • /hold cancel - Unblock PR merging
  • /verified - Mark PR as verified
  • /verified cancel - Remove verification status
  • /reprocess - Trigger complete PR workflow reprocessing (useful if webhook failed or configuration changed)
  • /regenerate-welcome - Regenerate this welcome message

Review & Approval

  • /lgtm - Approve changes (looks good to me)
  • /approve - Approve PR (approvers only)
  • /assign-reviewers - Assign reviewers based on OWNERS file
  • /assign-reviewer @username - Assign specific reviewer
  • /check-can-merge - Check if PR meets merge requirements

Testing & Validation

  • /retest tox - Run Python test suite with tox
  • /retest build-container - Rebuild and test container image
  • /retest verify-bugs-are-open - verify-bugs-are-open
  • /retest all - Run all available tests

Container Operations

  • /build-and-push-container - Build and push container image (tagged with PR number)
    • Supports additional build arguments: /build-and-push-container --build-arg KEY=value

Cherry-pick Operations

  • /cherry-pick <branch> - Schedule cherry-pick to target branch when PR is merged
    • Multiple branches: /cherry-pick branch1 branch2 branch3

Label Management

  • /<label-name> - Add a label to the PR
  • /<label-name> cancel - Remove a label from the PR

✅ Merge Requirements

This PR will be automatically approved when the following conditions are met:

  1. Approval: /approve from at least one approver
  2. LGTM Count: Minimum 2 /lgtm from reviewers
  3. Status Checks: All required status checks must pass
  4. No Blockers: No wip, hold, has-conflicts labels and PR must be mergeable (no conflicts)
  5. Verified: PR must be marked as verified

📊 Review Process

Approvers and Reviewers

Approvers:

  • dshchedr
  • myakove
  • rnetser
  • vsibirsk

Reviewers:

  • RoniKishner
  • dshchedr
  • rnetser
  • vsibirsk
Available Labels
  • hold
  • verified
  • wip
  • lgtm
  • approve
AI Features
  • Cherry-Pick Conflict Resolution: Enabled (claude/claude-opus-4-6[1m])

💡 Tips

  • WIP Status: Use /wip when your PR is not ready for review
  • Verification: The verified label is removed on new commits unless the push is detected as a clean rebase
  • Cherry-picking: Cherry-pick labels are processed when the PR is merged
  • Container Builds: Container images are automatically tagged with the PR number
  • Permission Levels: Some commands require approver permissions
  • Auto-verified Users: Certain users have automatic verification and merge privileges

For more information, please refer to the project documentation or contact the maintainers.

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details
{}

@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: 3

🤖 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 @.coderabbit.yaml:
- Line 49: Update the approval-gate wording in the policy string that currently
reads "All your review comments have been addressed (resolved or fixed), OR you
had no review comments." to remove counting "resolved" as sufficient; require a
substantive fix or author response instead (e.g., change to "All your review
comments have been addressed (fixed or responded to), OR you had no review
comments") so the rule enforces concrete fixes or replies rather than thread
state; locate and update the exact policy entry containing that sentence in
.coderabbit.yaml.

In @.github/workflows/unresolve-coderabbit-threads.yml:
- Around line 43-49: The GraphQL comments fetch uses comments(first: 20) but the
code later selects the last comment via .comments.nodes[-1], causing false
negatives on threads >20 comments; change the query to fetch the most recent
comments (e.g., replace comments(first: 20) with comments(last: 5)) so
.comments.nodes[-1] truly reflects the latest comment, and verify the jq filter
.comments.nodes[-1] remains the selector used by the workflow.
- Around line 11-23: Add concurrency control to the workflow to prevent
concurrent runs from racing when mutating PR threads: add a concurrency stanza
(at workflow level) using a unique group key that includes the pull request
number (e.g. "unresolve-threads-${{ github.event.pull_request.number }}") and
set cancel-in-progress: true so new runs cancel previous in-flight runs; update
the workflow containing the unresolve-threads job (job name "unresolve-threads")
to include this concurrency group to ensure only one run operates on a PR at a
time.
🪄 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: ASSERTIVE

Plan: Pro

Run ID: df668759-6834-4848-869c-997ec880a353

📥 Commits

Reviewing files that changed from the base of the PR and between c0e6a28 and 98d28a0.

📒 Files selected for processing (3)
  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
  • .github/workflows/unresolve-coderabbit-threads.yml
📜 Review details
🧰 Additional context used
🧠 Learnings (49)
📓 Common learnings
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 2469
File: utilities/sanity.py:139-142
Timestamp: 2025-11-08T07:36:57.616Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep refactoring PRs (like PR `#2469`) strictly focused on moving/organizing code into more granular modules without adding new functionality, error handling, or behavioral changes. Such improvements should be handled in separate PRs.
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1168
File: tests/storage/storage_migration/utils.py:92-99
Timestamp: 2025-06-10T09:41:58.035Z
Learning: When CodeRabbit flags technical issues in code reviews, do not resolve the comments without first addressing them and getting a response from the user. Proper procedure is to discuss the technical issues and proposed solutions before marking comments as resolved.
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 5111
File: tests/network/localnet/upgrade/test_default_bridge_connectivity.py:1-11
Timestamp: 2026-06-03T09:46:29.920Z
Learning: In RedHatQE/openshift-virtualization-tests, new test files (test_*.py) written as bug automation — i.e., tests that verify a fix for an OCP bug (OCPBUGS-*) or a CNV Jira bug (CNV-*) — do NOT require the STD-first workflow (separate STD placeholder PR before implementation) and do NOT require an STP link. The bug tracker URL (e.g., https://redhat.atlassian.net/browse/OCPBUGS-66994) in the module docstring is sufficient traceability. The STD may be included in the same implementation PR. Do not flag missing STP links or missing dedicated STD PRs for OCPBUGS/CNV bug-automation tests.
Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:17-17
Timestamp: 2026-06-02T11:53:37.264Z
Learning: In RedHatQE/openshift-virtualization-tests, the `request-coderabbit-test-instructions.yml` workflow intentionally always creates a new comment (never updates/deduplicates) when either `generate_test_report` or `verified` labels trigger it. This is by design: the PR diff can change between the two triggers (new commits pushed), so each trigger produces an independent TIA snapshot of a different diff state. Deduplicating with `find-comment + edit-mode: replace` would be harmful because it would overwrite the earlier report, removing the ability to compare the two analyses. The historical record of both reports is a desired feature.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1244
File: utilities/os_utils.py:248-250
Timestamp: 2025-07-08T05:51:06.314Z
Learning: User rnetser prefers fail-fast code design where functions should raise exceptions immediately when encountering unexpected or malformed input, rather than implementing defensive error handling with fallbacks. They value making problems visible immediately during development over graceful degradation.
📚 Learning: 2026-01-05T10:33:55.037Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-29T11:02:22.804Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-17T14:29:44.166Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T14:29:44.166Z
Learning: For RedHatQE/openshift-virtualization-tests’ `.coderabbit.yaml` custom check (“STP link required”), ensure the STP/RFE/Jira link appears in at least one of these docstring locations: the module-level docstring, an enclosing class docstring, or the individual test function docstring. This satisfies the requirement for all tests covered by that scope. The check must be satisfied for (A) newly added test files named `test_*.py` and (B) newly added `def test_*` functions inside existing Python files. Do not rely on `pytest.mark.polarion` (decorators) as a substitute for the STP docstring link.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-30T13:42:43.892Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T06:30:28.071Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/architecture.py:25-25
Timestamp: 2026-05-18T06:30:28.071Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enforces a new Ruff rule (e.g., PLC0415) and explicitly documents in the PR description that pre-existing violations are suppressed with `# noqa: <rule>` as a temporary measure for follow-up cleanup PRs, do not raise review findings against those suppressions. The suppression policy is intentional and the violations are tracked for future resolution. Only flag new suppressions introduced without such documented justification.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:31:35.221Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_sanity.py:22-22
Timestamp: 2026-05-18T06:31:35.221Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PLC0415 (import-outside-top-level) Ruff rule is enabled, pre-existing violations in utilities/unittests/ test files are intentionally suppressed with per-line `# noqa: PLC0415` comments as a temporary measure. These suppressions are documented in the PR description and are candidates for dedicated follow-up cleanup PRs. Do not flag these suppressions as violations; they are an accepted part of the incremental rule-enablement strategy. Additionally, imports inside unit test methods in utilities/unittests/ may be intentionally placed there so they execute after patch decorators activate, which matters when modules have import-time side effects.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:31:18.023Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_pytest_utils.py:270-270
Timestamp: 2026-05-18T06:31:18.023Z
Learning: In RedHatQE/openshift-virtualization-tests, when a Ruff rule enforcement PR (e.g., enabling PLC0415 import-outside-top-level) is introduced, pre-existing violations are intentionally annotated with per-line `# noqa: PLC0415` comments as a temporary suppression to keep CI green. These suppressions are NOT code-quality issues to flag during review — they are an agreed-upon, documented mechanism (stated in the PR's "Special notes for reviewer" section) for incremental cleanup. Do not suggest removing or consolidating these suppressions in the same PR; they are addressed in dedicated follow-up PRs.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2025-12-16T14:00:59.076Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-14T14:01:37.353Z
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-01T06:43:11.108Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4908
File: utilities/unittests/test_pytest_utils.py:374-374
Timestamp: 2026-06-01T06:43:11.108Z
Learning: In RedHatQE/openshift-virtualization-tests, unit test files located under `utilities/unittests/` (and its subdirectories) do NOT require STP/RFE/Jira traceability links in test function docstrings. The STP/RFE/Jira traceability requirement applies only to integration/functional tests under the `tests/` directory. Do not flag missing STP/RFE/Jira links in any `test_*.py` file under `utilities/unittests/`.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : STD (Software Test Description) docstrings must follow the format in `docs/SOFTWARE_TEST_DESCRIPTION.md`. Required sections: `Preconditions:`, `Steps:`, `Expected:`. Never use alternative section names. Each test verifies ONE thing with ONE `Expected:` assertion. Do NOT include implementation details, fixture names, code references, or variable names. Include STP link at the module, class, or test level. Markers can be at any level. Use `[Markers: ...]` syntax for parametrized markers. Name resources by function (e.g., 'client VM') not labels (e.g., 'VM-A'). Class/module docstring holds shared `Preconditions:`, individual tests add only their own. Include `[NEGATIVE]` indicator for failure scenario tests.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-31T17:55:25.719Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-31T17:55:25.719Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the STP/RFE/Jira link requirement applies ONLY to test files under the `tests/` directory (feature/STD tests). It does NOT apply to unit tests under `utilities/unittests/`, which cover internal utility functions and bug fixes.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-19T10:17:44.423Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:44.423Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation coding guideline (using the `**` path glob) can fire as a false positive when the PR description already contains all required sections with meaningful content. Do not re-post the PR template violation comment if the PR objectives or description summary shows the required sections (`##### What this PR does / why we need it:`, `##### Which issue(s) this PR fixes:`, `##### Special notes for reviewer:`, `##### jira-ticket:`) are already present and populated. The `**` glob triggers the check per-file in every diff context, so verify the actual PR description content before flagging it as a violation.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-19T17:16:58.838Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/test_migration_stuntime.py:33-38
Timestamp: 2026-05-19T17:16:58.838Z
Learning: In RedHatQE/openshift-virtualization-tests, standalone triple-quoted string blocks (e.g., `"""Preconditions:..."""`) placed at module level after `pytestmark` in test files under `tests/` are the established STD (Standard Test Definition) documentation convention for shared preconditions. Do not flag these as dead code or suggest moving them into module/class docstrings. This pattern is intentional and used consistently across STD test modules.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-02T13:45:51.700Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: docs/AI_CONTRIBUTION_POLICY.md:0-0
Timestamp: 2026-06-02T13:45:51.700Z
Learning: Applies to docs/**/test_*.py : Do not submit AI-generated Software Test Description (STD) docstring placeholders that skip the required docstring format; ensure complete and properly formatted docstrings

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-20T11:18:46.206Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: PR discipline: Keep PRs focused on ONE topic. Out-of-scope improvements go in separate PRs. PR title must reflect the actual change, not a side effect. PR description must include motivation (WHY), not just what changed. Mark PR as draft when there are unresolved blockers, failing CI, or open design questions. Never merge a PR with known unresolved issues. DCO (Signed-off-by) REQUIRED on all commits. PR template sections REQUIRED: preserve all sections from `.github/pull_request_template.md`, including 'What this PR does / why we need it:' with meaningful content (not blank/placeholder), 'Which issue(s) this PR fixes:', 'Special notes for reviewer:', and 'jira-ticket:'.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-14T16:15:36.741Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4328
File: tests/network/flat_overlay/test_multi_network_policy.py:32-32
Timestamp: 2026-04-14T16:15:36.741Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when reviewing any PR with "Quarantine" in the title or a `quarantine` label, always verify compliance with docs/QUARANTINE_GUIDELINES.md:
- Category 1 (Product Bug): must use `pytest.mark.jira("CNV-XXXXX", run=False)` — the `pytest_jira` plugin conditionally skips the test when the Jira issue is open. Do NOT suggest replacing this with `xfail`.
- Category 2 (Automation Issue): must use `pytest.mark.xfail(run=False, reason=...)` — pytest itself handles the skip.
Flag any quarantine PR that uses the wrong category marker, is missing a Jira ticket reference, or uses `run=False` in the wrong context. Raising these compliance questions is always appropriate for quarantine PRs, even if the final resolution confirms the marker is correct.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-04T13:45:35.675Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-04T13:45:35.675Z
Learning: In the `openshift-virtualization-tests` repository, the PR description template is fulfilled on GitHub's rendered view. Do not flag missing PR template sections based on the raw diff alone.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-10T08:15:30.936Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-10T08:15:30.936Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the AI Contribution Policy (docs/AI_CONTRIBUTION_POLICY.md) requires that AI-assisted commits use the `Assisted-by:` trailer (e.g., `Assisted-by: Claude Sonnet 4.6 <noreplyanthropic.com>`), NOT `Co-Authored-By:`. Using `Co-Authored-By` for AI tools is a policy violation because it implies human co-authorship. All commits must also have a `Signed-off-by:` trailer for DCO compliance. During PR reviews, flag any commit that uses `Co-Authored-By` with an AI tool name instead of `Assisted-by`.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-04T13:45:41.527Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4725
File: tests/virt/cluster/common_templates/centos/test_centos_os_support.py:78-83
Timestamp: 2026-05-04T13:45:41.527Z
Learning: In RedHatQE/openshift-virtualization-tests, when reviewing lint-cleanup or formatting-only PRs (e.g., removing `# noqa` comments, UTF-8 headers), do not flag pre-existing code patterns such as `.is_connective(tcp_timeout=120)` that were present before the PR. Only raise issues when the PR itself introduces or modifies the problematic construct. This applies to all Python files in the repository.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:31:00.848Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_bitwarden.py:207-207
Timestamp: 2026-05-18T06:31:00.848Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 — import-outside-top-level), it is explicitly acceptable to annotate pre-existing violations with per-line `# noqa: PLC0415` as a temporary suppression to keep CI green. These suppressions are intentional and documented in the PR description as candidates for follow-up cleanup PRs. Do NOT flag such `# noqa: PLC0415` comments as policy violations in the context of rule-enablement PRs. Blanket `# noqa` and `per-file-ignores` remain disallowed; only targeted single-rule suppressions are permitted as a transitional measure.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-02T13:45:57.660Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-06-02T13:45:57.660Z
Learning: Applies to test_*.py : Newly added test files (test_*.py) MUST contain at least one of the following in the module, class, or test function docstring: a line with 'STP:' followed by a URL, a line with 'RFE:' followed by an issue tracker URL, or a line with 'Jira:' followed by an issue tracker URL. If a module-level or class-level STP link already exists, newly added test functions in that same file are considered covered. The pytest.mark.polarion decorator alone does NOT satisfy this requirement.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-02T13:45:57.660Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: coderabbit-custom-pre-merge-checks-unique-id-file-non-traceable-F7F2B60C-1728-4C9A-8889-4F2235E186CA.txt:0-0
Timestamp: 2026-06-02T13:45:57.660Z
Learning: Applies to test_*.py : Newly added test functions (def test_*) in existing test files MUST have at least one of the following in the function or parent class/module docstring: a line with 'STP:' followed by a URL, a line with 'RFE:' followed by an issue tracker URL, or a line with 'Jira:' followed by an issue tracker URL. Module-level or class-level STP links in the same file satisfy this requirement for all test functions. The pytest.mark.polarion decorator alone does NOT satisfy this requirement.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : Every new feature test file must include an STP link in the module, class, or test docstring. If there is no STP, the module, class, or test docstring must include a link to the RFE or Jira epic (not support cases) for coverage tracking.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-03-31T08:35:26.070Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 4318
File: tests/network/bandwidth/test_bandwidth.py:1-3
Timestamp: 2026-03-31T08:35:26.070Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the requirement to include an STP link in the module docstring applies only to STD tests for new features. Tests that are support exceptions (linked to SUPPORTEX-* tickets, e.g., SUPPORTEX-29574) do NOT have an associated STP and therefore do NOT require an STP link in the module docstring. Do not flag missing STP links for support exception test files.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-17T13:28:29.374Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T13:28:29.374Z
Learning: In RedHatQE/openshift-virtualization-tests, STP links in test file docstrings use two label variants: "STP:" (followed by URL) or "STP Reference:" (followed by URL). The URL always contains "openshift-virtualization-tests-design-docs/blob/main/stps/". The pytest.mark.polarion("CNV-XXXX") decorator is a separate per-test Polarion identifier and does NOT substitute for the STP docstring link. New test files must have the STP link at module, class, or test docstring level, with RFE: or Jira: links accepted as alternatives when no STP exists.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-24T18:35:11.039Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 4542
File: tests/network/libs/bgp.py:148-177
Timestamp: 2026-04-24T18:35:11.039Z
Learning: In tests/network/libs/bgp.py, do not flag or recommend changing the `create_evpn_frr_configuration` default `label=None`. This is intentional: EVPN RouteAdvertisements use a narrow `frr_configuration_selector` that targets only EVPN-labeled FRRConfigurations, while BGP RouteAdvertisements use an empty (match-all) selector. Because BGP and EVPN FRRConfigurations apply to different routers with disjoint prefix sets, there is no conflict, so `label` does not need to be required.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-27T15:30:20.252Z
Learnt from: SamAlber
Repo: RedHatQE/openshift-virtualization-tests PR: 3748
File: tests/storage/cdi_import/test_import_http.py:506-508
Timestamp: 2026-04-27T15:30:20.252Z
Learning: In tests/storage/cdi_import/test_import_http.py, when using pytest parametrize dicts for image paths, prefer referencing explicit image constants (e.g., Images.Windows.WIN2022_IMG) directly rather than deriving the value via lookups like LATEST_WINDOWS_OS_DICT.get("image_path"). This keeps the test inputs immediately visible for readability and failure triage. Do not request changes that replace these explicit constant references with dynamic lookups from LATEST_WINDOWS_OS_DICT.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-07T11:11:59.120Z
Learnt from: OhadRevah
Repo: RedHatQE/openshift-virtualization-tests PR: 4162
File: tests/install_upgrade_operators/crypto_policy/constants.py:4-4
Timestamp: 2026-05-07T11:11:59.120Z
Learning: In tests/install_upgrade_operators/crypto_policy/constants.py, treat `MANAGED_CRS_LIST` and `MANAGED_CRS_LIST_WITH_AAQ` as intentionally different scopes. `MANAGED_CRS_LIST` is meant for existing crypto-policy tests and intentionally excludes `AAQ` (it includes only KubeVirt, CDI, NetworkAddonsConfig, SSP). The separate `MANAGED_CRS_LIST_WITH_AAQ` explicitly extends it with `AAQ` (e.g., `[*MANAGED_CRS_LIST, AAQ]`) for AAQ-inclusive tests such as fixtures in conftest.py (e.g., `modern_tls_profile_applied`). Do not raise a review issue claiming `AAQ` is missing from `MANAGED_CRS_LIST`; verify tests use the correct list for their intended scope instead.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T11:17:18.196Z
Learnt from: RoniKishner
Repo: RedHatQE/openshift-virtualization-tests PR: 4898
File: tests/infrastructure/instance_types/conftest.py:158-162
Timestamp: 2026-05-18T11:17:18.196Z
Learning: In tests/infrastructure/instance_types/conftest.py, do not treat the windows_test_images_namespace_role_binding fixture as an overly permissive RoleBinding. It is intentionally designed to grant the view verb to system:authenticated on the windows-test-images namespace so shared Windows test images are universally readable across all namespaces/tests in the cluster (matching the OpenShift golden-image namespace pattern).

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-20T09:43:31.397Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 4932
File: tests/network/l2_bridge/nad_ref_change/lib_helpers.py:78-91
Timestamp: 2026-05-20T09:43:31.397Z
Learning: In tests/network/l2_bridge/nad_ref_change/lib_helpers.py, inside the bridge_vm() helper, do not raise guidance to use zip(..., strict=True) or to add explicit length-mismatch validation around zip(actual_iface_names, nad_names). The nad_names, ip_addresses, and iface_names inputs are intentionally controlled by each callsite and guaranteed to be aligned by design for this internal test fixture builder.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-06-02T11:53:37.264Z
Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:17-17
Timestamp: 2026-06-02T11:53:37.264Z
Learning: In RedHatQE/openshift-virtualization-tests, the `request-coderabbit-test-instructions.yml` workflow intentionally always creates a new comment (never updates/deduplicates) when either `generate_test_report` or `verified` labels trigger it. This is by design: the PR diff can change between the two triggers (new commits pushed), so each trigger produces an independent TIA snapshot of a different diff state. Deduplicating with `find-comment + edit-mode: replace` would be harmful because it would overwrite the earlier report, removing the ability to compare the two analyses. The historical record of both reports is a desired feature.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2025-11-25T01:56:54.902Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 2838
File: .github/workflows/net-utils-builder-staging.yml:37-37
Timestamp: 2025-11-25T01:56:54.902Z
Learning: In the openshift-virtualization-tests repository, when renaming container images that are built and used by GitHub Actions workflows, the changes must be done sequentially: first merge the workflow files (.github/workflows/) that update the image name in the CI/CD pipelines, then update the code references (like constants.py and manifest files) in a follow-up PR. This prevents the old workflow from running with mismatched image names during the transition.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-06-10T09:41:58.035Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1168
File: tests/storage/storage_migration/utils.py:92-99
Timestamp: 2025-06-10T09:41:58.035Z
Learning: When CodeRabbit flags technical issues in code reviews, do not resolve the comments without first addressing them and getting a response from the user. Proper procedure is to discuss the technical issues and proposed solutions before marking comments as resolved.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-19T10:17:37.060Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:37.060Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PR template validation rule is triggered, avoid posting the PR template violation comment if the PR description already contains the required sections with meaningful content:
- `##### What this PR does / why we need it:`
- `##### Which issue(s) this PR fixes:`
- `##### Special notes for reviewer:`
- `##### jira-ticket:`
Because the current implementation can use a broad `**` path glob and re-run the check per diff context/file, reviewers/automation should verify the actual PR description content before flagging it as a violation or duplicating the comment.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-20T11:18:31.677Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:31.677Z
Learning: In RedHatQE/openshift-virtualization-tests, make the PR template validation (HIGH-severity) heuristic more conservative: if the author explicitly rebuts the “missing template section” finding and confirms the required sections are present with meaningful content, treat the original finding as a false positive and do not re-raise it. Only raise the HIGH-severity flag when a required PR section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content can be verified as empty/placeholder-only.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2025-12-22T15:56:00.157Z
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2025-12-16T14:06:22.391Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:06:22.391Z
Learning: In the openshift-virtualization-tests repository, when posting test execution plan inline review comments using GitHub API, the full test execution plan content must go in the `comments[].body` field (which appears on Files Changed tab), NOT in the top-level `body` field (which appears in PR discussion thread). The top-level `body` field should be omitted or left empty to avoid posting redundant comments in the PR discussion thread.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2025-12-16T10:28:54.212Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T10:28:54.212Z
Learning: In the openshift-virtualization-tests repository, when determining smoke test impact for test execution plans, only set "Run smoke tests: True" if there is a verified, traceable dependency path from smoke tests to the changed code. Session-scoped fixtures or infrastructure-sounding changes do NOT automatically imply smoke test impact - the dependency chain must be explicitly verified using shell scripts before recommending smoke test execution.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-06-02T13:45:51.700Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: docs/AI_CONTRIBUTION_POLICY.md:0-0
Timestamp: 2026-06-02T13:45:51.700Z
Learning: Applies to docs/**/test_*.py : Do not submit AI-generated tests without verifying marker completeness and proper fixture scoping per project test standards

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : When reviewing quarantine PRs, verify the quarantine mechanism matches the failure category: Product bugs use `pytest.mark.jira('CNV-XXXXX', run=False)`. Automation issues or unidentified failures use `pytest.mark.xfail(reason=f'{QUARANTINED}: ...', run=False)`. `pytest.mark.jira` is conditional (auto-re-enables when Jira resolved). `pytest.mark.xfail` quarantine is unconditional (requires manual de-quarantine PR).

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : Tests directory organization: Each feature must have its own subdirectory under component (e.g., `tests/network/ipv6/`). Tests belong under the feature they test—do NOT create standalone directories for cross-cutting concerns. Test file naming REQUIRED: always use `test_<functionality>.py` format. Place local helper utils in `<feature_dir>/utils.py`. Place local fixtures in `<feature_dir>/conftest.py`. Move to shared location (`utilities/` or `tests/conftest.py`) only when used by different team directories.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2026-01-07T09:52:22.771Z
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 3358
File: tests/network/sriov/test_sriov.py:21-21
Timestamp: 2026-01-07T09:52:22.771Z
Learning: For PRs that only remove or modify pytest markers (like removing pytest.mark.post_upgrade) without changing test logic in openshift-virtualization-tests, collection verification using `pytest --collect-only` is sufficient. Full test execution is not required to verify marker-only changes.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
📚 Learning: 2025-12-22T16:27:44.327Z
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 3196
File: tests/network/upgrade/test_upgrade_network.py:4-4
Timestamp: 2025-12-22T16:27:44.327Z
Learning: For PRs that remove test cases (especially redundant test cleanup PRs in openshift-virtualization-tests), test collection verification (pytest --collect-only showing selected/deselected counts) is sufficient to confirm the removal was clean and the test module remains functional. Full test execution is not required for test deletion PRs.

Applied to files:

  • .github/workflows/request-coderabbit-test-instructions.yml
🪛 zizmor (1.25.2)
.github/workflows/unresolve-coderabbit-threads.yml

[error] 16-16: overly broad permissions (excessive-permissions): pull-requests: write is overly broad at the workflow level

(excessive-permissions)


[error] 11-13: use of fundamentally insecure workflow trigger (dangerous-triggers): pull_request_target is almost always used insecurely

(dangerous-triggers)


[warning] 16-16: permissions without explanatory comments (undocumented-permissions): needs an explanatory comment

(undocumented-permissions)


[info] 20-20: workflow or action definition without a name (anonymous-definition): this job

(anonymous-definition)


[warning] 11-13: insufficient job-level concurrency limits (concurrency-limits): workflow is missing concurrency setting

(concurrency-limits)

🔇 Additional comments (4)
.coderabbit.yaml (1)

21-31: LGTM!

Also applies to: 103-109

.github/workflows/request-coderabbit-test-instructions.yml (1)

109-114: LGTM!

Also applies to: 117-142

.github/workflows/unresolve-coderabbit-threads.yml (2)

19-23: LGTM!


77-102: LGTM!

Comment thread .coderabbit.yaml Outdated
Comment thread .github/workflows/unresolve-coderabbit-threads.yml
Comment thread .github/workflows/unresolve-coderabbit-threads.yml Outdated
@rnetser

rnetser commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator Author

Caution

Failed to replace (edit) comment. This is likely due to insufficient permissions or the comment being deleted.

Error details

{}

@coderabbitai

what???

@coderabbitai

coderabbitai Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
cat .github/workflows/request-coderabbit-test-instructions.yml
echo "---"
cat .github/workflows/unresolve-coderabbit-threads.yml

Length of output: 15923



@rnetser That's CodeRabbit's own internal error — when this PR was processed, I attempted to edit/replace my PR summary comment (the walkthrough) but the operation failed, resulting in that "Caution: Failed to replace (edit) comment" notice being posted. The empty {} error body suggests either a transient GitHub API hiccup or a race condition in the update.

Nothing is broken in your workflow files — the error is on my side. I can retry the summary generation now:


🧠 Learnings used
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.

Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.

Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:17-17
Timestamp: 2026-06-02T11:53:37.264Z
Learning: In RedHatQE/openshift-virtualization-tests, the `request-coderabbit-test-instructions.yml` workflow intentionally always creates a new comment (never updates/deduplicates) when either `generate_test_report` or `verified` labels trigger it. This is by design: the PR diff can change between the two triggers (new commits pushed), so each trigger produces an independent TIA snapshot of a different diff state. Deduplicating with `find-comment + edit-mode: replace` would be harmful because it would overwrite the earlier report, removing the ability to compare the two analyses. The historical record of both reports is a desired feature.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3371
File: scripts/tests_analyzer/compare_coderabbit_decisions.py:1-3
Timestamp: 2026-01-12T18:39:22.849Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep tool attribution comments (like "Generated using Claude cli") in production code files. These references should not be flagged for removal.

Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-10T08:15:30.936Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the AI Contribution Policy (docs/AI_CONTRIBUTION_POLICY.md) requires that AI-assisted commits use the `Assisted-by:` trailer (e.g., `Assisted-by: Claude Sonnet 4.6 <noreplyanthropic.com>`), NOT `Co-Authored-By:`. Using `Co-Authored-By` for AI tools is a policy violation because it implies human co-authorship. All commits must also have a `Signed-off-by:` trailer for DCO compliance. During PR reviews, flag any commit that uses `Co-Authored-By` with an AI tool name instead of `Assisted-by`.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 2469
File: utilities/sanity.py:139-142
Timestamp: 2025-11-08T07:36:57.616Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep refactoring PRs (like PR `#2469`) strictly focused on moving/organizing code into more granular modules without adding new functionality, error handling, or behavioral changes. Such improvements should be handled in separate PRs.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1244
File: utilities/os_utils.py:248-250
Timestamp: 2025-07-08T05:51:06.314Z
Learning: User rnetser prefers fail-fast code design where functions should raise exceptions immediately when encountering unexpected or malformed input, rather than implementing defensive error handling with fallbacks. They value making problems visible immediately during development over graceful degradation.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.

Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.

Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.
✅ Action performed

Summary regeneration triggered.

Comment thread .github/workflows/request-coderabbit-test-instructions.yml Outdated

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/workflows/unresolve-coderabbit-threads.yml (2)

44-57: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

HIGH: Unpaginated reviewThreads(first: 100) can miss threads on noisy PRs.

In .github/workflows/unresolve-coderabbit-threads.yml, the GraphQL query fetches only the first 100 reviewThreads and never paginates, even though the workflow comment says it’s “Fetch all resolved review threads.” Any qualifying resolved threads beyond that first page are never reconsidered/unresolved, weakening the policy where it matters most.

Use pageInfo { hasNextPage endCursor } and paginate with after (loop in the bash step). Example query shape:

query($owner: String!, $repo: String!, $pr: Int!, $after: String) {
  repository(owner: $owner, name: $repo) {
    pullRequest(number: $pr) {
      reviewThreads(first: 100, after: $after) {
        nodes { id isResolved comments(last: 5) { nodes { author { login } body } } }
        pageInfo { hasNextPage endCursor }
      }
    }
  }
}
🤖 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/unresolve-coderabbit-threads.yml around lines 44 - 57, The
GraphQL query uses reviewThreads(first: 100) without pagination so it can miss
threads on noisy PRs; update the query used in the workflow to accept an
optional cursor variable (e.g., $after) and include pageInfo { hasNextPage
endCursor } alongside reviewThreads(first: 100, after: $after), then implement a
loop in the bash step that repeatedly calls the query with after set to
endCursor until hasNextPage is false, collecting/processing each page of
reviewThreads (use the same variable names like $owner, $repo, $pr, $after and
the field names reviewThreads, pageInfo, endCursor, hasNextPage to locate and
change the query and the calling logic).

48-80: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

MEDIUM: Fix thread opener detection and add pagination in unresolve workflow

The workflow’s detector intends to unresolve threads where a CodeRabbit-resolved conversation lacked a substantive response, but it can miss valid threads:

  • Correctness: comments(last: 5) is used, while jq checks .comments.nodes[0] for coderabbitai[bot]nodes[0] is only the oldest comment within that last-5 window, not necessarily the thread opener. If the opener falls outside the slice, the thread is skipped (.github/workflows/unresolve-coderabbit-threads.yml lines ~48 and ~67).
  • Reliability: reviewThreads(first: 100) is capped with no pagination, so PRs with >100 review threads won’t all be processed (line ~44).
Minimal fix (separate opener vs recent comments)
-                      comments(last: 5) {
+                      opening_comment: comments(first: 1) {
+                        nodes {
+                          author {
+                            login
+                          }
+                        }
+                      }
+                      recent_comments: comments(last: 5) {
                         nodes {
                           author {
                             login
@@
-            | select(.comments.nodes[0].author.login == "coderabbitai[bot]")
+            | select(.opening_comment.nodes[0].author.login == "coderabbitai[bot]")
             | select(
@@
-                (.comments.nodes[-1].author.login == "coderabbitai[bot]")
+                (.recent_comments.nodes[-1].author.login == "coderabbitai[bot]")
                 or
@@
-                  (.comments.nodes[-1].author.login != "coderabbitai[bot]")
+                  (.recent_comments.nodes[-1].author.login != "coderabbitai[bot]")
                   and
-                  ((.comments.nodes[-1].body | length) < 15)
+                  ((.recent_comments.nodes[-1].body | length) < 15)
                 )
               )
             | .id

Implement pagination for reviewThreads (and optionally comments if needed) to avoid partial coverage.

🤖 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/unresolve-coderabbit-threads.yml around lines 48 - 80, The
detector misses thread openers and can skip threads when there are >100 threads;
fix by adding GraphQL pagination for reviewThreads (iterate using
pageInfo.hasNextPage and endCursor instead of relying on reviewThreads(first:
100) only) and fetch a larger, ordered comment window so opener detection is
correct: change comments(last: 5) to comments(first: 100, orderBy: {field:
CREATED_AT, direction: ASC}) (or paginate comments similarly) so
.comments.nodes[0] reliably represents the opener and .comments.nodes[-1] the
most recent comment; update the jq selectors accordingly to continue checking
opener (.comments.nodes[0].author.login == "coderabbitai[bot]") and last comment
length checks.
🤖 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.

Outside diff comments:
In @.github/workflows/unresolve-coderabbit-threads.yml:
- Around line 44-57: The GraphQL query uses reviewThreads(first: 100) without
pagination so it can miss threads on noisy PRs; update the query used in the
workflow to accept an optional cursor variable (e.g., $after) and include
pageInfo { hasNextPage endCursor } alongside reviewThreads(first: 100, after:
$after), then implement a loop in the bash step that repeatedly calls the query
with after set to endCursor until hasNextPage is false, collecting/processing
each page of reviewThreads (use the same variable names like $owner, $repo, $pr,
$after and the field names reviewThreads, pageInfo, endCursor, hasNextPage to
locate and change the query and the calling logic).
- Around line 48-80: The detector misses thread openers and can skip threads
when there are >100 threads; fix by adding GraphQL pagination for reviewThreads
(iterate using pageInfo.hasNextPage and endCursor instead of relying on
reviewThreads(first: 100) only) and fetch a larger, ordered comment window so
opener detection is correct: change comments(last: 5) to comments(first: 100,
orderBy: {field: CREATED_AT, direction: ASC}) (or paginate comments similarly)
so .comments.nodes[0] reliably represents the opener and .comments.nodes[-1] the
most recent comment; update the jq selectors accordingly to continue checking
opener (.comments.nodes[0].author.login == "coderabbitai[bot]") and last comment
length checks.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 642a2eee-e23f-4c27-810a-65f2d18c2be7

📥 Commits

Reviewing files that changed from the base of the PR and between 98d28a0 and 726855f.

📒 Files selected for processing (2)
  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: verify-bugs-are-open
  • GitHub Check: tox
  • GitHub Check: build-container
  • GitHub Check: can-be-merged
  • GitHub Check: can-be-merged
  • GitHub Check: can-be-merged
  • GitHub Check: can-be-merged
  • GitHub Check: can-be-merged
🧰 Additional context used
🧠 Learnings (32)
📓 Common learnings
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 2469
File: utilities/sanity.py:139-142
Timestamp: 2025-11-08T07:36:57.616Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep refactoring PRs (like PR `#2469`) strictly focused on moving/organizing code into more granular modules without adding new functionality, error handling, or behavioral changes. Such improvements should be handled in separate PRs.
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.
Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:17-17
Timestamp: 2026-06-02T11:53:37.264Z
Learning: In RedHatQE/openshift-virtualization-tests, the `request-coderabbit-test-instructions.yml` workflow intentionally always creates a new comment (never updates/deduplicates) when either `generate_test_report` or `verified` labels trigger it. This is by design: the PR diff can change between the two triggers (new commits pushed), so each trigger produces an independent TIA snapshot of a different diff state. Deduplicating with `find-comment + edit-mode: replace` would be harmful because it would overwrite the earlier report, removing the ability to compare the two analyses. The historical record of both reports is a desired feature.
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/architecture.py:25-25
Timestamp: 2026-05-18T06:30:28.071Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enforces a new Ruff rule (e.g., PLC0415) and explicitly documents in the PR description that pre-existing violations are suppressed with `# noqa: <rule>` as a temporary measure for follow-up cleanup PRs, do not raise review findings against those suppressions. The suppression policy is intentional and the violations are tracked for future resolution. Only flag new suppressions introduced without such documented justification.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-03T15:38:39.607Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, lint cleanup PRs (e.g. pre-commit hook bumps with ruff/mypy) should NOT be asked to fix pre-existing code patterns that are outside the diff. Issues like bare `except Exception`, missing `raise ... from`, timezone-naive datetime comparisons, implicit `return None`, TRY003 long error messages in exceptions, and boolean accumulator logic in utility functions are pre-existing and should only be addressed in dedicated follow-up PRs, not in automated lint-cleanup PRs.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4701
File: tests/virt/node/general/test_windows_vtpm_bitlocker.py:50-52
Timestamp: 2026-05-03T15:38:12.880Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, do not flag pre-existing code patterns (e.g., nested `if` statements, unnecessary list comprehensions) that are not introduced by the current PR when the PR is a lint cleanup/tooling bump. Such improvements should be deferred to dedicated follow-up PRs. This applies to all Python files under tests/ and utilities/.
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_sanity.py:22-22
Timestamp: 2026-05-18T06:31:35.221Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PLC0415 (import-outside-top-level) Ruff rule is enabled, pre-existing violations in utilities/unittests/ test files are intentionally suppressed with per-line `# noqa: PLC0415` comments as a temporary measure. These suppressions are documented in the PR description and are candidates for dedicated follow-up cleanup PRs. Do not flag these suppressions as violations; they are an accepted part of the incremental rule-enablement strategy. Additionally, imports inside unit test methods in utilities/unittests/ may be intentionally placed there so they execute after patch decorators activate, which matters when modules have import-time side effects.
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1244
File: utilities/os_utils.py:248-250
Timestamp: 2025-07-08T05:51:06.314Z
Learning: User rnetser prefers fail-fast code design where functions should raise exceptions immediately when encountering unexpected or malformed input, rather than implementing defensive error handling with fallbacks. They value making problems visible immediately during development over graceful degradation.
📚 Learning: 2026-01-05T10:33:55.037Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-30T13:42:43.892Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-06-01T06:43:11.108Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4908
File: utilities/unittests/test_pytest_utils.py:374-374
Timestamp: 2026-06-01T06:43:11.108Z
Learning: In RedHatQE/openshift-virtualization-tests, unit test files located under `utilities/unittests/` (and its subdirectories) do NOT require STP/RFE/Jira traceability links in test function docstrings. The STP/RFE/Jira traceability requirement applies only to integration/functional tests under the `tests/` directory. Do not flag missing STP/RFE/Jira links in any `test_*.py` file under `utilities/unittests/`.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-17T14:29:44.166Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4884
File: .coderabbit.yaml:77-81
Timestamp: 2026-05-17T14:29:44.166Z
Learning: For RedHatQE/openshift-virtualization-tests’ `.coderabbit.yaml` custom check (“STP link required”), ensure the STP/RFE/Jira link appears in at least one of these docstring locations: the module-level docstring, an enclosing class docstring, or the individual test function docstring. This satisfies the requirement for all tests covered by that scope. The check must be satisfied for (A) newly added test files named `test_*.py` and (B) newly added `def test_*` functions inside existing Python files. Do not rely on `pytest.mark.polarion` (decorators) as a substitute for the STP docstring link.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-29T11:02:22.804Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-14T14:01:37.353Z
Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-31T17:55:25.719Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-31T17:55:25.719Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the STP/RFE/Jira link requirement applies ONLY to test files under the `tests/` directory (feature/STD tests). It does NOT apply to unit tests under `utilities/unittests/`, which cover internal utility functions and bug fixes.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:30:28.071Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/architecture.py:25-25
Timestamp: 2026-05-18T06:30:28.071Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enforces a new Ruff rule (e.g., PLC0415) and explicitly documents in the PR description that pre-existing violations are suppressed with `# noqa: <rule>` as a temporary measure for follow-up cleanup PRs, do not raise review findings against those suppressions. The suppression policy is intentional and the violations are tracked for future resolution. Only flag new suppressions introduced without such documented justification.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T06:31:35.221Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_sanity.py:22-22
Timestamp: 2026-05-18T06:31:35.221Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PLC0415 (import-outside-top-level) Ruff rule is enabled, pre-existing violations in utilities/unittests/ test files are intentionally suppressed with per-line `# noqa: PLC0415` comments as a temporary measure. These suppressions are documented in the PR description and are candidates for dedicated follow-up cleanup PRs. Do not flag these suppressions as violations; they are an accepted part of the incremental rule-enablement strategy. Additionally, imports inside unit test methods in utilities/unittests/ may be intentionally placed there so they execute after patch decorators activate, which matters when modules have import-time side effects.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2025-12-16T14:00:59.076Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-06-10T09:41:58.035Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 1168
File: tests/storage/storage_migration/utils.py:92-99
Timestamp: 2025-06-10T09:41:58.035Z
Learning: When CodeRabbit flags technical issues in code reviews, do not resolve the comments without first addressing them and getting a response from the user. Proper procedure is to discuss the technical issues and proposed solutions before marking comments as resolved.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-20T11:18:46.206Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-10T08:15:30.936Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-10T08:15:30.936Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, the AI Contribution Policy (docs/AI_CONTRIBUTION_POLICY.md) requires that AI-assisted commits use the `Assisted-by:` trailer (e.g., `Assisted-by: Claude Sonnet 4.6 <noreplyanthropic.com>`), NOT `Co-Authored-By:`. Using `Co-Authored-By` for AI tools is a policy violation because it implies human co-authorship. All commits must also have a `Signed-off-by:` trailer for DCO compliance. During PR reviews, flag any commit that uses `Co-Authored-By` with an AI tool name instead of `Assisted-by`.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-19T10:17:44.423Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:44.423Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation coding guideline (using the `**` path glob) can fire as a false positive when the PR description already contains all required sections with meaningful content. Do not re-post the PR template violation comment if the PR objectives or description summary shows the required sections (`##### What this PR does / why we need it:`, `##### Which issue(s) this PR fixes:`, `##### Special notes for reviewer:`, `##### jira-ticket:`) are already present and populated. The `**` glob triggers the check per-file in every diff context, so verify the actual PR description content before flagging it as a violation.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T15:22:26.757Z
Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: PR discipline: Keep PRs focused on ONE topic. Out-of-scope improvements go in separate PRs. PR title must reflect the actual change, not a side effect. PR description must include motivation (WHY), not just what changed. Mark PR as draft when there are unresolved blockers, failing CI, or open design questions. Never merge a PR with known unresolved issues. DCO (Signed-off-by) REQUIRED on all commits. PR template sections REQUIRED: preserve all sections from `.github/pull_request_template.md`, including 'What this PR does / why we need it:' with meaningful content (not blank/placeholder), 'Which issue(s) this PR fixes:', 'Special notes for reviewer:', and 'jira-ticket:'.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T06:31:18.023Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_pytest_utils.py:270-270
Timestamp: 2026-05-18T06:31:18.023Z
Learning: In RedHatQE/openshift-virtualization-tests, when a Ruff rule enforcement PR (e.g., enabling PLC0415 import-outside-top-level) is introduced, pre-existing violations are intentionally annotated with per-line `# noqa: PLC0415` comments as a temporary suppression to keep CI green. These suppressions are NOT code-quality issues to flag during review — they are an agreed-upon, documented mechanism (stated in the PR's "Special notes for reviewer" section) for incremental cleanup. Do not suggest removing or consolidating these suppressions in the same PR; they are addressed in dedicated follow-up PRs.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-18T06:31:20.848Z
Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_hco.py:501-501
Timestamp: 2026-05-18T06:31:20.848Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 import-outside-top-level) and annotates pre-existing violations with `# noqa: <RULE>` as a temporary measure to keep CI green (with follow-up PRs planned for cleanup), do NOT flag those suppressions as issues. The suppressions are intentional, documented in the PR description under "Special notes for reviewer", and should be treated as deferred technical debt — not immediate violations. Only flag `# noqa: PLC0415` suppressions that are newly introduced *without* such documented intent.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-03-17T01:32:13.674Z
Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2025-12-22T15:56:00.157Z
Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-06-02T11:53:37.264Z
Learnt from: geetikakay
Repo: RedHatQE/openshift-virtualization-tests PR: 5101
File: .github/workflows/request-coderabbit-test-instructions.yml:17-17
Timestamp: 2026-06-02T11:53:37.264Z
Learning: In RedHatQE/openshift-virtualization-tests, the `request-coderabbit-test-instructions.yml` workflow intentionally always creates a new comment (never updates/deduplicates) when either `generate_test_report` or `verified` labels trigger it. This is by design: the PR diff can change between the two triggers (new commits pushed), so each trigger produces an independent TIA snapshot of a different diff state. Deduplicating with `find-comment + edit-mode: replace` would be harmful because it would overwrite the earlier report, removing the ability to compare the two analyses. The historical record of both reports is a desired feature.

Applied to files:

  • .coderabbit.yaml
  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-04-14T16:15:36.741Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4328
File: tests/network/flat_overlay/test_multi_network_policy.py:32-32
Timestamp: 2026-04-14T16:15:36.741Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when reviewing any PR with "Quarantine" in the title or a `quarantine` label, always verify compliance with docs/QUARANTINE_GUIDELINES.md:
- Category 1 (Product Bug): must use `pytest.mark.jira("CNV-XXXXX", run=False)` — the `pytest_jira` plugin conditionally skips the test when the Jira issue is open. Do NOT suggest replacing this with `xfail`.
- Category 2 (Automation Issue): must use `pytest.mark.xfail(run=False, reason=...)` — pytest itself handles the skip.
Flag any quarantine PR that uses the wrong category marker, is missing a Jira ticket reference, or uses `run=False` in the wrong context. Raising these compliance questions is always appropriate for quarantine PRs, even if the final resolution confirms the marker is correct.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2025-12-16T14:06:22.391Z
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:06:22.391Z
Learning: In the openshift-virtualization-tests repository, when posting test execution plan inline review comments using GitHub API, the full test execution plan content must go in the `comments[].body` field (which appears on Files Changed tab), NOT in the top-level `body` field (which appears in PR discussion thread). The top-level `body` field should be omitted or left empty to avoid posting redundant comments in the PR discussion thread.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-24T18:35:11.039Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 4542
File: tests/network/libs/bgp.py:148-177
Timestamp: 2026-04-24T18:35:11.039Z
Learning: In tests/network/libs/bgp.py, do not flag or recommend changing the `create_evpn_frr_configuration` default `label=None`. This is intentional: EVPN RouteAdvertisements use a narrow `frr_configuration_selector` that targets only EVPN-labeled FRRConfigurations, while BGP RouteAdvertisements use an empty (match-all) selector. Because BGP and EVPN FRRConfigurations apply to different routers with disjoint prefix sets, there is no conflict, so `label` does not need to be required.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-04-27T15:30:20.252Z
Learnt from: SamAlber
Repo: RedHatQE/openshift-virtualization-tests PR: 3748
File: tests/storage/cdi_import/test_import_http.py:506-508
Timestamp: 2026-04-27T15:30:20.252Z
Learning: In tests/storage/cdi_import/test_import_http.py, when using pytest parametrize dicts for image paths, prefer referencing explicit image constants (e.g., Images.Windows.WIN2022_IMG) directly rather than deriving the value via lookups like LATEST_WINDOWS_OS_DICT.get("image_path"). This keeps the test inputs immediately visible for readability and failure triage. Do not request changes that replace these explicit constant references with dynamic lookups from LATEST_WINDOWS_OS_DICT.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-07T11:11:59.120Z
Learnt from: OhadRevah
Repo: RedHatQE/openshift-virtualization-tests PR: 4162
File: tests/install_upgrade_operators/crypto_policy/constants.py:4-4
Timestamp: 2026-05-07T11:11:59.120Z
Learning: In tests/install_upgrade_operators/crypto_policy/constants.py, treat `MANAGED_CRS_LIST` and `MANAGED_CRS_LIST_WITH_AAQ` as intentionally different scopes. `MANAGED_CRS_LIST` is meant for existing crypto-policy tests and intentionally excludes `AAQ` (it includes only KubeVirt, CDI, NetworkAddonsConfig, SSP). The separate `MANAGED_CRS_LIST_WITH_AAQ` explicitly extends it with `AAQ` (e.g., `[*MANAGED_CRS_LIST, AAQ]`) for AAQ-inclusive tests such as fixtures in conftest.py (e.g., `modern_tls_profile_applied`). Do not raise a review issue claiming `AAQ` is missing from `MANAGED_CRS_LIST`; verify tests use the correct list for their intended scope instead.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-18T11:17:18.196Z
Learnt from: RoniKishner
Repo: RedHatQE/openshift-virtualization-tests PR: 4898
File: tests/infrastructure/instance_types/conftest.py:158-162
Timestamp: 2026-05-18T11:17:18.196Z
Learning: In tests/infrastructure/instance_types/conftest.py, do not treat the windows_test_images_namespace_role_binding fixture as an overly permissive RoleBinding. It is intentionally designed to grant the view verb to system:authenticated on the windows-test-images namespace so shared Windows test images are universally readable across all namespaces/tests in the cluster (matching the OpenShift golden-image namespace pattern).

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2026-05-20T09:43:31.397Z
Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 4932
File: tests/network/l2_bridge/nad_ref_change/lib_helpers.py:78-91
Timestamp: 2026-05-20T09:43:31.397Z
Learning: In tests/network/l2_bridge/nad_ref_change/lib_helpers.py, inside the bridge_vm() helper, do not raise guidance to use zip(..., strict=True) or to add explicit length-mismatch validation around zip(actual_iface_names, nad_names). The nad_names, ip_addresses, and iface_names inputs are intentionally controlled by each callsite and guaranteed to be aligned by design for this internal test fixture builder.

Applied to files:

  • .coderabbit.yaml
📚 Learning: 2025-11-25T01:56:54.902Z
Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 2838
File: .github/workflows/net-utils-builder-staging.yml:37-37
Timestamp: 2025-11-25T01:56:54.902Z
Learning: In the openshift-virtualization-tests repository, when renaming container images that are built and used by GitHub Actions workflows, the changes must be done sequentially: first merge the workflow files (.github/workflows/) that update the image name in the CI/CD pipelines, then update the code references (like constants.py and manifest files) in a follow-up PR. This prevents the old workflow from running with mismatched image names during the transition.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-20T11:18:31.677Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:31.677Z
Learning: In RedHatQE/openshift-virtualization-tests, make the PR template validation (HIGH-severity) heuristic more conservative: if the author explicitly rebuts the “missing template section” finding and confirms the required sections are present with meaningful content, treat the original finding as a false positive and do not re-raise it. Only raise the HIGH-severity flag when a required PR section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content can be verified as empty/placeholder-only.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
📚 Learning: 2026-05-19T10:17:37.060Z
Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:37.060Z
Learning: In RedHatQE/openshift-virtualization-tests, when the PR template validation rule is triggered, avoid posting the PR template violation comment if the PR description already contains the required sections with meaningful content:
- `##### What this PR does / why we need it:`
- `##### Which issue(s) this PR fixes:`
- `##### Special notes for reviewer:`
- `##### jira-ticket:`
Because the current implementation can use a broad `**` path glob and re-run the check per diff context/file, reviewers/automation should verify the actual PR description content before flagging it as a violation or duplicating the comment.

Applied to files:

  • .github/workflows/unresolve-coderabbit-threads.yml
🔀 Multi-repo context

Findings

  • Repository contains a CodeRabbit config file: .coderabbit.yaml is present at the repo root. [.::RedHatQE/openshift-virtualization-tests-design-docs::]
  • Repo contains STP and testing guidance docs that the PR’s changes reference/affect:
    • docs/stp-guide.md (Software Test Plan guidance) — includes STP expectations and templates referenced by CodeRabbit checks. [.::RedHatQE/openshift-virtualization-tests-design-docs::]
    • docs/testing-tiers.md (Unit/Tier1/Tier2 guidance) — defines when real-cluster pytest commands are required vs. unit tests. [.::RedHatQE/openshift-virtualization-tests-design-docs::]
  • Other CI/automation config present that may interact with review workflows:
    • .github/ (workflows and config exist; labeler and in-solidarity shown). [.::RedHatQE/openshift-virtualization-tests-design-docs::]

Evaluation

  • Presence of .coderabbit.yaml and STP/testing docs confirms this repository is a direct consumer/context for the PR’s CodeRabbit policy and the stricter test-plan requirements (real pytest commands, checkboxes, STP enforcement). No additional repositories were provided to search.
🔇 Additional comments (1)
.coderabbit.yaml (1)

49-53: LGTM!

@rnetser

rnetser commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator Author

@coderabbitai[bot]

The following review comments were reviewed and a decision was made:

.github/workflows/unresolve-coderabbit-threads.yml:44 (outside diff) — HIGH: Unpaginated reviewThreads(first: 100) can miss threads on noisy PRs.

Addressed: Added pagination loop with pageInfo { hasNextPage endCursor } to handle PRs with >100 review threads.

.github/workflows/unresolve-coderabbit-threads.yml:48 (outside diff) — MEDIUM: Fix thread opener detection and add pagination in unresolve workflow

Addressed: Split into opening_comment (first: 1) for thread opener detection and recent_comments (last: 5) for last reply check. Pagination also added.

- Check for substantive PR-author reply (not just any non-bot reply)
- Only post warning comment if unresolveReviewThread mutation succeeded

Signed-off-by: Ron Netser <rnetser@redhat.com>
Assisted-by: Claude <noreply@anthropic.com>
@rnetser

rnetser commented Jun 8, 2026

Copy link
Copy Markdown
Collaborator Author

/verified
/approve

merging and will monitor the behavior

@openshift-virtualization-qe-bot-3

Copy link
Copy Markdown
Contributor

@coderabbitai

Test execution plan request details

CRITICAL: You MUST post an inline review comment on the first changed line of the first file.
The inline comment should contain the full Test Execution Plan (smoke decision, gating decision, and specific affected tests).
Do NOT submit a formal review - just post the inline comment directly.

As an expert software testing engineer, analyze all modified files in this PR and create a targeted test execution plan.
You will post an inline review comment with the test execution plan on the first changed file.
If you fail to run or post a comment, retry.

Analysis Requirements:

  1. Examine code changes in each modified file

  2. Identify affected code paths, functions, and classes

  3. Analyze pytest-specific elements: fixtures (scope, dependencies), parametrization, markers, conftest changes

  4. Trace test dependencies through imports, shared utilities, fixture inheritance, fixture teardown, and yield from cleanup in conftest

  5. Detect new tests introduced in the PR

  6. Utilities and libs impact (when utilities/ or libs/ changes):
    You MUST use shell scripts (rg, git diff) to trace the full impact.
    Follow these sub-steps in order:

    6a. Identify modified symbols: For each changed file under utilities/ or libs/,
    list every modified function or method.
    Example: git diff HEAD~1 --unified=0 -- utilities/hco.py | grep '^[+-]def '

    6b. Find direct callers: Search tests and conftest for each symbol from 6a.
    Example: rg -l 'get_hco_version' tests/

    6c. Trace fixture teardown and cleanup: Find fixtures that reach
    the modified symbol through yield from or context-manager wrappers.
    Example: rg -l 'yield from.*enable_common_boot|def.*enable_common_boot' tests/

    6d. Trace same-file callers: In each changed file, find other functions
    whose body calls a modified symbol (including code after yield
    in @contextmanager helpers).
    Example: rg 'get_hco_version|enable_common_boot' utilities/hco.py

    6e. Expand transitively: If function A calls modified B, then
    tests/fixtures that call A are affected — even when the test body
    never imports B directly.

    Do NOT limit impact to tests that import the modified symbol only.

  7. Smoke test impact: Intersect the affected set from step 6 with smoke-marked tests.
    Run: rg -l '@pytest.mark.smoke' tests/
    VERIFY the above command returned actual file paths before concluding False.
    Set True if either condition is met:

    • a smoke-marked file appears in the affected set from 6b-6e, OR
    • any conftest.py in the smoke test's parent-directory hierarchy (up to repo root)
      imports or calls a modified utilities/libs symbol — including autouse fixtures
      that depend on modified functions. ALL tests in that directory and below are affected.
      Example check: for each smoke_file, scan dirname(smoke_file)/conftest.py,
      dirname(dirname(smoke_file))/conftest.py, etc. for modified symbol imports
      and autouse fixtures that depend on modified symbols.
  8. Gating test impact: Intersect the affected set from step 6 with gating-marked tests.
    Run: rg -l '@pytest.mark.gating' tests/
    Set True if a gating-marked file also appears in the affected set from 6b-6e.
    Utilities/libs changes often affect gating tests without affecting smoke tests.
    Do NOT stop analysis after concluding Run smoke tests: False.

Output rules:
Do NOT include analysis step numbers (1-8) in your visible output.

Your deliverable:
Your change request comment will be based on the following requirements:

Test Execution Plan

  • Run smoke tests: True / False — If True, state the dependency path (test → fixture → changed symbol). True ONLY with a verified path.
  • Run gating tests: True / False — If True, state the dependency path. True if any gating-marked test is in the affected set.
  • Affected tests to run (required when utilities/, libs/, or shared conftest changes — list concrete paths even when smoke is False)
  • path/to/test_file.py - When the entire test file needs verification
  • path/to/test_file.py::TestClass::test_method - When specific test(s) needed
  • path/to/test_file.py::test_function - When specific test(s) needed
  • -m marker - When a marker covers multiple affected tests (e.g. -m gating only if ALL gating tests in scope need run)
  • Tag each listed test or group with its marker when not obvious, e.g. (gating) or (smoke)

Guidelines:

  • Include tests affected directly OR via fixture setup/teardown, yield from cleanup, or transitive utility call chains (caller calls modified helper)
  • Use a full file path only if ALL tests in that file require verification
  • Use file path + test name when only specific tests use an affected fixture or utility wrapper (preferred for partial file impact)
  • If a test marker can cover multiple files/tests, provide the marker
  • Balance coverage vs over-testing - Keep descriptions minimal
  • Example: if leaf helper foo() changes, include tests whose fixture teardown calls wrapper bar() where bar() calls foo(), even when the test body only imports an unrelated symbol from the same utilities module

Hardware-Related Checks (SR-IOV, GPU, DPDK):

When PR modifies fixtures for hardware-specific resources:

  • Collection Safety: Fixtures MUST have existence checks (return None when hardware unavailable)
  • Test Plan: MUST verify both WITH and WITHOUT hardware:
    • Run affected tests on cluster WITH hardware
    • Verify collection succeeds on cluster WITHOUT hardware

CRITICAL WORKFLOW COMPLETION RULES:

When responding to this test execution plan request, you MUST follow these rules EXACTLY:

  1. YOUR ONLY DELIVERABLE: Post an inline review comment containing the test execution plan on the first changed line
  2. THEN STOP IMMEDIATELY - Do NOT generate any additional response
  3. FALLBACK ONLY: If submitting the review fails after retrying, post as a regular PR comment
  4. SILENCE = SUCCESS: After successfully submitting the review, your task is complete. No confirmation needed.

ABSOLUTE PROHIBITIONS (violating these creates empty/meaningless reviews):

  • ❌ Do NOT post acknowledgment messages like "Test execution plan posted", "Review posted successfully", "I've successfully posted"
  • ❌ Do NOT mention review IDs, URLs, or confirmation of posting in the PR thread
  • ❌ Do NOT add any follow-up comments after submitting the review
  • ❌ Do NOT reply to confirm task completion
  • ❌ Do NOT explain what you did - just do it and stop

Remember: The pull request review is visible to users. Additional comments are redundant noise.

CRITICAL — Verification rules for smoke and gating decisions:
- For each True decision, you must have traced a concrete path: test file → fixture → utility function → modified symbol.
- Do NOT assume impact based on scope, file proximity, or infrastructure-sounding names.
Only set True when you trace a concrete path through steps 6a-6e, then 7 or 8.
WRONG: "utilities/hco.py changed → run smoke" (no traced dependency path)
WRONG: "Run smoke tests: False" with no affected-test list when gating tests use the changed utility
RIGHT: "Run smoke tests: False, Run gating tests: True" plus tests/.../test_foo.py::TestBar::test_baz (gating)
RIGHT: "Smoke test X uses fixture Y → wrapper Z → changed function W in utilities/hco.py"

@rnetser rnetser merged commit 6abe07d into RedHatQE:main Jun 8, 2026
21 checks passed
Comment thread .coderabbit.yaml
@@ -18,6 +18,18 @@ issue_enrichment: {}
reviews:
# Explicit instructions applied to every review, including PR description validation

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.

Test Execution Plan

  • Run smoke tests: False — No Python code, fixtures, or test utilities were modified. All changes are GitHub Actions workflows and CodeRabbit config (YAML only).
  • Run gating tests: False — Same reason; no traced dependency path to any gating-marked test.
  • Affected tests to run: None — Changes are confined to .coderabbit.yaml, .github/workflows/request-coderabbit-test-instructions.yml, and .github/workflows/unresolve-coderabbit-threads.yml. No utilities/, libs/, or tests/ Python code was touched.

@coderabbitai

coderabbitai Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get list of changed files and first changed line of first file
git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only origin/main...HEAD 2>/dev/null
echo "---"
git diff HEAD~1 HEAD -- .coderabbit.yaml 2>/dev/null | head -20
echo "---COMMITS---"
git log --oneline -5

Length of output: 716


🏁 Script executed:

#!/bin/bash
# Get all changed files vs main
git diff --name-only origin/main...HEAD 2>/dev/null
echo "---"
# Get first changed line of first file (.coderabbit.yaml)
git diff origin/main...HEAD -- .coderabbit.yaml 2>/dev/null | head -30
echo "---WORKFLOW1---"
git diff origin/main...HEAD -- .github/workflows/request-coderabbit-test-instructions.yml 2>/dev/null | head -10
echo "---WORKFLOW2---"
git diff origin/main...HEAD -- .github/workflows/unresolve-coderabbit-threads.yml 2>/dev/null | head -10

Length of output: 3206


🏁 Script executed:

#!/bin/bash
# Get the latest commit SHA for the PR
gh api repos/RedHatQE/openshift-virtualization-tests/pulls/5122 --jq '.head.sha'

Length of output: 217


🏁 Script executed:

#!/bin/bash
# Post inline review comment on .coderabbit.yaml line 19
gh api repos/RedHatQE/openshift-virtualization-tests/pulls/5122/reviews \
  --method POST \
  --field commit_id='1ba9d1b7edf90c4bd69773de3f610980ffd31832' \
  --field event='COMMENT' \
  --field body='' \
  --field 'comments[][path]=.coderabbit.yaml' \
  --field 'comments[][line]=19' \
  --field 'comments[][side]=RIGHT' \
  --field 'comments[][body]=**Test Execution Plan**

- **Run smoke tests: False** — No Python code, fixtures, or test utilities were modified. All changes are GitHub Actions workflows and CodeRabbit config (YAML only).
- **Run gating tests: False** — Same reason; no traced dependency path to any gating-marked test.
- **Affected tests to run:** None — Changes are confined to `.coderabbit.yaml`, `.github/workflows/request-coderabbit-test-instructions.yml`, and `.github/workflows/unresolve-coderabbit-threads.yml`. No `utilities/`, `libs/`, or `tests/` Python code was touched.'

Length of output: 2759




🧠 Learnings used
Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:00:59.076Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, CodeRabbit must post ONLY an inline review comment on the Files Changed tab and then stop immediately without generating any follow-up comments in the PR discussion thread. No acknowledgment messages, no confirmation of posting, no explanation - silence after posting the inline review equals success. Additional comments create empty/meaningless reviews that clutter the PR.

Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files Changed tab at each applicable location rather than aggregating multiple issues into a single PR discussion thread reply.

Learnt from: dshchedr
Repo: RedHatQE/openshift-virtualization-tests PR: 4118
File: utilities/database.py:0-0
Timestamp: 2026-03-17T01:32:13.674Z
Learning: In RedHatQE/openshift-virtualization-tests, maintainer dshchedr prefers CodeRabbit to post targeted inline comments on the Files changed tab for each applicable location rather than aggregating multiple issues into a single discussion thread.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-04-30T13:42:43.892Z
Learning: In the openshift-virtualization-tests repository, when processing test execution plan requests for PRs that introduce NEW test classes or test files (not just modifications to existing tests), always verify STD-first workflow compliance as part of the analysis: (1) check if the new test class has actual implementation code (assertions, test logic) — if so, it needs a prior STD PR, (2) check if the test file has a module docstring with STP or Jira/RFE link, (3) check if `What this PR does / why we need it:` in the PR description has meaningful content. Flag any violation even when the bot's primary request is only for a test execution plan. These checks should be appended to the test execution plan inline comment.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3228
File: .coderabbit.yaml:30-41
Timestamp: 2026-01-05T10:33:55.037Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers minimal pre-merge checks in CodeRabbit configuration: only docstrings enforcement (80% threshold) is needed, not title or description checks.

Learnt from: yossisegev
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-14T14:01:37.353Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when a PR has the `needs-rebase` label and the pre-merge check reports a large number of "new test_*.py files" (e.g., 300+) that do not match the actual PR diff, this is a false positive caused by the check comparing the entire diverged branch file tree against main rather than just the PR diff. Do not raise STP Link Required or Docstring Coverage violations based on such check results — only flag these if the PR diff itself actually adds new test files or functions lacking docstrings.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_pytest_utils.py:270-270
Timestamp: 2026-05-18T06:31:18.023Z
Learning: In RedHatQE/openshift-virtualization-tests, when a Ruff rule enforcement PR (e.g., enabling PLC0415 import-outside-top-level) is introduced, pre-existing violations are intentionally annotated with per-line `# noqa: PLC0415` comments as a temporary suppression to keep CI green. These suppressions are NOT code-quality issues to flag during review — they are an agreed-upon, documented mechanism (stated in the PR's "Special notes for reviewer" section) for incremental cleanup. Do not suggest removing or consolidating these suppressions in the same PR; they are addressed in dedicated follow-up PRs.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-03T15:38:39.607Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, lint cleanup PRs (e.g. pre-commit hook bumps with ruff/mypy) should NOT be asked to fix pre-existing code patterns that are outside the diff. Issues like bare `except Exception`, missing `raise ... from`, timezone-naive datetime comparisons, implicit `return None`, TRY003 long error messages in exceptions, and boolean accumulator logic in utility functions are pre-existing and should only be addressed in dedicated follow-up PRs, not in automated lint-cleanup PRs.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_hco.py:501-501
Timestamp: 2026-05-18T06:31:30.399Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 import-outside-top-level) and annotates pre-existing violations with `# noqa: <RULE>` as a temporary measure to keep CI green (with follow-up PRs planned for cleanup), do NOT flag those suppressions as issues. The suppressions are intentional, documented in the PR description under "Special notes for reviewer", and should be treated as deferred technical debt — not immediate violations. Only flag `# noqa: PLC0415` suppressions that are newly introduced *without* such documented intent.

Learnt from: EdDev
Repo: RedHatQE/openshift-virtualization-tests PR: 4819
File: utilities/unittests/test_hco.py:501-501
Timestamp: 2026-06-07T12:49:09.717Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR enables a new Ruff/lint rule (e.g., PLC0415 import-outside-top-level) and annotates pre-existing violations with `# noqa: <RULE>` as a temporary measure to keep CI green (with follow-up PRs planned for cleanup), do NOT flag those suppressions as issues. The suppressions are intentional, documented in the PR description under "Special notes for reviewer", and should be treated as deferred technical debt — not immediate violations. Only flag `# noqa: PLC0415` suppressions that are newly introduced *without* such documented intent.

Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-22T15:56:00.157Z
Learning: In the openshift-virtualization-tests repository, when responding to test execution plan requests from openshift-virtualization-qe-bot-3, do NOT use "REQUEST_CHANGES" review type if the PR author has already marked the PR as verified (e.g., with `/verified` command). Test execution plans are informational guides, not blocking requirements. Use COMMENT event for informational test plans, or only REQUEST_CHANGES if there are actual code issues that need to be addressed before merging.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T14:06:22.391Z
Learning: In the openshift-virtualization-tests repository, when posting test execution plan inline review comments using GitHub API, the full test execution plan content must go in the `comments[].body` field (which appears on Files Changed tab), NOT in the top-level `body` field (which appears in PR discussion thread). The top-level `body` field should be omitted or left empty to avoid posting redundant comments in the PR discussion thread.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2026-05-29T11:02:22.804Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, version-bump PRs that update the main branch to reference a new CNV release (e.g., "Update project `main` to reference cnv 5.0") do NOT add new test files or test modules. These PRs only update metadata (pyproject.toml, tox.ini, .coderabbit.yaml) and clean up resolved Jira fixtures/markers in existing files. The "Stp Link Required" pre-merge check may incorrectly flag hundreds of "newly added" test files as a false positive due to the base-branch comparison shifting after branching — this should be ignored for such PRs.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 4328
File: tests/network/flat_overlay/test_multi_network_policy.py:32-32
Timestamp: 2026-04-14T16:15:36.741Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, when reviewing any PR with "Quarantine" in the title or a `quarantine` label, always verify compliance with docs/QUARANTINE_GUIDELINES.md:
- Category 1 (Product Bug): must use `pytest.mark.jira("CNV-XXXXX", run=False)` — the `pytest_jira` plugin conditionally skips the test when the Jira issue is open. Do NOT suggest replacing this with `xfail`.
- Category 2 (Automation Issue): must use `pytest.mark.xfail(run=False, reason=...)` — pytest itself handles the skip.
Flag any quarantine PR that uses the wrong category marker, is missing a Jira ticket reference, or uses `run=False` in the wrong context. Raising these compliance questions is always appropriate for quarantine PRs, even if the final resolution confirms the marker is correct.

Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4833
File: tests/network/localnet/migration_stuntime/libstuntime.py:13-13
Timestamp: 2026-05-19T10:17:44.423Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation coding guideline (using the `**` path glob) can fire as a false positive when the PR description already contains all required sections with meaningful content. Do not re-post the PR template violation comment if the PR objectives or description summary shows the required sections (`##### What this PR does / why we need it:`, `##### Which issue(s) this PR fixes:`, `##### Special notes for reviewer:`, `##### jira-ticket:`) are already present and populated. The `**` glob triggers the check per-file in every diff context, so verify the actual PR description content before flagging it as a violation.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-12-16T10:28:54.212Z
Learning: In the openshift-virtualization-tests repository, when determining smoke test impact for test execution plans, only set "Run smoke tests: True" if there is a verified, traceable dependency path from smoke tests to the changed code. Session-scoped fixtures or infrastructure-sounding changes do NOT automatically imply smoke test impact - the dependency chain must be explicitly verified using shell scripts before recommending smoke test execution.

Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: PR discipline: Keep PRs focused on ONE topic. Out-of-scope improvements go in separate PRs. PR title must reflect the actual change, not a side effect. PR description must include motivation (WHY), not just what changed. Mark PR as draft when there are unresolved blockers, failing CI, or open design questions. Never merge a PR with known unresolved issues. DCO (Signed-off-by) REQUIRED on all commits. PR template sections REQUIRED: preserve all sections from `.github/pull_request_template.md`, including 'What this PR does / why we need it:' with meaningful content (not blank/placeholder), 'Which issue(s) this PR fixes:', 'Special notes for reviewer:', and 'jira-ticket:'.

Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Before committing verification is MANDATORY: Run `uv run pre-commit run --all-files` (linting and formatting), `uv run tox` (full CI checks), and `uv run tox -e utilities-unittests` (utilities unit tests). All checks must pass. No exceptions. Fix all failures before committing. Do not use `--no-verify` to bypass hooks.

Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: docs/AI_CONTRIBUTION_POLICY.md:0-0
Timestamp: 2026-06-04T10:17:10.630Z
Learning: Applies to docs/**/test_*.py : Do not submit AI-generated tests without verifying marker completeness per project test fixture guidelines

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: :0-0
Timestamp: 2025-09-29T19:05:24.987Z
Learning: The test execution plan for PR `#1904` focuses on cluster-type conditional logic where nmstate functionality is bypassed on cloud clusters (Azure/AWS) but fully functional on bare-metal/PSI clusters, requiring different test strategies for each environment type.

Learnt from: azhivovk
Repo: RedHatQE/openshift-virtualization-tests PR: 5039
File: tests/network/l2_bridge/nad_ref_change/lib_helpers.py:1-1
Timestamp: 2026-06-02T21:17:09.602Z
Learning: In RedHatQE/openshift-virtualization-tests, when a PR only relocates functions to shared libraries and updates import paths in test files (no logic change), do NOT flag the callers as requiring full test re-execution. At most, run `pytest --collect-only` to verify the new import paths resolve correctly. Only require full re-execution of caller tests when the moved function's implementation changes behavior.

Learnt from: CR
Repo: RedHatQE/openshift-virtualization-tests PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-05-18T15:22:26.757Z
Learning: Applies to tests/**/test_*.py : New feature tests must follow the STD-first workflow: (1) STP (Software Test Plan) reviewed and approved, (2) STD (Software Test Description) placeholder tests with docstrings and `__test__ = False` reviewed, (3) Implementation only after STD review. Never submit test implementation without prior STD review.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3062
File: conftest.py:333-333
Timestamp: 2025-12-16T20:11:03.645Z
Learning: In the openshift-virtualization-tests repository, when determining smoke test impact for changes affecting py_config["os_login_param"], follow this verification methodology: (1) Find all smoke tests: `rg "pytest.mark.smoke" --type=py -B2 | grep "def test_"`, (2) For each smoke test file, search for VM creation patterns: `rg "VirtualMachineForTests|running_vm|VirtualMachineForTestsFromTemplate|wait_for_ssh|check_ssh_connectivity"`, (3) Trace the dependency chain: smoke test → VirtualMachineForTests/running_vm() → wait_for_ssh_connectivity() (default enabled) → vm.login_params property → py_config["os_login_param"][vm.os_flavor], (4) Check utilities/virt.py for login_params usage: `rg "os_login_param|login_params" utilities/virt.py -C3`. Any smoke test creating VMs with default SSH connectivity checks (running_vm with check_ssh_connectivity=True) depends on os_login_param, even if the test doesn't directly reference it.

Learnt from: servolkov
Repo: RedHatQE/openshift-virtualization-tests PR: 1776
File: libs/net/node_network.py:25-31
Timestamp: 2025-08-20T23:43:28.117Z
Learning: In the RedHatQE/openshift-virtualization-tests project, servolkov's team always uses bare metal (BM) clusters with IPv4 setup in their testing environment, making defensive checks for IPv4 data presence potentially redundant in their networking code.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 3371
File: scripts/tests_analyzer/compare_coderabbit_decisions.py:199-289
Timestamp: 2026-01-13T10:06:14.822Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep pagination loops inline rather than extracting them into generic helper functions when the loops have different URL patterns and unique post-processing logic, as the inline approach improves readability and makes each endpoint's behavior more explicit.

Learnt from: rnetser
Repo: RedHatQE/openshift-virtualization-tests PR: 2469
File: utilities/sanity.py:139-142
Timestamp: 2025-11-08T07:36:57.616Z
Learning: In the openshift-virtualization-tests repository, user rnetser prefers to keep refactoring PRs (like PR `#2469`) strictly focused on moving/organizing code into more granular modules without adding new functionality, error handling, or behavioral changes. Such improvements should be handled in separate PRs.

Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 1160
File: tests/storage/storage_migration/test_mtc_storage_class_migration.py:165-176
Timestamp: 2025-06-17T07:45:37.776Z
Learning: In the openshift-virtualization-tests repository, user jpeimer prefers explicit fixture parameters over composite fixtures in test methods, even when there are many parameters, as they find this approach more readable and maintainable for understanding test dependencies.

Learnt from: jpeimer
Repo: RedHatQE/openshift-virtualization-tests PR: 3571
File: tests/storage/storage_migration/utils.py:158-167
Timestamp: 2026-01-25T13:18:26.819Z
Learning: In the openshift-virtualization-tests repository, user jpeimer prefers to avoid nitpicky style changes (e.g., removing `.keys()` from dict membership checks) because verifying every change is expensive. Be cautious about suggesting low-impact stylistic improvements that require verification overhead.

Learnt from: akri3i
Repo: RedHatQE/openshift-virtualization-tests PR: 1210
File: tests/virt/cluster/general/mass_machine_type_transition_tests/conftest.py:24-64
Timestamp: 2025-06-23T19:28:20.281Z
Learning: In OpenShift Virtualization mass machine type transition tests, the machine type glob pattern "pc-q35-rhel8.*.*" is intentionally hard-coded in the kubevirt_api_lifecycle_automation_job as it's used only once for this specific test case, with plans to update it in the future if the job needs to support other machine types.

Learnt from: RoniKishner
Repo: RedHatQE/openshift-virtualization-tests PR: 1411
File: utilities/os_utils.py:246-279
Timestamp: 2025-07-22T17:13:59.166Z
Learning: In the RedHatQE/openshift-virtualization-tests repository, CentOS preferences follow the format "centos-stream<version>" (e.g., "centos-stream9", "centos-stream10"). The generate_instance_type_centos_os_matrix function correctly uses regex to extract numeric versions and constructs the latest version string in the same format as the input preferences for proper comparison.

Learnt from: Anatw
Repo: RedHatQE/openshift-virtualization-tests PR: 4867
File: tests/network/libs/stuntime.py:1-1
Timestamp: 2026-05-20T11:18:46.206Z
Learning: In RedHatQE/openshift-virtualization-tests, the PR template validation heuristic has produced repeated false positives on PRs where the description actually contains all required sections (e.g., PR `#4867` by Anatw). When an author explicitly rebuts a missing-template-section flag and confirms all sections are present with meaningful content, treat the original flag as a false positive and do not re-raise it. Be more conservative about firing this HIGH-severity flag — only raise it when a required section header (e.g., "##### What this PR does / why we need it:") is clearly absent or its content is verifiably empty/placeholder-only.

@openshift-virtualization-qe-bot-6

Copy link
Copy Markdown

New container for quay.io/openshift-cnv/openshift-virtualization-tests:latest published

acinko-rh pushed a commit to acinko-rh/openshift-virtualization-tests that referenced this pull request Jun 9, 2026
…#5122)

##### What this PR does / why we need it:

Improves CodeRabbit review workflows to ensure higher quality reviews
and PR verification:

1. **Skip STD/STP checks for unit tests** — `utilities/unittests/` files
no longer trigger false STP link warnings
2. **Test plan uses checkboxes** — every listed test is a GitHub
checkbox the PR author checks off after running
3. **Real cluster test commands** — when changes affect session/runtime
code, the test plan includes concrete pytest commands (error path +
happy path), not just unit test paths
4. **Auto-unresolve prematurely resolved threads** — detects when
CodeRabbit threads are resolved without any reply or with a trivial (<15
char) response, unresolves them with a warning
5. **Approval policy** — CodeRabbit accepts reasonable test plan
responses from PR authors without blocking

##### Which issue(s) this PR fixes:

##### Special notes for reviewer:

The unresolve workflow triggers on `synchronize` (new push) and checks
all resolved CodeRabbit threads. Two cases caught:
- Thread resolved with no reply at all (just clicked "Resolve
conversation")
- Thread resolved with trivial reply (<15 chars)

##### jira-ticket:

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

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Relaxed review/enforcement for internal unit-test areas to reduce
docstring/link/coverage strictness.
* Clarified PR approval policy: prior review comments must be addressed
via changes or substantive author explanations; “resolved” alone is
insufficient.
* Tightened test-execution-plan guidance: require concrete test commands
when runtime/session code is affected and a single non-blocking inline
test-plan comment.
* Added automation to reopen review threads lacking substantive author
replies and to post a follow-up warning.
* **Tests**
* STP/RFE/Jira link enforcement limited to newly added test
files/functions only.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: rnetser <rnetser@redhat.com>
Signed-off-by: Ron Netser <rnetser@redhat.com>
Signed-off-by: Adam Cinko <acinko@redhat.com>
OhadRevah pushed a commit to OhadRevah/openshift-virtualization-tests that referenced this pull request Jun 10, 2026
…#5122)

##### What this PR does / why we need it:

Improves CodeRabbit review workflows to ensure higher quality reviews
and PR verification:

1. **Skip STD/STP checks for unit tests** — `utilities/unittests/` files
no longer trigger false STP link warnings
2. **Test plan uses checkboxes** — every listed test is a GitHub
checkbox the PR author checks off after running
3. **Real cluster test commands** — when changes affect session/runtime
code, the test plan includes concrete pytest commands (error path +
happy path), not just unit test paths
4. **Auto-unresolve prematurely resolved threads** — detects when
CodeRabbit threads are resolved without any reply or with a trivial (<15
char) response, unresolves them with a warning
5. **Approval policy** — CodeRabbit accepts reasonable test plan
responses from PR authors without blocking

##### Which issue(s) this PR fixes:

##### Special notes for reviewer:

The unresolve workflow triggers on `synchronize` (new push) and checks
all resolved CodeRabbit threads. Two cases caught:
- Thread resolved with no reply at all (just clicked "Resolve
conversation")
- Thread resolved with trivial reply (<15 chars)

##### jira-ticket:

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

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Relaxed review/enforcement for internal unit-test areas to reduce
docstring/link/coverage strictness.
* Clarified PR approval policy: prior review comments must be addressed
via changes or substantive author explanations; “resolved” alone is
insufficient.
* Tightened test-execution-plan guidance: require concrete test commands
when runtime/session code is affected and a single non-blocking inline
test-plan comment.
* Added automation to reopen review threads lacking substantive author
replies and to post a follow-up warning.
* **Tests**
* STP/RFE/Jira link enforcement limited to newly added test
files/functions only.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: rnetser <rnetser@redhat.com>
Signed-off-by: Ron Netser <rnetser@redhat.com>
rnetser added a commit to rnetser/openshift-virtualization-tests that referenced this pull request Jun 13, 2026
…#5122)

##### What this PR does / why we need it:

Improves CodeRabbit review workflows to ensure higher quality reviews
and PR verification:

1. **Skip STD/STP checks for unit tests** — `utilities/unittests/` files
no longer trigger false STP link warnings
2. **Test plan uses checkboxes** — every listed test is a GitHub
checkbox the PR author checks off after running
3. **Real cluster test commands** — when changes affect session/runtime
code, the test plan includes concrete pytest commands (error path +
happy path), not just unit test paths
4. **Auto-unresolve prematurely resolved threads** — detects when
CodeRabbit threads are resolved without any reply or with a trivial (<15
char) response, unresolves them with a warning
5. **Approval policy** — CodeRabbit accepts reasonable test plan
responses from PR authors without blocking

##### Which issue(s) this PR fixes:

##### Special notes for reviewer:

The unresolve workflow triggers on `synchronize` (new push) and checks
all resolved CodeRabbit threads. Two cases caught:
- Thread resolved with no reply at all (just clicked "Resolve
conversation")
- Thread resolved with trivial reply (<15 chars)

##### jira-ticket:

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

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Chores**
* Relaxed review/enforcement for internal unit-test areas to reduce
docstring/link/coverage strictness.
* Clarified PR approval policy: prior review comments must be addressed
via changes or substantive author explanations; “resolved” alone is
insufficient.
* Tightened test-execution-plan guidance: require concrete test commands
when runtime/session code is affected and a single non-blocking inline
test-plan comment.
* Added automation to reopen review threads lacking substantive author
replies and to post a follow-up warning.
* **Tests**
* STP/RFE/Jira link enforcement limited to newly added test
files/functions only.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Signed-off-by: rnetser <rnetser@redhat.com>
Signed-off-by: Ron Netser <rnetser@redhat.com>
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.

9 participants