[Chore] Start CodeRabbit review once Ubuntu tests pass - #1581
zoomote[bot] wants to merge 1 commit into
Conversation
|
Important Review skippedAuto reviews are limited based on label configuration. 🏷️ Required labels (at least one) (1)
Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Review statusThis PR was opened by an automated account. A human maintainer must verify the change intent, provenance, and validation before merging. Current step: Mark the PR ready. Required CI must pass before CodeRabbit starts. Review-state labels are managed by this workflow; do not edit them manually. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
@coderabbitai configuration |
|
Configuration used: Path: .coderabbit.yaml CodeRabbit configuration# Source: Repository YAML (base)
language: en-US
# Source: Repository YAML (base)
tone_instructions: Be direct and evidence-first. Report only concrete, actionable findings grounded in changed code. Prioritize correctness, security, data loss, lifecycle, and regressions; avoid speculative style comments and unrelated refactors.
# Source: defaults
early_access: false
# Source: defaults
enable_free_tier: true
# Source: defaults
inheritance: false
reviews:
# Source: Repository YAML (base)
profile: assertive
# Source: Repository YAML (base)
request_changes_workflow: true
# Source: Repository YAML (base)
high_level_summary: true
# Source: defaults
high_level_summary_instructions: ''
# Source: defaults
high_level_summary_placeholder: '`@coderabbitai` summary'
# Source: Repository YAML (base)
high_level_summary_in_walkthrough: true
# Source: defaults
auto_title_placeholder: '`@coderabbitai`'
# Source: defaults
auto_title_instructions: ''
# Source: Repository YAML (base)
review_status: true
# Source: Repository YAML (base)
review_details: true
# Source: defaults
review_progress: true
# Source: defaults
commit_status: true
# Source: defaults
fail_commit_status: false
# Source: Repository YAML (base)
collapse_walkthrough: true
# Source: Repository YAML (base)
changed_files_summary: true
# Source: defaults
sequence_diagrams: true
# Source: defaults
estimate_code_review_effort: true
# Source: defaults
assess_linked_issues: true
# Source: defaults
related_issues: true
# Source: defaults
related_prs: true
# Source: defaults
suggested_labels: true
# Source: defaults
labeling_instructions: []
# Source: defaults
mutually_exclusive_groups: {}
# Source: defaults
auto_apply_labels: false
# Source: defaults
suggested_reviewers: true
# Source: defaults
auto_assign_reviewers: false
# Source: defaults
suggested_reviewers_instructions: []
# Source: defaults
in_progress_fortune: true
# Source: Repository YAML (base)
poem: false
# Source: defaults
enable_prompt_for_ai_agents: true
# Source: Repository YAML (base)
path_filters:
- '!**/node_modules/**'
- '!**/dist/**'
- '!**/out/**'
- '!**/coverage/**'
- '!**/.turbo/**'
- '!apps/vscode-e2e/.vscode-test/**'
- '!bin/*.vsix'
- '!webview-ui/**/__screenshots__/**'
# Source: Repository YAML (base)
path_instructions:
- path: '**/*'
instructions: Act as an adversarial second-opinion reviewer. Verify PR claims against implementation and contracts. Trace changed inputs through normal, boundary, error, cancellation, retry, and default paths and their consumers. Seek plausible counterexamples and regressions from removed safeguards. Identify assumptions in changed code that depend on facts outside the diff. First verify repository conventions, tests, and related implementations. When a potential finding depends on external behavior, use web search and prefer official documentation, specifications, or upstream repositories. Report only concrete, actionable conflicts or failure modes, citing the relevant repository location or external source. Prioritize correctness, security, data loss, lifecycle, and test gaps. Do not report generic best practices, unsupported concerns, speculative style comments, or unrelated refactors. Search for existing helpers before suggesting abstractions.
- path: '**/*.{ts,tsx,js,jsx,mts,mjs,cts,cjs}'
instructions: Check strict typing and exhaustive behavior across normal, boundary, error, cancellation, retry, and compatibility paths. Verify promises and errors are handled, existing helpers are reused, and new code introduces no `any`, unjustified double assertions, floating promises, duplicated helpers, or increased lint suppressions. When a refactor adds early-return guards that redirect a subset of inputs to a new code path, confirm the old branches for those inputs are removed or unreachable.
- path: '{**/*.{test,spec}.{ts,tsx,js,jsx},**/__tests__/**}'
instructions: 'Require regression coverage at the lowest valid harness with behavior-focused assertions, including relevant negative, error, false/unset, and boundary cases. Check cleanup and deterministic async behavior and prefer shared typed test helpers. Visible webview changes require a durable Playwright component snapshot; behavior-only changes do not. Reject weak assertions on values that could take multiple forms: .toBeDefined() or .toHaveBeenCalled() alone are not sufficient when the actual type, value, or object identity is verifiable. For listener registration and removal, assert the same function reference was added and removed (not expect.any(Function)). Flag tests that assert in-flight behavior only after the call completes — these cannot prove the behavior fires during execution. Check that describe block names match the actual subjects of the tests they contain. For tests that assert only mock call counts, confirm a corresponding return-value assertion exists; a regression that silently returns stale fallback data can satisfy a call-count check. For code with fallback behavior, verify both the cold-start case (no prior state) and the warm case (prior state exists) are covered, as they exercise different branches.'
- path: apps/vscode-e2e/**
instructions: Reserve end-to-end coverage for behavior that requires the real VS Code host, workspace APIs, extension activation, webview messaging, file watchers, or a full workflow. Keep detailed protocol, parsing, storage, retry, and edge cases at lower test layers.
- path: '{packages/types/src/**,webview-ui/src/components/settings/**,src/core/config/**,src/core/webview/**}'
instructions: For persisted settings, verify the complete schema/storage/runtime/webview round trip, shared default semantics, and focused true plus false/unset tests. SettingsView controls must read and update local `cachedState`, include the value in the explicit save payload, and receive the persisted value back from extension state.
- path: src/**
instructions: Verify extension/webview contracts, cancellation and error propagation, VS Code lifecycle correctness, and behavior under retries and partial failure. Check listeners, resources, and providers are disposed without stale state or duplicate work.
- path: webview-ui/**
instructions: Check React state and effect dependencies, cleanup, accessibility, i18n, and light/dark theme behavior. New markup should use Tailwind; add VS Code CSS variables to `src/index.css` before Tailwind use. Use Vitest for behavior and Playwright component snapshots only for durable visible changes.
- path: '{src/api/**,src/core/prompts/**,src/core/tools/**,src/services/mcp/**,src/services/destructive-command-guard/**}'
instructions: Treat model, provider, MCP, path, command, and tool data as untrusted. Check approval and allowlist bypasses, injection and traversal risks, secrets/PII exposure in logs, abort and stream behavior, retries, provider compatibility, and enforcement at execution time—not only at presentation or planning time.
- path: '{src/**/{state,history,task,tasks,service,services,cache,caches,worktree,worktrees}/**,packages/**/{state,history,task,tasks,service,services,cache,caches,worktree,worktrees}/**,webview-ui/src/**/{state,history,task,tasks,service,services,cache,caches,worktree,worktrees}/**}'
instructions: 'Check persistence and lifecycle invariants: awaited atomic writes, rollback or explicit partial-failure behavior, cross-window state consistency, stale listeners/watchers, cancellation, idempotency, and safe restart/resume without lost or duplicated state. For async functions that read shared mutable state before an `await` and write it back after, verify the captured reference is still valid when the write executes; a concurrent mutation during the await can cause a stale snapshot to overwrite a newer state.'
- path: .github/**
instructions: Require full commit SHA pins, least-privilege permissions, safe expression and shell interpolation, and trusted metadata handling. Privileged workflows must never check out, execute, install from, or otherwise trust a fork PR head.
- path: '{AGENTS.md,**/AGENTS.md,CONTRIBUTING.md,.changeset/**,CHANGELOG.md,src/CHANGELOG.md}'
instructions: 'Enforce repository policy: routine PRs must not add changesets or edit changelogs except during release preparation. Verify documentation describes real behavior and contracts, and deprioritize prose-only nits that do not affect correctness or usability.'
# Source: defaults
abort_on_close: true
# Source: defaults
disable_cache: false
slop_detection:
# Source: defaults
enabled: true
# Source: defaults
include_all_authors: false
auto_review:
# Source: Repository YAML (base)
enabled: false
# Source: defaults
description_keyword: ''
# Source: Repository YAML (base)
auto_incremental_review: true
# Source: Repository YAML (base)
auto_pause_after_reviewed_commits: 0
# Source: defaults
ignore_title_keywords: []
# Source: Repository YAML (base)
labels:
- coderabbit-review-active
# Source: Repository YAML (base)
drafts: false
# Source: defaults
base_branches: []
# Source: defaults
ignore_usernames: []
finishing_touches:
docstrings:
# Source: Repository YAML (base)
enabled: false
unit_tests:
# Source: defaults
enabled: true
simplify:
# Source: defaults
enabled: false
autofix:
# Source: defaults
enabled: true
fix_ci:
# Source: defaults
enabled: true
resolve_merge_conflict:
# Source: defaults
enabled: true
# Source: defaults
custom: []
pre_merge_checks:
# Source: Repository YAML (base)
override_requested_reviewers_only: true
docstrings:
# Source: Repository YAML (base)
mode: 'off'
# Source: defaults
threshold: 80
title:
# Source: Repository YAML (base)
mode: warning
# Source: defaults
requirements: ''
description:
# Source: Repository YAML (base)
mode: warning
issue_assessment:
# Source: Repository YAML (base)
mode: warning
# Source: Repository YAML (base)
custom_checks:
- mode: warning
name: Regression evidence
instructions: Fail only when a concrete changed behavior lacks focused coverage at the lowest valid test layer, tests merely mirror implementation, an affected error/negative/unset branch is omitted, or a durable visible UI change lacks its required Playwright component snapshot. Do not demand tests for unchanged behavior, mechanical configuration, or every branch without a plausible regression scenario. Cite the changed behavior and missing evidence.
- mode: error
name: Security boundaries
instructions: Fail only when a concrete changed path leaks secrets or PII, trusts or executes unvalidated input, or bypasses approval or allowlist controls. Cite the changed path and a plausible triggering scenario; pass when no such changed path exists.
- mode: error
name: Persistence integrity
instructions: Fail only when a concrete changed persistence path can lose or corrupt state because an operation is not awaited, a write is non-atomic, rollback or explicit partial-failure behavior is missing, or a persisted default is not propagated to a consumer. Cite the changed path and a plausible triggering scenario; pass when no such changed path exists.
- mode: error
name: Lifecycle resource cleanup
instructions: Fail only when a concrete changed lifecycle path can leak a listener, watcher, provider, timer, task, or other resource, or can duplicate work after cancellation, disposal, or restart. Cite the changed path and a plausible triggering scenario; pass when no such changed path exists.
# Source: defaults
post_merge_actions: []
tools:
ast-grep:
# Source: defaults
rule_dirs: []
# Source: defaults
util_dirs: []
# Source: defaults
essential_rules: true
# Source: defaults
packages: []
shellcheck:
# Source: Repository YAML (base)
enabled: true
ruff:
# Source: defaults
enabled: true
markdownlint:
# Source: defaults
enabled: true
github-checks:
# Source: Repository YAML (base)
enabled: true
languagetool:
# Source: defaults
enabled: true
# Source: defaults
enabled_rules: []
# Source: defaults
disabled_rules: []
# Source: defaults
enabled_categories: []
# Source: defaults
disabled_categories: []
# Source: defaults
enabled_only: false
# Source: defaults
level: default
biome:
# Source: defaults
enabled: true
hadolint:
# Source: defaults
enabled: true
swiftlint:
# Source: defaults
enabled: true
phpstan:
# Source: defaults
enabled: true
# Source: defaults
level: default
phpmd:
# Source: defaults
enabled: true
phpcs:
# Source: defaults
enabled: true
golangci-lint:
# Source: defaults
enabled: true
yamllint:
# Source: defaults
enabled: true
gitleaks:
# Source: Repository YAML (base)
enabled: true
trufflehog:
# Source: defaults
enabled: true
checkov:
# Source: defaults
enabled: true
tflint:
# Source: defaults
enabled: true
detekt:
# Source: defaults
enabled: true
eslint:
# Source: Repository YAML (base)
enabled: true
e18e:
# Source: defaults
enabled: true
flake8:
# Source: defaults
enabled: true
fbinfer:
# Source: defaults
enabled: true
# Source: defaults
enable_java: false
fortitudeLint:
# Source: defaults
enabled: true
rubocop:
# Source: defaults
enabled: true
buf:
# Source: defaults
enabled: true
regal:
# Source: defaults
enabled: true
actionlint:
# Source: Repository YAML (base)
enabled: true
zizmor:
# Source: defaults
enabled: true
pmd:
# Source: defaults
enabled: true
clang:
# Source: defaults
enabled: true
cppcheck:
# Source: defaults
enabled: true
vale:
# Source: defaults
enabled: true
verilator:
# Source: defaults
enabled: true
opengrep:
# Source: defaults
enabled: true
semgrep:
# Source: Repository YAML (base)
enabled: true
circleci:
# Source: defaults
enabled: true
clippy:
# Source: defaults
enabled: true
sqlfluff:
# Source: defaults
enabled: true
squawk:
# Source: defaults
enabled: true
trivy:
# Source: defaults
enabled: true
prismaLint:
# Source: defaults
enabled: true
pylint:
# Source: defaults
enabled: true
oxc:
# Source: defaults
enabled: true
shopifyThemeCheck:
# Source: defaults
enabled: true
luacheck:
# Source: defaults
enabled: true
brakeman:
# Source: defaults
enabled: true
dotenvLint:
# Source: defaults
enabled: true
htmlhint:
# Source: defaults
enabled: true
stylelint:
# Source: defaults
enabled: true
checkmake:
# Source: defaults
enabled: true
osvScanner:
# Source: defaults
enabled: true
oasdiff:
# Source: defaults
enabled: true
reactDoctor:
# Source: defaults
enabled: true
presidio:
# Source: defaults
enabled: true
blinter:
# Source: defaults
enabled: true
smartyLint:
# Source: defaults
enabled: true
emberTemplateLint:
# Source: defaults
enabled: true
skillspector:
# Source: defaults
enabled: true
psscriptanalyzer:
# Source: defaults
enabled: true
chat:
# Source: defaults
art: true
# Source: Repository YAML (base)
allow_non_org_members: false
# Source: defaults
auto_reply: true
integrations:
jira:
# Source: defaults
usage: auto
# Source: defaults
issue_template: ''
linear:
# Source: defaults
usage: auto
knowledge_base:
# Source: defaults
opt_out: false
web_search:
# Source: Repository YAML (base)
enabled: true
code_guidelines:
# Source: defaults
enabled: true
# Source: defaults
filePatterns: []
learnings:
# Source: Repository YAML (base)
scope: local
# Source: defaults
approval_delay: 0
issues:
# Source: defaults
scope: auto
jira:
# Source: defaults
usage: auto
# Source: defaults
project_keys: []
# Source: defaults
excluded_project_keys: []
linear:
# Source: defaults
usage: auto
# Source: defaults
team_keys: []
pull_requests:
# Source: defaults
scope: auto
mcp:
# Source: defaults
usage: auto
# Source: defaults
disabled_servers: []
# Source: defaults
automatic_linking_mode: disabled
# Source: defaults
automatic_repository_linking: false
# Source: defaults
linked_repositories: []
code_generation:
docstrings:
# Source: defaults
language: en-US
# Source: defaults
path_instructions: []
unit_tests:
# Source: defaults
path_instructions: []
issue_enrichment:
auto_enrich:
# Source: defaults
enabled: false
planning:
# Source: defaults
enabled: true
auto_planning:
# Source: defaults
enabled: true
# Source: defaults
labels: []
labeling:
# Source: defaults
labeling_instructions: []
# Source: defaults
auto_apply_labels: false
|
Related GitHub Issue
Requested by a maintainer in Discord (no tracking issue): CodeRabbit review currently waits for the entire required CI matrix, including the slow Windows test jobs, before it starts.
Description
The review-state reconciliation in
label-pr-review-state.ymlonly activated CodeRabbit after every required check passed. This change keeps the full-CI gate (state labels,Zoo Code / PR review gatestatus, review-guide messaging) exactly as it is, but computes a separate activation condition in the CI-pending branch: CodeRabbit is activated once all required checks except the Windows test jobs (platform-unit-test (windows-…)) have concluded successfully, provided nothing — including Windows — has failed.Details reviewers may care about:
/\(windows-[^)]*\)/match on the required check context, matching theplatform-unit-test (windows-latest)matrix job incode-qa.yml.coderabbit-review-label:<sha>marker, so when the remaining Windows jobs later go green the already-bound activation is kept instead of being recycled (which would re-trigger CodeRabbit on the same commit). An activation label left over from an older head is still recycled.Test Procedure
pnpm --dir src exec vitest run services/__tests__/pr-review-state-workflow.test.ts— 111 tests pass, including new coverage for: activation when Ubuntu passed and Windows is still running, no activation while Ubuntu is pending, no activation when Ubuntu failed, no activation when Windows failed, no recycling of an early activation bound to the current head, recycling from an older head, and unchanged all-tests-passed behavior.pnpm --dir src run check-types— clean.pnpm testfrom the repo root — passes (10/10 turbo tasks).Pre-Submission Checklist
*.visual.tsxsnapshot inwebview-ui/. Seewebview-ui/AGENTS.md→ "When a UI change needs a snapshot".Documentation Updates
Additional Notes
The state machine phases,
maintainerApprovedAfterAutomatedReviewordering, and gate descriptions are intentionally untouched; only the timing of thecoderabbit-review-activelabel changes.Get in Touch
Roomote (bot) — reach the requesting maintainer via the linked Discord thread above.