---
name: deep-why
description: >-
  Deep Why v3: null-first option prosecutor. Generate options, then kill with
  why-chains and falsifiers; failed-first output. Ask clarifying questions when
  user intent or preferences would change the chain. Use for choose / validate /
  diagnose / plan / prioritize, or when the user says Deep Why, should we,
  justify, why this, or falsify. Default Flash; Full only for high stakes.
  Prefer FAIL over persuasion.
---

# Deep Why v3

Prosecutor of options. Not a salesperson.  
**Flash by default. Full only when stakes are high.**

| Other tool | Job | Deep Why job |
|------------|-----|--------------|
| 5 Whys | One causal dig | — |
| Premortem | Imagine a plan already failed | Hook inside Full only |
| Post-hoc verify | Attack one finished judgment | — |
| **Deep Why** | — | **Kill/rank options** (null always included) |

User judgment is part of reality. Preferences, constraints, and taste can flip L0/L1/L4 — **ask** when that input is missing and material. Do not invent the user's mind.

---

## When / when not

| Use | Skip |
|-----|------|
| Choose, validate, diagnose, plan, prioritize under uncertainty | Locked execution; trivia / typo / lookup |
| User asks to justify, falsify, or run Deep Why | Brainstorm-only (ideate first, then offer Deep Why) |

**Escalate Flash → Full** if: hard to reverse, ≥1 day of work, public blast radius, user asks Full/Deep, or Flash hits a weak mechanism / conflict.

---

## Protocol (fixed order)

```
1. Meta: mode + intensity + pack (default general)
2. L0 Intent (done / constraints / non-goals)
3. Clarify gate — ask user if a material fork depends on their input
   - if blocked: output Questions (and partial chains if useful), STOP
   - if clear: continue
4. Phase A GENERATE — options only, no defense
   - always include: null|status quo, defer|measure
5. Phase B PROSECUTE — chain; FAIL on first broken layer
   - if a layer hinges on unknown user preference: ASK (do not guess)
6. If Full: evidence + adversarial (+ premortem if Choose/Plan)
7. Output: Failed → Deferred → Passed → Decision → Conclusion
8. Assumptions (≤5) + confidence
9. Override log if user rejects a PASS
10. After user answers questions: re-run from the affected layer (do not pretend old PASS still holds)
```

### Clarify gate (when to ask)

Ask only if **all** are true:
1. The answer would change KEEP/FAIL/ranking (material fork).  
2. You cannot get it cheaper from repo, logs, or prior context.  
3. It is about **user intent / preference / constraint / risk tolerance** — or a fact only they know.

**Ask (examples):** success metric; hard deadline; must-keep invariant; taste vs correctness; risk appetite; “is null acceptable?”; which audience matters.

**Do not ask:** things you can verify yourself; rhetorical cover for a weak option; >3 questions at once; questions that do not name the layer they unlock.

Max **1–3** sharp questions. Each question line must state: `Unlocks: Ln` and `If you answer X → …; if Y → …`.

User answers are evidence tier **[U]** (user input). Treat as binding for preferences/constraints. Treat as `[H]` if they assert an external fact you can still check.

### Phase A
3–8 options. Names / one-liners only. No selling.

### Phase B cell (maps 1:1 into the output chain)

Per layer in the answer:
```
#### Ln Name — OK|FAIL
- Why: …                 # claim + rationale
- Evidence: [A|B|C|H|U] …  # what it shows
- Falsifier: …           # what would kill this layer
```

**Kill rule:** one broken required layer → FAIL.  
Two consecutive `H` layers → FAIL or DEFER + cheap test (or ASK if the missing piece is user-owned).  
The output **must** render this chain (with a Spine line), not a summary verdict.

---

## Layers

| ID | Name | Ask | Fail if |
|----|------|-----|---------|
| L0 | Intent | What does done look like? | Fuzzy / conflicting goals |
| L1 | Stake | Why act? Cost of nothing? | No material stake |
| L2 | Mechanism | What causes the situation? | Slogans, no causality |
| L3 | Class | Why this class of move? | Does not touch L2 |
| L4 | Alt | Why not null / what already exists? | Substitute wins on L0 |
| L5 | Do | Why this concrete first cut? | Vague / boils the ocean |
| L6 | After | Side effects / drift / still worth it? | Unfalsifiable or net worse |

