mirror of
https://github.com/obra/superpowers.git
synced 2026-07-08 19:19:04 +08:00
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.
This commit is contained in:
@@ -227,6 +227,17 @@ shipped form governs.
|
|||||||
touches, not the plan-named spec alone — plan-named-spec-only wiring
|
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
|
skipped the step when the plan named no spec (GREEN iteration 1); the
|
||||||
opt-out for spec-less repos is preserved.
|
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
|
## Decisions
|
||||||
|
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ digraph process {
|
|||||||
"Read plan, note context and global constraints, create todos" [shape=box];
|
"Read plan, note context and global constraints, create todos" [shape=box];
|
||||||
"More tasks remain?" [shape=diamond];
|
"More tasks remain?" [shape=diamond];
|
||||||
"Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [shape=box];
|
"Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [shape=box];
|
||||||
|
"Offer spec-derived e2e verification (./spec-derived-e2e.md)" [shape=box];
|
||||||
"Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
|
"Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
|
||||||
|
|
||||||
"Read plan, note context and global constraints, create todos" -> "Dispatch implementer subagent (./implementer-prompt.md)";
|
"Read plan, note context and global constraints, create todos" -> "Dispatch implementer subagent (./implementer-prompt.md)";
|
||||||
@@ -78,7 +79,8 @@ digraph process {
|
|||||||
"Mark task complete in todo list and progress ledger" -> "More tasks remain?";
|
"Mark task complete in todo list and progress ledger" -> "More tasks remain?";
|
||||||
"More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
|
"More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
|
||||||
"More tasks remain?" -> "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [label="no"];
|
"More tasks remain?" -> "Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" [label="no"];
|
||||||
"Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" -> "Use superpowers:finishing-a-development-branch";
|
"Dispatch final code reviewer subagent (../requesting-code-review/code-reviewer.md)" -> "Offer spec-derived e2e verification (./spec-derived-e2e.md)";
|
||||||
|
"Offer spec-derived e2e verification (./spec-derived-e2e.md)" -> "Use superpowers:finishing-a-development-branch";
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -263,32 +265,15 @@ a ledger file, not only in todos.
|
|||||||
- `git clean -fdx` will destroy the ledger (it's git-ignored scratch); if
|
- `git clean -fdx` will destroy the ledger (it's git-ignored scratch); if
|
||||||
that happens, recover from `git log`.
|
that happens, recover from `git log`.
|
||||||
|
|
||||||
## Optional: Spec-Derived E2E Verification
|
## Before Finishing: Offer E2E Verification
|
||||||
|
|
||||||
Applies only when a spec governing the code the plan touches — the spec
|
After the final whole-branch review passes and before
|
||||||
the plan implements, or a repo spec covering that surface — contains an
|
superpowers:finishing-a-development-branch, offer your human partner
|
||||||
"E2E scenario cards" section, or your human partner asked for end-to-end
|
spec-derived e2e verification: scenario cards derived from the governing
|
||||||
verification. Otherwise this section does not apply — skip it entirely.
|
spec, run live against the built branch. If they accept — or asked for
|
||||||
|
end-to-end verification earlier — follow
|
||||||
- At skill start, when you read the plan, open the spec it names — and if
|
[spec-derived-e2e.md](spec-derived-e2e.md). If they decline, proceed to
|
||||||
it names none, check the repo's spec directory (e.g.
|
finishing.
|
||||||
`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.
|
|
||||||
|
|
||||||
## Prompt Templates
|
## Prompt Templates
|
||||||
|
|
||||||
@@ -436,7 +421,7 @@ Done!
|
|||||||
- **superpowers:using-git-worktrees** - Ensures isolated workspace (creates one or verifies existing)
|
- **superpowers:using-git-worktrees** - Ensures isolated workspace (creates one or verifies existing)
|
||||||
- **superpowers:writing-plans** - Creates the plan this skill executes
|
- **superpowers:writing-plans** - Creates the plan this skill executes
|
||||||
- **superpowers:requesting-code-review** - Code review template for the final whole-branch review
|
- **superpowers:requesting-code-review** - Code review template for the final whole-branch review
|
||||||
- **superpowers:agentic-end-to-end-testing** - Optional spec-derived e2e verification after the final review (see Optional: Spec-Derived E2E Verification)
|
- **superpowers:agentic-end-to-end-testing** - Spec-derived e2e verification, offered before finishing (see [spec-derived-e2e.md](spec-derived-e2e.md))
|
||||||
- **superpowers:finishing-a-development-branch** - Complete development after all tasks
|
- **superpowers:finishing-a-development-branch** - Complete development after all tasks
|
||||||
|
|
||||||
**Subagents should use:**
|
**Subagents should use:**
|
||||||
|
|||||||
39
skills/subagent-driven-development/spec-derived-e2e.md
Normal file
39
skills/subagent-driven-development/spec-derived-e2e.md
Normal file
@@ -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.
|
||||||
Reference in New Issue
Block a user