ci: run central PR maintenance every hour - #738
Conversation
|
Warning Review limit reached
Next review available in: 39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
Comment |
|
Maintainer review found that the reusable workflow was SHA-pinned but the review-fix job still checked out its Python implementation from mutable Independent verification: 3 focused tests passed, Python line coverage 100%, docstrings 5/5, and the caller retains the exact permission union with no admin/ruleset bypass path. @coderabbitai review |
🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '== Candidate workflow, test, and documentation files =='
fd -t f . | rg -i '(^|/)(\.github/workflows/.*|.*(workflow|scheduler|review.?fix|merge|contract|ci).*\.(ya?ml|py|md))$' | sort
printf '%s\n' '== References to canonical_ref and central workflow pins =='
rg -n -C 4 --glob '*.{yml,yaml,py,md}' \
'(canonical_ref|ContextualWisdomLab/\.github/\.github/workflows|5983b41ace75040c1d81818171ca7d0f3653254e)' \
. || trueLength of output: 7389 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '== Hourly maintenance workflow candidates, including hidden paths =='
find .github -type f \( -name '*.yml' -o -name '*.yaml' \) -print 2>/dev/null | sort
find . -path '*/.github/workflows/*' -type f \( -name '*.yml' -o -name '*.yaml' \) -print 2>/dev/null | sort
printf '%s\n' '== Python test structure =='
ast-grep outline services/analysis-engine/tests/test_hourly_pr_maintenance_workflow.py --items all
printf '%s\n' '== Changed files in this PR =='
git diff --name-status "$(git merge-base HEAD origin/develop)" HEAD 2>/dev/null || git diff --name-status HEAD~1 HEAD
printf '%s\n' '== Full contract test =='
cat -n services/analysis-engine/tests/test_hourly_pr_maintenance_workflow.py
printf '%s\n' '== Relevant scheduler documentation =='
sed -n '1,110p' docs/workflow/pr-review-merge-scheduler.mdLength of output: 11636 🏁 Script executed: #!/bin/bash
set -euo pipefail
printf '%s\n' '== Hourly caller structure =='
ast-grep outline .github/workflows/hourly-pr-maintenance.yml --items all || true
printf '%s\n' '== Hourly caller =='
cat -n .github/workflows/hourly-pr-maintenance.yml
printf '%s\n' '== PR diff against develop =='
base="$(git merge-base HEAD origin/develop 2>/dev/null || true)"
if [ -n "$base" ]; then
git diff --check "$base" HEAD
git diff --unified=80 "$base" HEAD -- \
.github/workflows/hourly-pr-maintenance.yml \
services/analysis-engine/tests/test_hourly_pr_maintenance_workflow.py \
docs/workflow/pr-review-merge-scheduler.md
else
git diff --check HEAD~1 HEAD
git diff --unified=80 HEAD~1 HEAD -- \
.github/workflows/hourly-pr-maintenance.yml \
services/analysis-engine/tests/test_hourly_pr_maintenance_workflow.py \
docs/workflow/pr-review-merge-scheduler.md
fi
printf '%s\n' '== Reusable-workflow caller conventions =='
rg -n -C 3 --glob '.github/workflows/*.{yml,yaml}' \
'^(permissions:|workflow_dispatch:|[[:space:]]*uses: .*\.github/workflows/|[[:space:]]*secrets: inherit)' \
.github/workflowsLength of output: 20201 🏁 Script executed: #!/bin/bash
set -euo pipefail
repo="ContextualWisdomLab/.github"
ref="5983b41ace75040c1d81818171ca7d0f3653254e"
for path in \
".github/workflows/pr-review-fix-scheduler.yml" \
".github/workflows/pr-review-merge-scheduler.yml"
do
printf '\n== %s at %s ==\n' "$path" "$ref"
gh api \
-H "Accept: application/vnd.github.raw+json" \
"/repos/${repo}/contents/${path}?ref=${ref}"
doneLength of output: 58521
Update the central reusable workflow so that ✏️ Learnings added
✅ Action performedReview finished.
|
Pull request was converted to draft
| cancel-in-progress: false | ||
|
|
||
| permissions: | ||
| actions: write |
| permissions: | ||
| actions: write | ||
| checks: read | ||
| contents: write |
|
Closing as superseded by ContextualWisdomLab/.github#704. The organization-level reusable review-fix scheduler now owns the hourly cadence and one-hour same-head retry while binding privileged code to |
Pull request was closed
What
Add a thin hourly caller that invokes the source-pinned central review-fix scheduler and then the central review-and-merge scheduler for BandScope's
developqueue.Why
Open PRs can become review-ready or check-ready after their last repository event. The central required scheduler already owns review and merge policy, but BandScope needs an explicit one-hour heartbeat for review feedback fixes and a deterministic follow-up merge pass.
Behavior
ContextualWisdomLab/.github; BandScope contains only the reusable-workflow caller and contract tests.Verification
3 passedfor the focused workflow contract tests.5983b41ace75040c1d81818171ca7d0f3653254e.Security Notes