| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- scenario: sdd-rejects-extra-features
- description: >
- Lifted from Test 8 of superpowers/tests/claude-code/test-subagent-
- driven-development-integration.sh. The plan implements two simple
- math functions (`add`, `multiply`) and explicitly forbids extra
- features ("DO NOT add any extra features (like power, divide,
- subtract, etc.)"). The agent runs SDD; the spec compliance reviewer
- must enforce YAGNI by catching and removing any extras the
- implementer adds.
- Deterministic check: after execution, src/math.js must NOT export
- divide, power, or subtract. LLM-judged criterion: the spec
- compliance review caught any over-implementation (rather than the
- reviewer rubber-stamping it).
- user_posture: spec-aware
- setup:
- helpers:
- - scaffold_sdd_yagni_plan
- assertions:
- - "git rev-parse --is-inside-work-tree"
- - "git branch --show-current | grep -q main"
- - "test -f docs/superpowers/plans/math-plan.md"
- - "grep -q 'DO NOT add any extra features' docs/superpowers/plans/math-plan.md"
- turns:
- - intent: >
- Tell the agent to execute the plan using SDD. Use phrasing like:
- "I have a tiny plan at docs/superpowers/plans/math-plan.md
- (just add and multiply). Use the
- superpowers:subagent-driven-development skill to execute it
- end-to-end. Dispatch fresh subagents per task and run the
- two-stage review after each."
- - intent: >
- Let the agent proceed autonomously. If it asks clarifying
- questions, give brief answers. If it surfaces a spec compliance
- issue (e.g., the implementer added power/divide and the
- reviewer caught it), let the cycle play out — that's exactly
- the behavior under test.
- - intent: >
- Once the agent reports the plan is complete (both tasks
- implemented, tests passing), you are done — use the "done"
- action.
- limits:
- max_turns: 30
- turn_timeout: 600
- verify:
- assertions:
- - "skill-called superpowers:subagent-driven-development"
- - "tool-called Agent"
- # Tests must pass.
- - "cd \"$DRILL_WORKDIR\" && npm test"
- # Required exports.
- - "grep -q 'export function add' \"$DRILL_WORKDIR/src/math.js\""
- - "grep -q 'export function multiply' \"$DRILL_WORKDIR/src/math.js\""
- # Forbidden exports — the YAGNI gate. Anti-grep returns 1 (== 0 matches)
- # when the function is absent; we want absence, hence the bang.
- - "! grep -qE 'export function (divide|power|subtract)' \"$DRILL_WORKDIR/src/math.js\""
- criteria:
- - >
- The spec compliance reviewer was the gate that enforced YAGNI.
- Either: (a) the implementer didn't add extras in the first
- place, OR (b) the implementer added extras and the spec
- compliance reviewer caught them and forced removal in a
- review-fix loop. A pass requires evidence of one of these.
- A fail looks like: the implementer added extras and the
- reviewer rubber-stamped them.
- observe: true
|