From f9d11b3c2f1260338fbad469320c79242222b0c8 Mon Sep 17 00:00:00 2001 From: Drew Ritter Date: Wed, 10 Jun 2026 23:47:45 -0700 Subject: [PATCH] fix(skills): SDD review fanout scales with the change (SUP-333 B) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit subagent-driven-development mandated implementer + two-stage review + final reviewer unconditionally — antigravity (agy) and opencode each dispatched 4 subagents for a one-line console.log (cost-trivial-task-review-fanout), and agents that passed did so only by disobeying the skill. - Proportionality rule: a plan that is entirely one trivial, fully-specified mechanical change is implemented directly, verified per superpowers:verification-before-completion, committed — no review fanout. Trivial is a property of the diff (no logic, control flow, or security-relevant change), not the plan's self-description; "a constant bump" is qualified (no security or behavioral consequences). Any doubt = full pipeline. Multi-task plans never skip reviews regardless of task size. - Flowchart gets the matching trivial-exit diamond (the failing agents follow the flowchart literally). - Red Flags "never skip reviews" points at the sole exception instead of contradicting it. - writing-plans' execution handoff notes fanout scales (forward reference resolves within this PR's base expectations: the Proportionality rule ships here). Independently mergeable: no dependency on the reference-discipline or brainstorming-exception PRs. Eval evidence (quorum): RED 4 dispatches for 1 line (agy, opencode); GREEN cost-trivial-task-review-fanout opencode 3/3 pass (0 dispatches, deterministic tool-count check) + antigravity pass (the formerly deterministic failer); containment canary sdd-rejects-extra-features claude 3/3 pass (full pipeline per task). Co-Authored-By: Claude Fable 5 --- skills/subagent-driven-development/SKILL.md | 11 +++++++++-- skills/writing-plans/SKILL.md | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/skills/subagent-driven-development/SKILL.md b/skills/subagent-driven-development/SKILL.md index d44f91bb..42de6903 100644 --- a/skills/subagent-driven-development/SKILL.md +++ b/skills/subagent-driven-development/SKILL.md @@ -11,6 +11,8 @@ Execute plan by dispatching fresh subagent per task, with two-stage review after **Core principle:** Fresh subagent per task + two-stage review (spec then quality) = high quality, fast iteration +**Proportionality:** Review fanout scales with the change. When the entire plan is one trivial, fully-specified mechanical change — a log statement, a typo fix, a constant bump with no security or behavioral consequences — implement it directly (or with a single implementer subagent), verify per superpowers:verification-before-completion (run the relevant command, confirm output), commit, and skip all review subagents, including the final reviewer: three review dispatches cost more than a one-line diff. Trivial is a property of the diff — it changes no logic, no control flow, and nothing security-relevant — not of the plan's self-description. Any doubt means not trivial: run the full pipeline. Within a multi-task plan, never skip reviews, regardless of task size. + **Continuous execution:** Do not pause to check in with your human partner between tasks. Execute all tasks from the plan without stopping. The only reasons to stop are: BLOCKED status you cannot resolve, ambiguity that genuinely prevents progress, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it. ## When to Use @@ -61,11 +63,16 @@ digraph process { } "Read plan, extract all tasks with full text, note context, create todos" [shape=box]; + "Entire plan = one trivial, fully-specified mechanical change? (any doubt = no)" [shape=diamond]; + "Implement directly, verify, commit (no review fanout)" [shape=box]; "More tasks remain?" [shape=diamond]; "Dispatch final code reviewer subagent for entire implementation" [shape=box]; "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen]; - "Read plan, extract all tasks with full text, note context, create todos" -> "Dispatch implementer subagent (./implementer-prompt.md)"; + "Read plan, extract all tasks with full text, note context, create todos" -> "Entire plan = one trivial, fully-specified mechanical change? (any doubt = no)"; + "Entire plan = one trivial, fully-specified mechanical change? (any doubt = no)" -> "Implement directly, verify, commit (no review fanout)" [label="yes — see Proportionality"]; + "Implement directly, verify, commit (no review fanout)" -> "Use superpowers:finishing-a-development-branch"; + "Entire plan = one trivial, fully-specified mechanical change? (any doubt = no)" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="no"]; "Dispatch implementer subagent (./implementer-prompt.md)" -> "Implementer subagent asks questions?"; "Implementer subagent asks questions?" -> "Answer questions, provide context" [label="yes"]; "Answer questions, provide context" -> "Dispatch implementer subagent (./implementer-prompt.md)"; @@ -237,7 +244,7 @@ Done! **Never:** - Start implementation on main/master branch without explicit user consent -- Skip reviews (spec compliance OR code quality) +- Skip reviews — sole exception: a plan that is entirely one trivial change (see Proportionality) - Proceed with unfixed issues - Dispatch multiple implementation subagents in parallel (conflicts) - Make subagent read plan file (provide full text instead) diff --git a/skills/writing-plans/SKILL.md b/skills/writing-plans/SKILL.md index 847412ec..e3111a4f 100644 --- a/skills/writing-plans/SKILL.md +++ b/skills/writing-plans/SKILL.md @@ -145,7 +145,7 @@ After saving the plan, offer execution choice: **If Subagent-Driven chosen:** - **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development -- Fresh subagent per task + two-stage review +- Fresh subagent per task + two-stage review (review fanout scales with the change — see that skill's Proportionality rule) **If Inline Execution chosen:** - **REQUIRED SUB-SKILL:** Use superpowers:executing-plans