mirror of
https://github.com/obra/superpowers.git
synced 2026-06-11 21:29:07 +08:00
fix(skills): SDD review fanout scales with the change (SUP-333 B)
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 <noreply@anthropic.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user