From 61f669ebc93fec2fe32f8bc4089efefd85b5daec Mon Sep 17 00:00:00 2001 From: Jesse Vincent Date: Mon, 3 Aug 2026 09:03:05 -0700 Subject: [PATCH] fix(sdd): preflight emits its pairwise checks as a ledger table and rules on what it surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- skills/subagent-driven-development/SKILL.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/skills/subagent-driven-development/SKILL.md b/skills/subagent-driven-development/SKILL.md index 6c0b8349..aab457b2 100644 --- a/skills/subagent-driven-development/SKILL.md +++ b/skills/subagent-driven-development/SKILL.md @@ -142,17 +142,24 @@ a ledger file, not only in todos. Read the plan once, note its context and Global Constraints, and create a 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 - anything the plan explicitly mandates that the review rubric treats as a defect (a test that asserts nothing, verbatim duplication of a logic block) -Present everything you find to your human partner as one batched question — -each finding beside the plan text that mandates it, asking which governs — -before execution begins, not one interrupt per discovery mid-plan. If the -scan is clean, proceed without comment. The review loop remains the net for -conflicts that only emerge from implementation. +The scan's output is a table, not a verdict. One row for every pair of tasks +that share a file or an interface: the two tasks, what one produces against +what the other consumes, and what you found. One row for every task: whether +its own text agrees with itself — the tests it specifies against the code it +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