Skip to content

feat(review): return a hold only for the cost, trust-gate and critical-security classes - #9342

Merged
kyle-sexton merged 2 commits into
mainfrom
feat/review-hold-criteria
Oct 23, 2026
Merged

kyle-sexton merged 2 commits into
mainfrom
feat/review-hold-criteria

Conversation

@kyle-sexton

Copy link
Copy Markdown
Member

Refs: #9276

Summary

PR 7 of the native-merge plan. The review lanes in ci-workflows v0.64.0 pr-review-cli.yml accept an optional hold field (criteria from cost, trust-gate, critical-security, plus a reason), and the prompt tells the model to return one "only when the review command says to hold the pull request for a person". Until now neither review skill said when to do that. This PR adds that rule.

Fix

  • /review:code-review: return hold only for cost (a change that adds or raises model or API spend, the class /source-control:babysit-prs rates cost-review-required), trust-gate (.github/standards/trusted-actors/**, .github/actions/check-trusted-trigger/**, CODEOWNERS, .gitmodules), and critical-security only where no security lane runs. A change in a hold class is no longer eligible for the trivial-change skip.
  • /review:security-review: return hold only for critical-security (CRITICAL only, per owner answer OD-4) and trust-gate.
  • Both skills: a hold is not a finding and adds nothing to the findings or critical-findings count. Every other flag, manifest flag lines included, stays a normal finding. With no hold field in the schema (older wrappers, seat-run mode), the skills return none. The skills write no Hold: lines.
  • Changelog fragment .changes/review/, bump: minor.

Verification

  • /skill-quality:check on both skills: PASS, 0 errors. The warnings were already there (body length, no ## Next) apart from the expected body-growth warning.
  • scripts/check-affected.sh --tests: 12 passed, 2 skipped (no shell, no Python changed).
  • The canary that checks a hold returned by the model runs with PR 6 / PR 8, as the plan describes.

Related

🤖 Generated with Claude Code

…l-security classes

The review lanes' structured output gained an optional hold field. Both
review skills now fill it only for the owner's hold classes: cost (code
lane), trust-gate, and critical-security (CRITICAL only; the code lane
only where no security lane runs). A hold adds nothing to the findings
count, and every other flag stays a normal finding. A change in a hold
class is no longer eligible for the code lane's trivial-change skip.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review October 23, 2026 05:24
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-23T05:25:57.333396Z 9f75cdb Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Comment thread plugins/review/skills/security-review/SKILL.md
…urface skip

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

claude-security-review reviewed a0a06fde3b0786aad5831a273aa18250cf55b323: 0 finding(s), 0 as inline comments.

No security issues found in this pull request at a0a06fd.

I read the full diff. It touches three files: a changelog fragment, plugins/review/skills/code-review/SKILL.md and plugins/review/skills/security-review/SKILL.md.

  • Instruction-surface lens: The diff deletes, narrows or softens no standing instruction. It adds a hold rule and tightens two skip gates. A trust-gate change is no longer eligible for the security lane's no-surface skip, and a change in a hold class is no longer eligible for the code lane's trivial-change skip. Both gate changes make review more likely, not less. I did not read docs/conventions/instruction-exception-register/README.md; no rule was removed, so there was nothing to check against it.
  • Hold escalation: The new hold field only routes a pull request to a person. A model that is manipulated into omitting it falls back to the existing path-based trust-gate enforcement and the critical-findings gate. The skills keep CRITICAL findings counted and carrying their severity: CRITICAL line, so the hold adds no bypass.
  • Embedded instructions: The skill text adds no new way for the pull request body or context to instruct the lane. The existing DATA framing is unchanged.
  • Manifests: No plugin.json or marketplace.json file changed, so there are no manifest <field> lines.

critical-findings: 0

@github-actions

Copy link
Copy Markdown
Contributor

claude-review reviewed a0a06fde3b0786aad5831a273aa18250cf55b323: 0 finding(s), 0 as inline comments.

No findings.

I read the whole diff (3 files) and the PR context. Neither the PR body nor the issue context asks for anything beyond what the diff does.

  • plugins/review/skills/code-review/SKILL.md: The skip-gate change and the new "Hold for a person" section agree with each other. critical-security is limited to repositories with no security lane, which matches the Gotchas section. The section says a hold adds nothing to the findings count and that manifest <field>: flag lines stay normal findings.
  • plugins/review/skills/security-review/SKILL.md: The trust-gate carve-out in skip-gate item 2 matches the new Reporting section. The hold adds to neither the severity: CRITICAL line nor critical-findings: <n>.
  • Volatile-specific rule: Both pointers to the ci-workflows hold schema carry an as-of date and a recheck trigger, as .claude/rules/skill-bodies-state-current-rules.md requires.
  • Changelog fragment: It is present under .changes/review/ with bump: minor. A new optional output behavior fits that level.

I did not fetch the pinned ci-workflows v0.64.0 schema, so I could not confirm that the hold shape and the cost, trust-gate and critical-security names match it. That rests on the PR description (author-claimed). I also did not run the skill-quality check or the affected-tests run that the PR's Verification section reports, so those results are unverified by me.

@kyle-sexton
kyle-sexton added this pull request to the merge queue Oct 23, 2026
Merged via the queue into main with commit ff74589 Oct 23, 2026
29 checks passed
@kyle-sexton
kyle-sexton deleted the feat/review-hold-criteria branch October 23, 2026 05:53
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