Ver Fonte

refactor(skills): SDD e2e verification becomes pre-finish offer with disclosure doc

The predicate-keyed at-skill-start trigger is replaced by an unconditional
offer to the human after the final whole-branch review, before
finishing-a-development-branch. The procedure (spec discovery,
author/checker/runner flow, fix-wave rules) moves to spec-derived-e2e.md;
SKILL.md keeps the offer, a flowchart node, and the Integration reference.
Micro-tested 6/6: four controllers at the post-review point all offer
before finishing (including under wrap-up-efficiently pressure with the
human away); two accepted-offer controllers follow the disclosure doc with
the checker run by the controller, one fix subagent, and a fix-diff review
gate. Deviation recorded in the design spec.
Jesse Vincent há 2 meses atrás
pai
commit
3d779253aa

+ 11 - 0
docs/superpowers/specs/2026-07-04-spec-derived-scenario-cards-design.md

@@ -227,6 +227,17 @@ shipped form governs.
   touches, not the plan-named spec alone — plan-named-spec-only wiring
   skipped the step when the plan named no spec (GREEN iteration 1); the
   opt-out for spec-less repos is preserved.
+- **SDD integration restructured (2026-07-05, maintainer direction):** the
+  predicate-keyed at-skill-start detection in §3 is replaced by an
+  unconditional offer to the human after the final whole-branch review and
+  before finishing-a-development-branch — the human decides, not a spec
+  predicate. The procedure (spec discovery, author/checker/runner flow,
+  fix-wave rules) moved to a disclosure doc,
+  `skills/subagent-driven-development/spec-derived-e2e.md`; SKILL.md keeps
+  only the offer plus a reference, and the SDD flowchart now carries the
+  offer node (superseding §3's "flowchart is not modified"). Spec-less
+  repos surface "nothing to derive from" at offer time instead of skipping
+  silently.
 
 ## Decisions
 

+ 12 - 27
skills/subagent-driven-development/SKILL.md

@@ -73,6 +73,7 @@ digraph process {
     "More tasks remain?" [shape=diamond];
     "Dispatch final code reviewer (../requesting-code-review/code-reviewer.md)" [shape=box];
     "Final findings? ONE fix dispatch, one scoped re-review, adjudicate residuals" [shape=box];
+    "Offer spec-derived e2e verification (./spec-derived-e2e.md)" [shape=box];
     "Final review clean: delete this plan's workspace" [shape=box];
     "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
 
@@ -102,7 +103,8 @@ digraph process {
     "More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
     "More tasks remain?" -> "Dispatch final code reviewer (../requesting-code-review/code-reviewer.md)" [label="no"];
     "Dispatch final code reviewer (../requesting-code-review/code-reviewer.md)" -> "Final findings? ONE fix dispatch, one scoped re-review, adjudicate residuals";
-    "Final findings? ONE fix dispatch, one scoped re-review, adjudicate residuals" -> "Final review clean: delete this plan's workspace";
+    "Final findings? ONE fix dispatch, one scoped re-review, adjudicate residuals" -> "Offer spec-derived e2e verification (./spec-derived-e2e.md)";
+    "Offer spec-derived e2e verification (./spec-derived-e2e.md)" -> "Final review clean: delete this plan's workspace";
     "Final review clean: delete this plan's workspace" -> "Use superpowers:finishing-a-development-branch";
 }
 ```
@@ -413,32 +415,15 @@ rulings, or stop on load-bearing ones. There is no second fix wave —
 residual load-bearing findings surface to your human partner when
 finishing-a-development-branch presents the options.
 
-## Optional: Spec-Derived E2E Verification
-
-Applies only when a spec governing the code the plan touches — the spec
-the plan implements, or a repo spec covering that surface — contains an
-"E2E scenario cards" section, or your human partner asked for end-to-end
-verification. Otherwise this section does not apply — skip it entirely.
-
-- At skill start, when you read the plan, open the spec it names — and if
-  it names none, check the repo's spec directory (e.g.
-  `docs/superpowers/specs/`) for specs governing the code the plan
-  touches — and check for an "E2E scenario cards" section. If present,
-  add a pending "spec-derived e2e verification" item to your todo list
-  and the progress ledger so compaction cannot lose it.
-- After the final whole-branch review passes: use
-  superpowers:agentic-end-to-end-testing. Dispatch a card-author subagent
-  per its authoring-cards-from-a-spec.md, run its
-  scripts/check-cards-against-spec yourself on the author's output
-  (self-attestation is not the gate), then dispatch a runner subagent per
-  its runner-prompt.md against the built branch.
-- Card FAILs are findings: dispatch ONE fix subagent with the complete
-  list, then re-run the failed cards. The card author never fixes. Fix-wave
-  commits land after the final review, so give the fix diff its own
-  task-review gate before finishing — a green re-run alone does not ship
-  unreviewed changes.
-- Results land before superpowers:finishing-a-development-branch, so
-  "ready to merge" includes live-scenario evidence.
+## Before Finishing: Offer E2E Verification
+
+After the final whole-branch review passes and before
+superpowers:finishing-a-development-branch, offer your human partner
+spec-derived e2e verification: scenario cards derived from the governing
+spec, run live against the built branch. If they accept — or asked for
+end-to-end verification earlier — follow
+[spec-derived-e2e.md](spec-derived-e2e.md). If they decline, proceed to
+finishing.
 
 ## Finish
 

+ 39 - 0
skills/subagent-driven-development/spec-derived-e2e.md

@@ -0,0 +1,39 @@
+# Spec-Derived E2E Verification
+
+Live end-to-end evidence for the branch: scenario cards derived from the
+governing spec, run against the built code. Results land before
+superpowers:finishing-a-development-branch, so "ready to merge" includes
+live-scenario evidence, not just review verdicts.
+
+## Finding the governing spec
+
+Open the spec the plan names. If the plan names none, check the repo's spec
+directory (e.g. `docs/superpowers/specs/`) for specs governing the code the
+plan touches.
+
+- Spec with an "E2E scenario cards" section: cards derive from the table's
+  falsification lines verbatim.
+- Spec without the section: the bootstrap path in
+  superpowers:agentic-end-to-end-testing's authoring-cards-from-a-spec.md
+  backports a table from the spec's requirements (flagged for human review).
+- No governing spec at all: there is nothing to derive cards from. Tell your
+  human partner and proceed to finishing — or they can write a spec first
+  and re-run the offer.
+
+## Procedure
+
+Use superpowers:agentic-end-to-end-testing:
+
+1. Dispatch a card-author subagent per its authoring-cards-from-a-spec.md.
+2. Run its scripts/check-cards-against-spec yourself on the author's output
+   — self-attestation is not the gate.
+3. Dispatch a runner subagent per its runner-prompt.md against the built
+   branch.
+
+## Failure handling
+
+Card FAILs are findings: dispatch ONE fix subagent with the complete list,
+then re-run the failed cards. The card author never fixes. Fix-wave commits
+land after the final whole-branch review, so give the fix diff its own
+task-review gate before finishing — a green re-run alone does not ship
+unreviewed changes.