Review Radius
Fix the pattern behind the comment. Treat review comments as observations of a
possible defect class, not as a work queue and not as the complete defect
surface. Keep inspection broad enough to establish impact, but keep edits inside
the approved PR boundary unless the user explicitly authorizes an expansion.
This routing description helps a host select the Skill for GitHub PR feedback.
The Skill cannot monitor, dispatch, call, or invoke itself when it was not
selected.
Mandatory entry path
For every session that may patch code or request another automated review:
- initialize persisted state with
scripts/session_control.py before changing
code;
- read
Executable session control before
the first controller command;
- read Review governor before projecting
architecture, impact, verification, or patch signals;
- reconstruct prior PR history with
Review campaign when the PR already has
review/fix history;
- use a successful current-head controller guard immediately before every patch
and automated review request;
- never reinterpret a denied, stale, malformed, blocked, or incomplete result as
permission to continue.
Review governor is the single normative
human/agent policy for patch authority, evidence precedence, fuse, impact,
strategy, and convergence decisions. The controller executes that policy; the
compact skill and detailed references do not redefine it.
The controller owns session identity, repository and PR binding, base/current
head, immutable cutoff, fixed deadline, initial thread set, deferred feedback,
patch rounds, fuse budget, named pauses, scope fingerprint, governor result, and
single-use action authorization. Do not reconstruct or rewrite those fields from
model memory.
Non-negotiable controls
- Patch authority: only a fresh
CONTINUE_LOCAL decision followed by a
successful guard --action patch permits an automatic edit. Consume its
single-use token with record-patch after an immutable new head exists.
- Review retrigger authority: request another automated review only after a
fresh
CONVERGED decision and successful
guard --action request-review. The controller permits at most one request
per head.
- Fuse: the default automatic patch budget is two rounds. A third required
patch is denied as
AUTOMATION_FUSE_EXHAUSTED. A recorded user direction may
extend the budget; it never resets earlier rounds.
- Frozen admission: feedback created after the immutable cutoff is not part
of the current batch. Later non-blocking feedback remains deferred. Later
blocking feedback creates a named pause. Deferred feedback is not a queue and
must not be consumed by the current session.
- Snapshot binding: a new head invalidates earlier architecture and QA pass
evidence. Rebind, re-inspect, re-project, and re-verify before another action.
- Pause authority: a named pause is cleared only through the recorded
direction and unchanged-head/scope path defined by the controller. A fresh
Session ID, campaign
OPEN, adjacency, or a valid new comment is not
authorization.
- GitHub writes: explicit user authority or an end-to-end response request is
still required. Re-read the remote head immediately before every reaction,
reply, resolution, review request, commit, or push; do not reuse one read for
a later mutation.
Review Campaign
A Review Campaign preserves cumulative PR review/fix lineage across bounded
sessions. Starting a new session never resets campaign history, cumulative
churn, an unresolved strategy pause, or controller-owned patch rounds. A new
session is not a fuse reset and a fresh Session ID is never automatic
authorization.
A paused session cannot be CONVERGED until every named review-convergence pause
is resolved or recorded explicit user direction selects an explicit follow-up
or successor Review Session and the Review Campaign independently permits it.
The campaign may remain OPEN when only the active session needs direction. The
QA verdict remains independent: the QA verdict does not create or resolve a
review-convergence pause.
Read Review campaign for successor-session and
explicit-follow-up dispositions, finding-origin classification, campaign
lineage, and strategy-resume rules.
Evidence before action
Build a current-head Architecture Context Packet before asking for action
authority. Keep these planes separate:
- Patch: violated invariant, validated defect class, affected candidates,
negative/error/cleanup paths, and whether code or behavior must change.
- Impact: reachable callers, consumers, contracts, state, ownership,
runtime flows, dynamic surfaces, and the defect-frontier trend.
- Architecture: original goal and non-goals, approved boundary, baseline,
mechanism or strategy premises, risk, dependency/contract effects, and an
independently assessed architecture verdict.
- Verification: focused tests, canonical gates, runtime observations,
independent review, Traceknot when required, evidence freshness, and each
obligation's
complete, incomplete, or blocked status.
Project patch_required and obligations_blocked as independent booleans.
patch_required: false does not prove convergence, QA success, or delivery.
obligations_blocked: false means required work is available, not complete.
Defect-frontier identity is:
(invariant_id, mechanism_id, boundary_id, obligation_id)
Comments, replies, duplicate clusters, files, line counts, and patch counts are
evidence, not frontier units.
Feedback admission summary
- Current: every actionable item in the initial frozen batch whose own
immutable
createdAt is at or before the cutoff, including initial
non-blocking feedback; same-class blocking feedback created by the cutoff may
join only when the frozen rules and remaining authority permit it.
- Deferred: later non-blocking comments or replies. Record them outside the
current batch with
admitted_to_current_session: false.
- Pause: a post-cutoff blocking item, new defect class, material scope or
contract expansion, new strategy decision, unavailable mandatory evidence,
or required patch after fuse exhaustion.
- No-code disposition: duplicate, reply-only, informational, invalid, or
already-addressed feedback does not consume a patch round, but still requires
current-head evidence before a GitHub response write.
Classify every credible candidate as affected, safe, uncertain, or
out-of-scope, with provenance and differentiating evidence. Report a confirmed
operational out-of-scope defect immediately as evidence-only; it authorizes
neither an edit nor follow-up work. Any follow-up requires recorded explicit
user direction and independent Review Campaign permission.
Compact execution loop
- Bind: identify repository, PR, base/head, worktree, scope, user authority,
prior campaign history, server-comparable cutoff, fixed deadline, and initial
thread IDs; initialize controller state.
- Read: fetch thread-aware review state, immutable arrival metadata,
resolved/outdated state, review submissions, and current checks.
- Cluster: map every item to a defect class or explicit no-code disposition;
keep duplicate thread IDs visible without counting them as new work units.
- Validate: determine whether feedback is correct, incorrect, ambiguous,
duplicate, informational, or already addressed. Use an independent pass for
security, data, operations, architecture, compatibility, concurrency, or
regression-sensitive claims.
- Audit: inspect the reported path, negative/error/cleanup branches,
siblings, callers, callees, producers, consumers, tests, configuration,
migrations, and semantic analogues inside the evidence boundary.
- Project: refresh the Architecture Context Packet, per-head impact delta,
frontier, obligations, architecture verdict, and governor inputs; submit them
through the controller for the observed head.
- Guard: request the intended action. Any nonzero controller exit means stop
the action and report the exact decision or state defect.
- Patch: when authorized, implement the smallest cause-level fix, add
invariant-focused tests, reread the complete diff, and perform an independent
post-implementation architecture/impact review.
- Verify and deliver: run focused and canonical pre-push checks, push
normally, require the remote head to equal the recorded commit, then rerun
required pushed-head verification from a clean snapshot when needed.
- Respond and reconcile: guard any automated review request, perform
per-write head checks, reply or resolve only completed threads, admit feedback
once at the fixed deadline, reevaluate the governor, and stop rather than
forming an unbounded response loop.
Reference routing
Do not load every detailed policy file by default. Read only the material needed
for the current decision.
| Situation |
Required material |
| Initialize, inspect, project, guard, patch, defer, pause, resume, or request review |
Executable session control |
| Decide patch authority, architecture evidence, frontier trend, coverage, blocked obligations, fuse, or convergence |
Review governor |
| Reconstruct multiple sessions, finding origin, cumulative churn, strategy reset, or campaign resume |
Review campaign |
Use rg, AST, LSP, Graphify, or runtime evidence |
Code navigation and evidence routing |
| Need detailed intake, classification, build-versus-buy, GitHub-write, pushed-head, bounded-recheck, risk, Traceknot, completion, or report rules |
Detailed operational policy |
For the detailed operational policy, locate headings first.
Read only the relevant section from that file, for example:
rg '^## |^[0-9]+\.' <skill>/operational-policy.md
The detailed file preserves the complete pre-refactor contract so edge cases and
existing integrations remain available without loading them into every session.
Navigation discipline
Use the smallest capability that answers the question:
rg for literal/configuration discovery;
- AST for syntax-shaped analogues;
- LSP for symbol relationships;
- a fresh bounded code graph for direct or transitive candidates;
- runtime evidence for behavior that static inspection cannot establish.
Record capability, freshness, fallback, coverage gap, provenance, and candidate
disposition. A text hit, inferred graph edge, or unsupported dynamic surface is
a lead, not proof.
Risk and QA handoff
Classify the highest applicable risk before selecting obligations:
R0: documentation or inert metadata;
R1: localized low-impact implementation;
R2: runtime behavior, persistence, UI, concurrency, security,
compatibility, or public-contract change;
R3: release, migration, destructive operation, production infrastructure,
or unknown material scope.
Traceknot is required for R2, R3, and recurring review loops; it remains
optional for ordinary lower-risk sessions. Its verdict does not own review
convergence, GitHub thread resolution, architecture, or delivery. An unavailable
required handoff is BLOCKED; an available but unfinished handoff is
INCOMPLETE. Neither is a pass.
Independent outcomes
Report these independently:
- review convergence;
- deterministic governor decision;
- architecture verdict;
patch_required;
obligations_blocked and per-obligation status;
- QA verdict;
- delivery state.
Overall completion requires a current-head CONVERGED decision after complete
obligations and acceptable QA, an acceptable architecture verdict, campaign and
session convergence, pushed-head verification where applicable, the bounded
final recheck, and the authorized delivery state. A clean thread list, green
check, no requested patch, or exhausted fuse is not a substitute for those
conditions.
Final report
Include the campaign/session identity and lineage, frozen and current heads,
cutoff/deadline, admitted and deferred feedback, named pauses, duplicate
clusters, defect classes, search boundary, candidate ledger, packet and impact
delta, frontier identity/trend, obligations, controller decisions and tokens
consumed, patch rounds/budget, commits, tests, gates, per-write head checks,
GitHub responses, residual gaps, and the independent outcomes above.
When no related defect is found, report the exact surfaces, patterns, and
capabilities checked rather than stating only that none was found.
1---2name: review-radius3description: Handle repeated GitHub PR review/fix cycles, GitHub PR review churn, and non-converging GitHub PR feedback end to end when asked to inspect or address review comments, requested changes, unresolved threads, or follow-up reviews; validate each comment, derive the underlying invariant, audit related code for the same defect class, implement bounded fixes, and report independent review, QA, and delivery states.4---56# Review Radius78Fix the pattern behind the comment. Treat review comments as observations of a9possible defect class, not as a work queue and not as the complete defect10surface. Keep inspection broad enough to establish impact, but keep edits inside11the approved PR boundary unless the user explicitly authorizes an expansion.1213This routing description helps a host select the Skill for GitHub PR feedback.14The Skill cannot monitor, dispatch, call, or invoke itself when it was not15selected.1617## Mandatory entry path1819For every session that may patch code or request another automated review:2021- initialize persisted state with22 [`scripts/session_control.py`](scripts/session_control.py) before changing23 code;24- read25 [Executable session control](references/executable-session-control.md) before26 the first controller command;27- read [Review governor](references/review-governor.md) before projecting28 architecture, impact, verification, or patch signals;29- reconstruct prior PR history with30 [Review campaign](references/review-campaign.md) when the PR already has31 review/fix history;32- use a successful current-head controller guard immediately before every patch33 and automated review request;34- never reinterpret a denied, stale, malformed, blocked, or incomplete result as35 permission to continue.3637[Review governor](references/review-governor.md) is the single normative38human/agent policy for patch authority, evidence precedence, fuse, impact,39strategy, and convergence decisions. The controller executes that policy; the40compact skill and detailed references do not redefine it.4142The controller owns session identity, repository and PR binding, base/current43head, immutable cutoff, fixed deadline, initial thread set, deferred feedback,44patch rounds, fuse budget, named pauses, scope fingerprint, governor result, and45single-use action authorization. Do not reconstruct or rewrite those fields from46model memory.4748## Non-negotiable controls4950- **Patch authority:** only a fresh `CONTINUE_LOCAL` decision followed by a51 successful `guard --action patch` permits an automatic edit. Consume its52 single-use token with `record-patch` after an immutable new head exists.53- **Review retrigger authority:** request another automated review only after a54 fresh `CONVERGED` decision and successful55 `guard --action request-review`. The controller permits at most one request56 per head.57- **Fuse:** the default automatic patch budget is two rounds. A third required58 patch is denied as `AUTOMATION_FUSE_EXHAUSTED`. A recorded user direction may59 extend the budget; it never resets earlier rounds.60- **Frozen admission:** feedback created after the immutable cutoff is not part61 of the current batch. Later non-blocking feedback remains deferred. Later62 blocking feedback creates a named pause. Deferred feedback is not a queue and63 must not be consumed by the current session.64- **Snapshot binding:** a new head invalidates earlier architecture and QA pass65 evidence. Rebind, re-inspect, re-project, and re-verify before another action.66- **Pause authority:** a named pause is cleared only through the recorded67 direction and unchanged-head/scope path defined by the controller. A fresh68 Session ID, campaign `OPEN`, adjacency, or a valid new comment is not69 authorization.70- **GitHub writes:** explicit user authority or an end-to-end response request is71 still required. Re-read the remote head immediately before every reaction,72 reply, resolution, review request, commit, or push; do not reuse one read for73 a later mutation.7475## Review Campaign7677A Review Campaign preserves cumulative PR review/fix lineage across bounded78sessions. Starting a new session never resets campaign history, cumulative79churn, an unresolved strategy pause, or controller-owned patch rounds. A new80session is not a fuse reset and a fresh Session ID is never automatic81authorization.8283A paused session cannot be `CONVERGED` until every named review-convergence pause84is resolved or recorded explicit user direction selects an explicit follow-up85or successor Review Session and the Review Campaign independently permits it.86The campaign may remain `OPEN` when only the active session needs direction. The87QA verdict remains independent: the QA verdict does not create or resolve a88review-convergence pause.8990Read [Review campaign](references/review-campaign.md) for successor-session and91explicit-follow-up dispositions, finding-origin classification, campaign92lineage, and strategy-resume rules.9394## Evidence before action9596Build a current-head Architecture Context Packet before asking for action97authority. Keep these planes separate:9899- **Patch:** violated invariant, validated defect class, affected candidates,100 negative/error/cleanup paths, and whether code or behavior must change.101- **Impact:** reachable callers, consumers, contracts, state, ownership,102 runtime flows, dynamic surfaces, and the defect-frontier trend.103- **Architecture:** original goal and non-goals, approved boundary, baseline,104 mechanism or strategy premises, risk, dependency/contract effects, and an105 independently assessed architecture verdict.106- **Verification:** focused tests, canonical gates, runtime observations,107 independent review, Traceknot when required, evidence freshness, and each108 obligation's `complete`, `incomplete`, or `blocked` status.109110Project `patch_required` and `obligations_blocked` as independent booleans.111`patch_required: false` does not prove convergence, QA success, or delivery.112`obligations_blocked: false` means required work is available, not complete.113114Defect-frontier identity is:115116```text117(invariant_id, mechanism_id, boundary_id, obligation_id)118```119120Comments, replies, duplicate clusters, files, line counts, and patch counts are121evidence, not frontier units.122123## Feedback admission summary124125- **Current:** every actionable item in the initial frozen batch whose own126 immutable `createdAt` is at or before the cutoff, including initial127 non-blocking feedback; same-class blocking feedback created by the cutoff may128 join only when the frozen rules and remaining authority permit it.129- **Deferred:** later non-blocking comments or replies. Record them outside the130 current batch with `admitted_to_current_session: false`.131- **Pause:** a post-cutoff blocking item, new defect class, material scope or132 contract expansion, new strategy decision, unavailable mandatory evidence,133 or required patch after fuse exhaustion.134- **No-code disposition:** duplicate, reply-only, informational, invalid, or135 already-addressed feedback does not consume a patch round, but still requires136 current-head evidence before a GitHub response write.137138Classify every credible candidate as `affected`, `safe`, `uncertain`, or139`out-of-scope`, with provenance and differentiating evidence. Report a confirmed140operational out-of-scope defect immediately as evidence-only; it authorizes141neither an edit nor follow-up work. Any follow-up requires recorded explicit142user direction and independent Review Campaign permission.143144## Compact execution loop145146- **Bind:** identify repository, PR, base/head, worktree, scope, user authority,147 prior campaign history, server-comparable cutoff, fixed deadline, and initial148 thread IDs; initialize controller state.149- **Read:** fetch thread-aware review state, immutable arrival metadata,150 resolved/outdated state, review submissions, and current checks.151- **Cluster:** map every item to a defect class or explicit no-code disposition;152 keep duplicate thread IDs visible without counting them as new work units.153- **Validate:** determine whether feedback is correct, incorrect, ambiguous,154 duplicate, informational, or already addressed. Use an independent pass for155 security, data, operations, architecture, compatibility, concurrency, or156 regression-sensitive claims.157- **Audit:** inspect the reported path, negative/error/cleanup branches,158 siblings, callers, callees, producers, consumers, tests, configuration,159 migrations, and semantic analogues inside the evidence boundary.160- **Project:** refresh the Architecture Context Packet, per-head impact delta,161 frontier, obligations, architecture verdict, and governor inputs; submit them162 through the controller for the observed head.163- **Guard:** request the intended action. Any nonzero controller exit means stop164 the action and report the exact decision or state defect.165- **Patch:** when authorized, implement the smallest cause-level fix, add166 invariant-focused tests, reread the complete diff, and perform an independent167 post-implementation architecture/impact review.168- **Verify and deliver:** run focused and canonical pre-push checks, push169 normally, require the remote head to equal the recorded commit, then rerun170 required pushed-head verification from a clean snapshot when needed.171- **Respond and reconcile:** guard any automated review request, perform172 per-write head checks, reply or resolve only completed threads, admit feedback173 once at the fixed deadline, reevaluate the governor, and stop rather than174 forming an unbounded response loop.175176## Reference routing177178Do not load every detailed policy file by default. Read only the material needed179for the current decision.180181| Situation | Required material |182| --- | --- |183| Initialize, inspect, project, guard, patch, defer, pause, resume, or request review | [Executable session control](references/executable-session-control.md) |184| Decide patch authority, architecture evidence, frontier trend, coverage, blocked obligations, fuse, or convergence | [Review governor](references/review-governor.md) |185| Reconstruct multiple sessions, finding origin, cumulative churn, strategy reset, or campaign resume | [Review campaign](references/review-campaign.md) |186| Use `rg`, AST, LSP, Graphify, or runtime evidence | [Code navigation and evidence routing](references/code-navigation.md) |187| Need detailed intake, classification, build-versus-buy, GitHub-write, pushed-head, bounded-recheck, risk, Traceknot, completion, or report rules | [Detailed operational policy](operational-policy.md) |188189For the detailed operational policy, locate headings first.190Read only the relevant section from that file, for example:191192```bash193rg '^## |^[0-9]+\.' <skill>/operational-policy.md194```195196The detailed file preserves the complete pre-refactor contract so edge cases and197existing integrations remain available without loading them into every session.198199## Navigation discipline200201Use the smallest capability that answers the question:202203- `rg` for literal/configuration discovery;204- AST for syntax-shaped analogues;205- LSP for symbol relationships;206- a fresh bounded code graph for direct or transitive candidates;207- runtime evidence for behavior that static inspection cannot establish.208209Record capability, freshness, fallback, coverage gap, provenance, and candidate210disposition. A text hit, inferred graph edge, or unsupported dynamic surface is211a lead, not proof.212213## Risk and QA handoff214215Classify the highest applicable risk before selecting obligations:216217- `R0`: documentation or inert metadata;218- `R1`: localized low-impact implementation;219- `R2`: runtime behavior, persistence, UI, concurrency, security,220 compatibility, or public-contract change;221- `R3`: release, migration, destructive operation, production infrastructure,222 or unknown material scope.223224Traceknot is required for `R2`, `R3`, and recurring review loops; it remains225optional for ordinary lower-risk sessions. Its verdict does not own review226convergence, GitHub thread resolution, architecture, or delivery. An unavailable227required handoff is `BLOCKED`; an available but unfinished handoff is228`INCOMPLETE`. Neither is a pass.229230## Independent outcomes231232Report these independently:233234- review convergence;235- deterministic governor decision;236- architecture verdict;237- `patch_required`;238- `obligations_blocked` and per-obligation status;239- QA verdict;240- delivery state.241242Overall completion requires a current-head `CONVERGED` decision after complete243obligations and acceptable QA, an acceptable architecture verdict, campaign and244session convergence, pushed-head verification where applicable, the bounded245final recheck, and the authorized delivery state. A clean thread list, green246check, no requested patch, or exhausted fuse is not a substitute for those247conditions.248249## Final report250251Include the campaign/session identity and lineage, frozen and current heads,252cutoff/deadline, admitted and deferred feedback, named pauses, duplicate253clusters, defect classes, search boundary, candidate ledger, packet and impact254delta, frontier identity/trend, obligations, controller decisions and tokens255consumed, patch rounds/budget, commits, tests, gates, per-write head checks,256GitHub responses, residual gaps, and the independent outcomes above.257258When no related defect is found, report the exact surfaces, patterns, and259capabilities checked rather than stating only that none was found.