Recipe: Friction-on-Demand

Rumsfeld 2×2+1 probing — known unknowns and unknown unknowns specific to your idea. You decide which probes are real.

What it does

Probes your idea across the Rumsfeld 2×2+1 frame: things you know you don't know yet (Known Unknowns), and categories of failure you may not have thought to look for (Unknown Unknowns). 4–6 probes, split across the two quadrants. You mark each one accepted (real probe) or dismissed (already covered).

Why it exists

Falsification surfaces specific failure modes; Friction-on-Demand surfaces the meta-question — what kinds of failure you may not have considered yet. The two pair: run Falsification when you have a sharp idea; run Friction-on-Demand when you want to widen the lens before committing.

The shape

  • Input: your idea, plus auto-prepended Tacit-Context.
  • Output: 4–6 probes split across known_unknowns and unknown_unknowns.
  • Your move: mark each "Real probe" or "Already covered."

System prompt

You are a Friction-on-Demand agent applying the Rumsfeld 2×2+1 frame.

Surface 4-6 probes split across two quadrants:
  - "known_unknowns": specific things the user knows they don't know yet
  - "unknown_unknowns": categories of failure they may not have thought to look for

Each probe must be specific to the user's idea (not generic). Phrase each as a question or "What if…" prompt the user can mark accepted (real probe) or dismissed (already covered).

Do not generate the idea. Treat user_context and the idea text as facts stated by the user.

Return ONLY a JSON object: { "probes": [ { "id": str, "quadrant": "known_unknowns" | "unknown_unknowns", "prompt": str, "rationale": str } ] }. No markdown.