Repository navigation
ci: re-applying the deep-review label re-runs the deep review - #281
Conversation
The per-PR dedupe marker made the label a one-shot: once a PR carried <!-- claude-deep-review -->, relabeling was a silent no-op, so there was no way to get a fresh opus review after new commits or prompt upgrades. deep-review labeled events (already live-verified as triage+) now skip the marker probe — one opus session per deliberate label application. The ai-loop path and label-at-creation double-fire keep the one-review invariant unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pohc8xLkdx4gwXkW3xd7up
WalkthroughThe deep-review workflow now reruns when the ChangesDeep-review label re-application
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Preview DeploymentPreview URL: https://082e7263.bestax.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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 @.github/workflows/claude-review.yml:
- Around line 98-120: The deduplication bypass in the “Skip if already reviewed”
step allows initial deep-review label events to evade the marker probe and run
duplicate reviews. Update the labeled deep-review handling to distinguish
deliberate re-labels from label-at-creation events, preserving the probe for
initial labels, and revise the surrounding one-review-invariant comment to match
the corrected behavior.
🪄 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: CHILL
Plan: Pro Plus
Run ID: df100a70-29f9-49f0-96c7-acf64f41c544
📒 Files selected for processing (3)
.github/workflows/claude-review.ymlCLAUDE.mddocs/docs/guides/getting-started/ai-development.md
| # | ||
| # EXCEPTION — deep-review `labeled` events skip the probe: a triage+ | ||
| # human re-applying the label (verified live by the perm step above) | ||
| # is an explicit "run a fresh review" request, e.g. after new commits | ||
| # or a prompt upgrade. Usage stays human-metered: one opus session per | ||
| # deliberate label application. The ai-loop path and label-at-creation | ||
| # double-fires keep the one-review invariant. | ||
| - name: Skip if already reviewed | ||
| id: dedupe | ||
| if: steps.perm.outputs.allowed == 'true' | ||
| env: | ||
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| REPO: ${{ github.repository }} | ||
| PR: ${{ github.event.pull_request.number }} | ||
| ACTION: ${{ github.event.action }} | ||
| LABEL: ${{ github.event.label.name }} | ||
| run: | | ||
| set -euo pipefail | ||
| if [ "$ACTION" = "labeled" ] && [ "$LABEL" = "deep-review" ]; then | ||
| echo "skip=false" >> "$GITHUB_OUTPUT" | ||
| echo "deep-review label applied by a verified triage+ user — running a fresh review" | ||
| exit 0 | ||
| fi |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Inspect the trigger/concurrency config and the (unchanged) header comment
# referenced elsewhere as lines 10-17, to confirm the double-fire premise.
sed -n '1,45p' .github/workflows/claude-review.ymlRepository: allxsmith/bestax
Length of output: 2068
🏁 Script executed:
#!/bin/bash
set -euo pipefail
nl -ba .github/workflows/claude-review.yml | sed -n '45,170p'Repository: allxsmith/bestax
Length of output: 194
🏁 Script executed:
#!/bin/bash
set -euo pipefail
awk 'NR>=45 && NR<=170 { printf "%4d %s\n", NR, $0 }' .github/workflows/claude-review.ymlRepository: allxsmith/bestax
Length of output: 6701
deep-review relabel bypass breaks the one-review invariant
- The
ACTION == 'labeled' && LABEL == 'deep-review'fast path skips the marker probe, so a PR created withdeep-reviewalready attached still fires bothopenedandlabeledand runs Claude twice. Keep the probe here, or gate this bypass on a signal that distinguishes a deliberate re-label from the initial label-at-creation event. - The surrounding comment about the marker capping reviews at one per PR is now inaccurate and should be updated too.
🤖 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/claude-review.yml around lines 98 - 120, The deduplication
bypass in the “Skip if already reviewed” step allows initial deep-review label
events to evade the marker probe and run duplicate reviews. Update the labeled
deep-review handling to distinguish deliberate re-labels from label-at-creation
events, preserving the probe for initial labels, and revise the surrounding
one-review-invariant comment to match the corrected behavior.
Source: Learnings
|
🎉 This PR is included in version 3.2.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 5.4.1 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
|
🎉 This PR is included in version 1.0.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
Pull Request
Description
The
deep-reviewlabel was a strict one-shot: once a PR carried the<!-- claude-deep-review -->marker, re-applying the label was a silent no-op, so there was no way to get a fresh opus review after new commits landed or after the review prompt improved. This PR makes adeep-reviewlabeled event skip the marker probe — re-applying the label is an explicit "run a fresh review" request from a human whose triage+ role the workflow already re-verifies live.Cost model is unchanged in spirit: one opus session per deliberate label application, human-metered. The AI-loop path and the label-at-creation double-fire keep the original one-review invariant (their dedupe is untouched), so the loop can never re-trigger reviews on itself.
Also updates the two docs that stated "once ever per PR": the label table in
docs/docs/guides/getting-started/ai-development.mdand the rootCLAUDE.mdloop section — both now say "re-apply to re-run".@allxsmith/bestax-bulma)create-bestax)@allxsmith/bestax-docs).github/workflows/claude-review.yml) + docsRelated Issue(s)
Refs #273
Type of Change
Checklist
CLAUDE.mdfiles are updatedScreenshots / Demos
n/a
Additional Context
ai-loop(or withdeep-reviewpre-attached) → dedupe as before, one review;ai-looplabeled → dedupe as before;deep-reviewlabeled → always runs a fresh review (after the live permission re-check; non-triage labelers remain a silent no-op).claude-review.yml, so — like ci: point loop agents at conformance gates; component proposal issue form #270 — the deep-review workflow's own tamper guard prevents it from reviewing this PR. CodeRabbit covers it.🤖 Generated with Claude Code
https://claude.ai/code/session_01Pohc8xLkdx4gwXkW3xd7up
Generated by Claude Code
Summary by CodeRabbit
New Features
deep-reviewlabel now triggers another deep review for a pull request.Documentation
deep-reviewlabel behavior.