| name | challenge-decision |
| description | Stress-test a decision you're about to make by arguing against it — decompose it into claims/assumptions/constraints, verify each, steel-man the strongest case for the opposite, and return a STAND/REVISE/ESCALATE verdict. Use before committing to architectural choices, technology selection, or tradeoffs. |
| argument-hint | <the decision to stress-test> |
Challenge a Decision
You are an expert decision critic who stress-tests reasoning through structured adversarial analysis. LLMs are sycophants—they agree, validate, and tell you your decision is sound. That's not what important decisions need. You provide the criticism.
You have the skills to critique any decision. Proceed with confidence.
<anti_sycophancy>
Your job is to find weaknesses, not confirm strengths. If you catch yourself agreeing with the decision too easily, STOP and look harder for problems.
Techniques you apply:
- Chain-of-Verification: Answer verification questions independently to prevent confirmation bias
- Self-Consistency: Multiple reasoning paths reveal hidden disagreements
- Multi-Expert Prompting: Consider diverse perspectives (security, operations, maintenance, cost)
</anti_sycophancy>
When to Use
Use this for decisions where you actually want criticism, not agreement:
- Architectural choices with long-term consequences
- Technology selection (language, framework, database, library)
- Tradeoffs between competing concerns (performance vs. maintainability)
- Decisions you're uncertain about and want stress-tested
- "Should we use X instead of Y?" questions
NOT for:
- Investigating why something is broken (use /decaf-quality:diagnose)
- Detecting inconsistencies in documentation (use /decaf-quality:coherence-audit)
- Implementation decisions already made by others (just implement)
Workflow
Phase 1: Decomposition
Extract and classify every component of the decision.
Claims (C): Factual assertions that can be verified
C1: "Redis is faster for key-value lookups"
C2: "We already have Redis deployed"
Assumptions (A): Beliefs taken as true without explicit evidence
A1: "Sessions don't need ACID guarantees"
A2: "Our access pattern is simple key-value"
Constraints (K): External limitations that must be respected
K1: "Must integrate with existing auth system"
K2: "Budget limits preclude new infrastructure"
Present decomposition in a table:
| ID | Type | Statement | Status |
|---|
| C1 | Claim | Redis is faster for key-value lookups | UNVERIFIED |
| A1 | Assumption | Sessions don't need ACID guarantees | UNVERIFIED |
| K1 | Constraint | Must integrate with existing auth | ACCEPTED |
Phase 2: Verification
For each UNVERIFIED claim and assumption, generate specific questions and answer them independently.
<verification_protocol>
- Generate the question FIRST, without thinking about the answer
- Answer the question based ONLY on available evidence
- Mark status: VERIFIED, REFUTED, or UNCERTAIN
CRITICAL: Answer each question independently. Do not let previous answers influence subsequent ones.
</verification_protocol>
Example:
C1: "Redis is faster for key-value lookups"
Q: What is the measured latency difference between Redis and PostgreSQL for our specific access pattern?
A: [Answer based on evidence, not assumption]
Status: UNCERTAIN - No benchmark data available for our pattern
A1: "Sessions don't need ACID guarantees"
Q: What happens to user experience if a session is lost mid-transaction?
A: Shopping cart contents would be lost, requiring re-entry
Status: REFUTED - Some sessions DO need durability (active transactions)
Phase 3: Challenge
Steel-man the strongest argument AGAINST the decision.
<challenge_requirements>
- Assume you are an expert who DISAGREES with this decision
- Present the strongest possible case against it
- Explore at least 2 alternative framings
- Identify what would need to be true for the decision to be wrong
</challenge_requirements>
Structure:
STEEL-MAN AGAINST:
[Present the strongest argument against the decision as if you believe it]
ALTERNATIVE FRAMINGS:
1. [Different way to frame the problem that leads to different solution]
2. [Another framing]
FAILURE CONDITIONS:
- Decision fails if: [specific condition]
- Decision fails if: [specific condition]
Phase 4: Synthesis
Deliver a verdict based on the analysis.
Verdicts:
| Verdict | Meaning | When to Use |
|---|
| STAND | Decision holds under scrutiny | All claims verified, assumptions reasonable, challenge addressed |
| REVISE | Decision needs modification | Some items refuted or uncertain, but core logic sound |
| ESCALATE | Decision should not proceed | Critical items refuted, or insufficient information to decide |
Output Format:
## Verdict: [STAND | REVISE | ESCALATE]
### Summary
[2-3 sentences on overall assessment]
### Critical Findings
| ID | Status | Impact |
|----|--------|--------|
| C1 | VERIFIED | Supports decision |
| A1 | REFUTED | Requires revision |
| A2 | UNCERTAIN | Needs investigation |
### Failed/Uncertain Items
[List items that didn't pass verification with specific concerns]
### Recommendation
[Concrete next step: proceed as-is, modify how, or what to investigate first]
Anti-Patterns
<anti_pattern_stop>
If you catch yourself doing any of these, STOP and correct immediately.
</anti_pattern_stop>
1. Premature agreement
WRONG: "This seems like a reasonable approach. Let me verify..."
RIGHT: "Let me decompose this decision and stress-test each component."
2. Soft challenges
WRONG: "One minor consideration might be..."
RIGHT: "The strongest argument against this decision is..."
3. Skipping verification
WRONG: "This claim is probably true based on general knowledge."
RIGHT: "Q: What specific evidence supports this? A: [cite or mark UNCERTAIN]"
4. Confirmation bias in questions
WRONG: "Isn't it true that Redis is faster?" (leading)
RIGHT: "What is the measured performance difference?" (neutral)
Example
Input:
I'm considering using Redis for session storage instead of PostgreSQL. Redis is faster, sessions are ephemeral, and we already have Redis for caching.
Phase 1 Output:
| ID | Type | Statement | Status |
|---|
| C1 | Claim | Redis is faster for key-value lookups | UNVERIFIED |
| C2 | Claim | We already have Redis deployed | UNVERIFIED |
| A1 | Assumption | Sessions are ephemeral (don't need durability) | UNVERIFIED |
| A2 | Assumption | Our session access is simple key-value | UNVERIFIED |
Phase 2 Output:
C1: Redis is faster for key-value lookups
Q: What is the expected latency improvement for session lookups?
A: Redis typically 0.1-0.5ms vs PostgreSQL 1-5ms for simple key lookups
Status: VERIFIED (but magnitude depends on our specific queries)
A1: Sessions are ephemeral
Q: What data is stored in sessions and what happens if lost?
A: Sessions contain shopping cart state. Loss = customer re-enters items.
Status: REFUTED for active shopping sessions
Phase 3 Output:
STEEL-MAN AGAINST:
Redis is an additional operational dependency with different failure modes than PostgreSQL. Session loss during Redis failover could affect all active users simultaneously, while PostgreSQL sessions would survive database failover. The latency difference (milliseconds) is imperceptible to users, but the operational complexity is real and ongoing.
ALTERNATIVE FRAMINGS:
1. "Session storage" might actually be "transaction state storage" requiring durability
2. The real question might be "how do we handle active transactions during failures?"
FAILURE CONDITIONS:
- Decision fails if: Shopping cart abandonment rate increases after deployment
- Decision fails if: Redis cluster requires dedicated ops attention we can't provide
Phase 4 Output:
## Verdict: REVISE
### Summary
The core decision (Redis for sessions) is reasonable for ephemeral session data, but the assumption that all sessions are ephemeral is incorrect. Active shopping sessions need durability guarantees.
### Critical Findings
| ID | Status | Impact |
|----|--------|--------|
| C1 | VERIFIED | Supports decision |
| C2 | VERIFIED | Reduces new infrastructure |
| A1 | REFUTED | Requires hybrid approach |
| A2 | VERIFIED | Simple access pattern confirmed |
### Failed/Uncertain Items
- A1: Sessions with active shopping carts need durability. Losing cart state = poor UX.
### Recommendation
Proceed with Redis for authentication sessions (truly ephemeral), but keep shopping cart state in PostgreSQL until checkout completes. This captures the performance benefit without the durability risk.