**Flash:** L0 L1 L4 L5  
**Full:** L0–L6

**L3 class examples** (not a closed list): measure, remove/simplify, enforce/guard, encapsulate, replace, change process/incentives, accept/buffer, buy information.

### Modes
- **Choose** — solutions · null = keep current  
- **Validate** — proposal · null = reject  
- **Diagnose** — hypotheses · null = unknown; L5 = probe, not fix  
- **Plan** — plans · null = defer  
- **Prioritize** — items · null = deprioritize; one stake scale  

### Packs
Default `general`. Read [domains.md](domains.md) only when Meta names: `debug` | `architecture` | `implementation` | `process-ops` | `priority` | `communication`.

---

## Full extras (skip in Flash)

1. **Evidence:** prefer A/B over C; downgrade vendor self-pitch; no KEEP on vibes. If the option creates something new, L4 must include prior art and substitutes.  
2. **Adversarial:** strongest kill-case on each KEEP; flip if stronger.  
3. **Premortem (Choose/Plan):** "In N weeks it failed because…" — at least 2 concrete modes; fatal and unmitigated → FAIL/DEFER L6.

Tiers: **A** hard · **B** medium · **C** soft · **H** hypothesis · **U** user input (preferences/constraints).

---

## Output

Body = **chains** (justification per layer). Ending = **plain-language conclusion** (what to do).  
If clarify gate fires: **Questions first** (or instead of a fake Conclusion).  
Never ship chains without a conclusion — unless paused on Questions. Never ship a conclusion without chains (unless paused).

### Per-option block (required)

```markdown
### [Option] — PASS | FAIL at Ln (Name) | DEFER

Spine: L0 OK → L1 OK → … → Ln FAIL|OK

#### L0 Intent — OK
- Why: …
- Evidence: [A|B|C|H|U] …
- Falsifier: …

#### L4 Alt — FAIL
- Why: …
- Evidence: …
- Falsifier: …

Lesson: …                 # FAIL only
Next falsifier / action: … # PASS or DEFER
Missing / test / revisit: … # DEFER only
```

Rules:
- Show layers in order; **stop at first FAIL** (do not invent later OK layers).
- Flash: required layers only (L0 L1 L4 L5). Full: L0–L6 (plus extras after the chain).
- Shared L0 for the whole task may sit once under `## L0`, then options start at L1 — but each option still needs its own spine from L1 (or from L0 if intents differ).
- Spine line is mandatory.

### Full report shape

```markdown
# Deep Why: [task]
## Meta
mode · Flash|Full · pack

## L0
…

## Questions                    # only if clarify gate fired; then STOP
1. …?  Unlocks: Ln  |  If A → …; if B → …
2. …

## Options (Phase A)
- … (including null / defer)

## Failed
### … — FAIL at Ln
[per-option block]

## Deferred
### … — DEFER
[per-option block]

## Passed
### … — PASS
[per-option block]

## Decision
1. …
Null position: …

## Conclusion
**Answer:** …
**Do next:** …
**Not this:** …
**If wrong:** …
Confidence: high|med|low

## Assumptions
1. … → if false, revisit

## Override
(if any) User chose …; dismissed falsifier: …
```

When `## Questions` is present: do **not** force a winner. Optional: show partial Failed/Passed that remain stable across all answers.  
After the user replies: re-prosecute from the unlocked layer; cite `[U]` in Evidence.  
`## Conclusion` is mandatory when not paused. Specimen: [examples.md](examples.md)

---

## Guardrails

1. Burden of proof is on the option.  
2. Null is first-class in the ranking.  
3. No aesthetic rescue; no motte-and-bailey.  
4. Functional equivalents count at L4.  
5. Do not inflate scope to save an option.  
6. Do not optimize for agreeing with the user — but **do** ask when their preference is the missing evidence.  
7. Demand that appears only after pitching the solution = `H`.  
8. Intensity matches blast radius.  
9. Never replace the layer chain with a prose-only conclusion.  
10. Never end without `## Conclusion` (or `## Questions` if paused).  
11. Do not guess material user intent; ask or mark `H` + DEFER.  
12. Questions must unlock a named layer — no fishing.
