Skip to content

Commit c97aa95

Browse files
bokelleyclaude
andauthored
feat(agents): triage defer subtypes + partial-rollout linkage rule (#273)
Step 1 broadens child-of-open-parent detection (prose references and file-overlap, not just Fixes/Closes). Outcome 4 splits Defer into Out-of-cycle / Blocked-on / Fold candidate so blocked issues always leave a resurfacing trigger comment. Bundling adds an explicit Refs-vs-Closes rule for partial-rollout PRs (motivated by adcp-client#937 closing #935 despite shipping only 1 of 5 kinds). Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 52019b8 commit c97aa95

1 file changed

Lines changed: 38 additions & 4 deletions

File tree

.agents/routines/triage-prompt.md

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,17 @@ narrate it. Flag only for genuine ambiguity or breaking changes.
4242
experts disagreed. Synthesis + ask for `@bokelley`.
4343
3. **Execute PR** — experts agree, change is **non-breaking**.
4444
Draft PR. No scope cap, no classification gate, no author gate.
45-
4. **Defer** — post-cycle / blocked — label-only (short ack for
46-
NONE / FIRST_TIME authors)
45+
4. **Defer** — three flavors:
46+
- **Out of cycle (no blocker).** Silent for MEMBER+; ack for
47+
NONE / FIRST_TIME_CONTRIBUTOR.
48+
- **Blocked on open PR/issue.** Always post `Blocked-on: #N —
49+
resurfaces on merge`, any author tier — the comment is the
50+
audit trail and the resurfacing trigger.
51+
- **Fold candidate.** Same as Blocked-on, plus also comment on
52+
the parent PR suggesting scope be folded before merge (only
53+
when parent is same-author / active contributor, still
54+
iterating, and overlaps file scope). Skip if parent is
55+
approved/awaiting-merge.
4756

4857
**When in doubt: Execute.** Draft PRs are reversible; unshipped
4958
good changes rarely get revisited.
@@ -89,8 +98,17 @@ on.
8998

9099
### Step 1 — Pre-classification
91100

92-
Skip auto-PR for: RFC/proposal, epic, tracking/meta,
93-
child-of-open-parent. These proceed to relevance check.
101+
Skip auto-PR for:
102+
103+
- RFC / proposal, epic, tracking/meta
104+
- **child-of-open-parent** — any of: `Fixes #N`/`Closes #N` to an
105+
open issue/PR; body text references an open PR as prereq ("after
106+
#N", "follow-up to #N", "depends on #N", "extends #N");
107+
acceptance criteria reference files that exist in an open PR's
108+
diff but not on `main` (`gh pr view <N> --json files` to confirm).
109+
110+
These proceed to relevance check, then to the **Defer** outcome
111+
(typically *Fold candidate* or *Blocked-on*) rather than Execute.
94112

95113
### Step 2 — Relevance check: in-cycle?
96114

@@ -253,6 +271,22 @@ related fixes, or "items 1-5 after PR #N" — decide:
253271
A single cohesive PR is easier to review than three PRs with
254272
dependencies. The bot reduces maintainer clicks, not multiplies them.
255273

274+
### Linkage rule for partial-rollout PRs
275+
276+
When the issue proposes multiple items and you're shipping a subset,
277+
the PR body uses `Refs #N`, **not** `Closes #N`. `Closes` is reserved
278+
for PRs that fulfill the entire issue scope (even if delivered
279+
incrementally — only the *last* PR in the sequence carries `Closes`).
280+
281+
Applies to multi-item issues (numbered lists, taxonomies with multiple
282+
`kind`s, follow-up bundles), issues with explicit "ship X first, then
283+
Y" guidance, or any case where PR scope is narrower than issue scope.
284+
285+
In addition to using `Refs`, post a status comment on the parent issue
286+
listing what shipped and what remains, so a future triage sweep can
287+
find queued work. `Closes` here would be a quiet bug — the issue
288+
auto-closes on merge and remaining items lose their tracking surface.
289+
256290
## Pre-PR build + test gate — mandatory before expert review
257291

258292
The expert review is expensive; don't run it on broken code. Before

0 commit comments

Comments
 (0)