mirror of
https://github.com/obra/superpowers.git
synced 2026-08-04 21:28:47 +08:00
fix(sdd): preflight emits its pairwise checks as a ledger table and rules on what it surfaces
The pre-Task-1 conflict scan currently permits 'the scan is clean' with no evidence the scan happened — mined sessions show controllers skipping straight to dispatch and plan conflicts surfacing mid-execution as blocking questions. Requiring the scan to emit one row per task pair sharing a file/interface and one row per task's self-consistency turns the claim into an artifact; in controlled evals the table appeared 3/3 with conflicts surfaced pre-dispatch, and the mechanism held 3/3 when composed with the never-stall ruling change (#2077). Claude-Session: https://claude.ai/code/session_0185AJr98gHx5EmwqNeft4Sy
This commit is contained in:
@@ -142,17 +142,24 @@ a ledger file, not only in todos.
|
|||||||
Read the plan once, note its context and Global Constraints, and create a
|
Read the plan once, note its context and Global Constraints, and create a
|
||||||
todo per task.
|
todo per task.
|
||||||
|
|
||||||
Before dispatching Task 1, scan the plan once for conflicts:
|
Before dispatching Task 1, scan the plan once for conflicts, writing down
|
||||||
|
what you checked as you check it:
|
||||||
|
|
||||||
- tasks that contradict each other or the plan's Global Constraints
|
- tasks that contradict each other or the plan's Global Constraints
|
||||||
- anything the plan explicitly mandates that the review rubric treats as a
|
- anything the plan explicitly mandates that the review rubric treats as a
|
||||||
defect (a test that asserts nothing, verbatim duplication of a logic block)
|
defect (a test that asserts nothing, verbatim duplication of a logic block)
|
||||||
|
|
||||||
Present everything you find to your human partner as one batched question —
|
The scan's output is a table, not a verdict. One row for every pair of tasks
|
||||||
each finding beside the plan text that mandates it, asking which governs —
|
that share a file or an interface: the two tasks, what one produces against
|
||||||
before execution begins, not one interrupt per discovery mid-plan. If the
|
what the other consumes, and what you found. One row for every task: whether
|
||||||
scan is clean, proceed without comment. The review loop remains the net for
|
its own text agrees with itself — the tests it specifies against the code it
|
||||||
conflicts that only emerge from implementation.
|
specifies, the files it creates against the files it later touches. "The scan
|
||||||
|
is clean" without those rows is not a scan you ran.
|
||||||
|
|
||||||
|
Write the table to the ledger. Rule on each conflict it surfaces — the spec
|
||||||
|
is the binding authority, the plan is its argument — record the ruling beside
|
||||||
|
its row, and dispatch Task 1. The review loop remains the net for conflicts
|
||||||
|
that only emerge from implementation.
|
||||||
|
|
||||||
## Model Selection
|
## Model Selection
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user