Skip to content

fix(ci): claude-review.yml cites the wrong pr-review phase numbers (bot cannot review this PR, needs a human) - #436

Merged
thomasluizon merged 2 commits into
mainfrom
fix/claude-review-phase-numbers
Jul 24, 2026
Merged

fix(ci): claude-review.yml cites the wrong pr-review phase numbers (bot cannot review this PR, needs a human)#436
thomasluizon merged 2 commits into
mainfrom
fix/claude-review-phase-numbers

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

This PR cannot be reviewed by claude-review. It needs a human approval.
claude-code-action refuses to run when the PR's own .github/workflows/claude-review.yml differs from the version on the default branch. It logs Skipping action due to workflow validation, reports the review check as passing, and posts nothing. Any PR that fixes this file is structurally unreviewable by the bot, so a green review check here means "did not run", not "approved". Verified on #435's first run (job 89580872900), which sat at reviewDecision: REVIEW_REQUIRED with all 21 checks green and zero reviews.

Split out of #435 for exactly that reason: this one file was dragging five unrelated fixes into an unreviewable PR. #435 now carries those five and gets a genuine bot verdict.

The defect

The ## CI adaptations block told the reviewer to skip "Phase 6 (dotnet build / test)" and "Phase 7 posting". Both numbers are off by one against the skill they point at.

Counted in .claude/skills/pr-review/SKILL.md, the document this workflow invokes:

line heading what it actually is
:182 ## Phase 6 - Verify findings (adversarial) the skeptic pass that decides which findings survive
:225 ## Phase 7 - Validate dotnet build / dotnet test, the block at :229-232
:240 ## Phase 8 - Report the report, whose ### Post to GitHub step is at :306

So, followed literally, CI skipped the adversarial verification pass and ran the dotnet validation it had been told to skip, which Build / Unit Tests / SonarCloud already cover as separate required checks. The exact inverse of the intent: the expensive redundant step ran, and the step that stops a false Critical from blocking a clean PR did not.

The skill's own caller-context note at :326-327 already said the right thing:

CI wrapper (.github/workflows/claude-review.yml) invokes this skill: ... In CI also skip Phase 7 (Validate) ... The Phase 6 adversarial pass still runs.

The workflow was contradicting the document it invokes.

The fix

Each instruction now carries the phase number and name, so a future phase insert cannot silently invert it again:

  • Skip the skill's Phase 7, "Validate" (dotnet build / test)
  • Skip the "Post to GitHub" step of the skill's Phase 8, "Report", with a note that the skill still writes the report file that Step 2 posts
  • a new explicit line: RUN the skill's Phase 6, "Verify findings (adversarial)" in full, saying why, and noting that only its cross-model second opinion degrades in CI (the skill already handles that as UNAVAILABLE)

Also in this diff

The file's seven banned em dashes are removed and its tools/dash-baseline.json entry dropped, because the Dash Ban gate reads the whole file on any PR that touches it. Dash Ban passes on this branch independently (--files clean, --check-baseline clean), as it does on #435 with the baseline entry left intact there.

The anthropics/claude-code-action SHA is current main's (e0cf66d, from #432); this PR does not change it.

Provenance

Recorded as item 2 of "Open follow-ups carried out of Phase 6" in orbit-ui-mobile/REBUILD.md section 14.

The CI adaptations told the reviewer to skip "Phase 6 (dotnet build / test)" and
"Phase 7 posting". Both numbers were off by one against the skill they point at,
.claude/skills/pr-review/SKILL.md:

  :182  ## Phase 6, Verify findings (adversarial)
  :225  ## Phase 7, Validate  (dotnet build / dotnet test at :229-232)
  :240  ## Phase 8, Report    (the Post to GitHub step at :306)

Followed literally, CI skipped the adversarial skeptic pass, the one thing that
decides which findings survive, and ran the dotnet validation it had been told to
skip and that Build / Unit Tests / SonarCloud already cover. The exact inverse of
the intent. The skill's own caller-context note at :326-327 already said the right
thing ("In CI also skip Phase 7 (Validate) ... The Phase 6 adversarial pass still
runs"), so the workflow was contradicting the document it invokes.

Each instruction now carries the number AND the phase name, and an explicit line
tells CI to RUN Phase 6, so a future phase insert cannot silently invert this again.

Also removes the file's seven banned em dashes and its dash-baseline entry, since
the gate reads the whole file on any PR that touches it.

Split out of #435 on purpose: claude-code-action refuses to run on a PR whose
claude-review.yml differs from the default branch, so any PR carrying this file
gets no automated review. Keeping it alone means the other five fixes in #435 stay
reviewable.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018M2vH4pDvNnxUPecWWvwBc
@sonarqubecloud

Copy link
Copy Markdown

@thomasluizon
thomasluizon merged commit 3b22306 into main Jul 24, 2026
22 checks passed
@thomasluizon
thomasluizon deleted the fix/claude-review-phase-numbers branch July 24, 2026 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant