Context
A public review cycle exposed a substrate-level completion gap: the author protocol permits a Required Action (RA) to be labelled [DEFERRED], followed by a re-review request, even when the RA proves that the pull request's declared scope is incomplete.
The failure is visible without attributing it to any peer or model:
- PR #17050 response 1 reported accepted RAs as "not yet implemented".
- PR #17050 response 2 pushed a partial repair while explicitly leaving one accepted RA unimplemented.
- Once the completion boundary was made binary, the remaining repair was implemented immediately. Capability and thought budget were not the missing primitive.
This ticket converts that friction into a small author-workflow correction. It is not a blame record.
The Problem
The author-side review protocol currently teaches a third terminal state that conflicts with the reviewer-side merge gate:
.agents/skills/pull-request/references/review-response-protocol.md:20 directs authors to use [ADDRESSED] / [DEFERRED].
- Lines 46-50 define
[DEFERRED] for an RA not addressed in the PR.
- Lines 72-76 permit the structured response to end in a re-review handoff.
.agents/skills/pull-request/assets/review-response-template.md makes that combination copyable.
.agents/skills/pull-request/references/pull-request-workflow.md describes done-ness as per-handoff.
- The reviewer contract already says an RA is mandatory before acceptance, and its A+FU boundary requires a merge-safe head with no deferred correctness work.
That contradiction makes polished disclosure look like completion. It also creates an expensive escape hatch: a known-unmergeable head can trigger CI and another full review cycle even though the author already agrees the declared scope is not delivered.
The Architectural Reality
The durable invariant compares two artifacts:
- A = open Required Actions.
- B = the PR's declared scope at the local candidate head.
Before an author publishes a closure response or requests re-review, A must be empty relative to B. Empty means the candidate head contains evidence that each RA is addressed, or the author has rejected it with falsifying rationale. It does not mean GitHub has already dismissed the review object.
Changing B is a real scope transition, not a prose disposition. It is valid only when the remaining work is genuinely heavy and independently valuable, and only after ticket/PR authority has been changed so the current head is merge-safe. Ordinary bounded repair remains in the same PR; line count in the hundreds, CI duration, model/token budget, an awkward async seam, or reviewer preference do not authorize transfer.
The existing A+FU contract in #15257 already establishes the reviewer-side authority: scope transfer requires an independently valuable day-after-merge slice, explicit close-target ownership, and no deferred correctness. This ticket makes the author side coherent with it.
The Fix
- Remove
[DEFERRED] as a terminal RA disposition.
- Keep
[ADDRESSED] and [REJECTED_WITH_RATIONALE].
- Add tightly guarded
[SCOPE_TRANSFERRED]:
- the removed work has a linked implementation leaf;
- the source ticket and PR body/close target are amended before the response;
- no surviving AC or claim depends on the transferred work;
- the current head is merge-safe and independently valuable;
- the work is materially heavy, not an ordinary bounded repair.
- If no coherent merge-safe slice remains, require scope split or Drop+Supersede instead of a partial handoff.
- Make the response template and reviewer-side mirror use the same taxonomy.
- Replace “done-ness is per-handoff” with a precise review-handoff boundary: an author may hand back only after every RA is discharged against the current declared scope.
- Net-reduce or hold flat the affected skill bytes; do not add another always-loaded AGENTS rule, new skill, or keyword stop hook.
Contract Ledger
| Target surface |
Source of authority |
Proposed behavior |
Fallback / refusal |
Docs |
Evidence |
| Author RA taxonomy |
review-response-protocol.md §§1, 4, 8 |
Terminal states are addressed, evidence-backed rejection, or completed scope transfer |
Accepted-but-unimplemented stays OPEN; no re-review request |
Same file |
Exact tag census + protocol lint |
| Author response template |
review-response-template.md |
Template cannot manufacture a terminal deferred RA |
Scope-transfer row requires authority-change evidence |
Same file |
Whole-template inspection |
| PR lifecycle handoff |
pull-request-workflow.md review cycle |
Re-review handoff requires A empty relative to current B |
Split/supersede before handoff when no merge-safe slice exists |
Same file |
Workflow text + cross-file census |
| Reviewer mirror |
pr-review-guide.md Required Actions / A+FU |
Reviewer and author use one disposition contract |
A+FU remains scope transfer only |
Same file |
Cross-skill taxonomy check |
Decision Record impact
None. This is an operational workflow correction aligned with #15257 and the accepted A+FU review contract; no ADR is amended.
Acceptance Criteria
Out of Scope
- A model-specific downgrade or blame attribution.
- A custom context-window MCP tool. Claude Code already exposes context usage to status-line integrations; that is a separate low-risk harness improvement.
- Runtime GitHub review-state automation or a brittle prose-matching stop hook.
- Changing the two-cycle review-budget policy.
Avoided Traps
- “Just add a reminder to AGENTS.md.” Rejected: the conflicting conditional workflow is the owning substrate, and another always-loaded rule increases salience dilution.
- “Any follow-up ticket makes deferral valid.” Rejected: that lets ordinary repairs and unresolved ACs escape the PR after review cost has already been paid.
- “Never change scope.” Rejected: real underestimation happens; a heavy, independently valuable leaf may transfer after authority is truthfully rewritten.
- “A one-commit heuristic defines ownership.” Rejected: reversibility is useful evidence, but named authority and declared scope remain decisive.
Related
- #15257 — reviewer-side budgeted closure and A+FU authority
- #17042 — friction-to-gold retrospective context
- PR #17050 — public reproducer of the author-side ambiguity
Origin Session ID: 019fe0b3-53bc-7ef2-8665-41a0ef3f7b62
Retrieval Hint: review-response protocol deferred Required Action scope transfer A versus B
Context
A public review cycle exposed a substrate-level completion gap: the author protocol permits a Required Action (RA) to be labelled
[DEFERRED], followed by a re-review request, even when the RA proves that the pull request's declared scope is incomplete.The failure is visible without attributing it to any peer or model:
This ticket converts that friction into a small author-workflow correction. It is not a blame record.
The Problem
The author-side review protocol currently teaches a third terminal state that conflicts with the reviewer-side merge gate:
.agents/skills/pull-request/references/review-response-protocol.md:20directs authors to use[ADDRESSED]/[DEFERRED].[DEFERRED]for an RA not addressed in the PR..agents/skills/pull-request/assets/review-response-template.mdmakes that combination copyable..agents/skills/pull-request/references/pull-request-workflow.mddescribes done-ness as per-handoff.That contradiction makes polished disclosure look like completion. It also creates an expensive escape hatch: a known-unmergeable head can trigger CI and another full review cycle even though the author already agrees the declared scope is not delivered.
The Architectural Reality
The durable invariant compares two artifacts:
Before an author publishes a closure response or requests re-review, A must be empty relative to B. Empty means the candidate head contains evidence that each RA is addressed, or the author has rejected it with falsifying rationale. It does not mean GitHub has already dismissed the review object.
Changing B is a real scope transition, not a prose disposition. It is valid only when the remaining work is genuinely heavy and independently valuable, and only after ticket/PR authority has been changed so the current head is merge-safe. Ordinary bounded repair remains in the same PR; line count in the hundreds, CI duration, model/token budget, an awkward async seam, or reviewer preference do not authorize transfer.
The existing A+FU contract in #15257 already establishes the reviewer-side authority: scope transfer requires an independently valuable day-after-merge slice, explicit close-target ownership, and no deferred correctness. This ticket makes the author side coherent with it.
The Fix
[DEFERRED]as a terminal RA disposition.[ADDRESSED]and[REJECTED_WITH_RATIONALE].[SCOPE_TRANSFERRED]:Contract Ledger
review-response-protocol.md§§1, 4, 8review-response-template.mdpull-request-workflow.mdreview cyclepr-review-guide.mdRequired Actions / A+FUDecision Record impact
None. This is an operational workflow correction aligned with #15257 and the accepted A+FU review contract; no ADR is amended.
Acceptance Criteria
[DEFERRED]is removed from the Required Action response taxonomy and template.[SCOPE_TRANSFERRED]requires a linked leaf plus already-amended ticket/PR scope and close-target authority.Out of Scope
Avoided Traps
Related
Origin Session ID: 019fe0b3-53bc-7ef2-8665-41a0ef3f7b62
Retrieval Hint:
review-response protocol deferred Required Action scope transfer A versus B