Skip to content

Commit f258953

Browse files
committed
fix: Drop stage classification from review-resolve analyze.md
The _skip suffix in analyze.md and verify.md had inverted semantics. In review-respond's triage.md, _skip stages (wontfix_skip / downgrade_skip / fixed_skip) are correctly skipped from triage. In review-resolve's analyze.md, the same names were applied even though verify.md treats those stages as the *primary* verification targets. The LLM, reading the same _skip suffix, occasionally interpreted them as "skip from output" semantics, dropping Status: 🟢 Fixed findings out of by_assignee with empty assignee. by_stage was never actually used downstream: SKILL.md / verify.md / compile.md never reference stage names (compile categorizes by outcome; verify branches on the trailing field). by_assignee dispatch also doesn't use stage names. Drop stage classification from analyze.md entirely and pin its responsibility to "determine assignee per finding". triage.md (review-respond) is left as-is since stage classification there is essential to its pending_triage / feedback branch logic. - analyze.md: remove the 7-rule stage classification, drop by_stage from the return value, add explicit "include all findings in by_assignee regardless of METADATA marker state", and pin the final fallback to cpp-sensei when Reviewers is empty. - SKILL.md: update the Step 1 return-value spec from {total, by_stage, by_assignee, template_id} to {total, by_assignee, template_id}.
1 parent b645bc4 commit f258953

2 files changed

Lines changed: 6 additions & 16 deletions

File tree

.claude/skills/review-resolve/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ Round-specific overrides (apply after following the template's instructions):
105105
Include `template_id` (Read from the template's frontmatter) in the return value.
106106
```
107107

108-
Receive the return value from the sub-agent (`{total, by_stage, by_assignee, template_id}`). Verify that `template_id` matches `5d9e2c8a-1f74-4b63-a9d8-3c5f7e1b9a42`. If it does not match, relaunch the sub-agent.
108+
Receive the return value from the sub-agent (`{total, by_assignee, template_id}`). Verify that `template_id` matches `5d9e2c8a-1f74-4b63-a9d8-3c5f7e1b9a42`. If it does not match, relaunch the sub-agent.
109109

110110
## Step 2 — Verify each finding (delegate in parallel per specialist)
111111

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,16 @@
11
---
22
name: analyze
3-
description: Prompt for the analysis sub-agent in review-resolve Step 1 that extracts each finding's id / stage / verification assignee from the review document
3+
description: Prompt for the analysis sub-agent in review-resolve Step 1 that extracts each finding's id / verification assignee from the review document
44
template_id: 5d9e2c8a-1f74-4b63-a9d8-3c5f7e1b9a42
55
---
66

7-
Read the review document `{{document_path}}` and extract each finding's id / stage / verification assignee (no file output). Read `.claude/rules/sub-agent.md` and observe the common prohibitions.
7+
Read the review document `{{document_path}}` and extract each finding's id / verification assignee (no file output). Read `.claude/rules/sub-agent.md` and observe the common prohibitions.
88

9-
Targets to extract: Critical / Major / Minor (skip Info).
10-
11-
Stage classification (trailing value of current_meta):
12-
13-
- Empty between markers → pending_triage
14-
- triage: 🔧 Will Fix, no estimate → pending_estimate
15-
- estimate: ▶️ Maintain or 🚧 Alternative, no status → pending_fix
16-
- verification's final value is 💬 Feedback → feedback
17-
- triage: 🚫 Won't Fix → wontfix_skip
18-
- estimate: 🔻 Downgrade → downgrade_skip
19-
- status: 🟢 Fixed, no verification or final value is ✅ Verified → fixed_skip
9+
Targets to extract: Critical / Major / Minor (skip Info). Include all findings in `by_assignee` regardless of METADATA marker state (the verify Sub handles Resolved / Feedback / Unresolved decisions, so untriaged or estimate-incomplete findings are also dispatch targets).
2010

2111
Determining the verification assignee:
2212

2313
- If the Triage line contains "(assignee: {specialist})", use that specialist.
24-
- If no assignee is present, select one required specialist (cpp-sensei / qt-sensei / obs-sensei / network-sensei) from the finding's Reviewers, prioritizing those. If no required specialist is present, use the first entry in Reviewers.
14+
- If no assignee is present (markers empty / Triage is 🚫 Won't Fix with no assignee field, etc.), select one required specialist (cpp-sensei / qt-sensei / obs-sensei / network-sensei) from the finding's Reviewers, prioritizing those. If no required specialist is present, use the first entry in Reviewers. If Reviewers is empty, use cpp-sensei as the final fallback.
2515

26-
Return value: `{total, by_stage: {<stage>: <int>}, by_assignee: [{assignee, ids: [id, ...]}], template_id}`. Include the `template_id` value Read from this template's frontmatter as-is.
16+
Return value: `{total, by_assignee: [{assignee, ids: [id, ...]}], template_id}`. Include the `template_id` value Read from this template's frontmatter as-is.

0 commit comments

Comments
 (0)