Phase 1 — Diverge (ADHD mode)
Pick N cognitive frames from the frame library. Spawn N parallel Agent SDK queries, each one a fresh isolated session. Each branch sees:- the problem
- one frame’s vantage prompt (e.g. “You think in latency, memory layout, and physical constraints. Re-ask this as a hardware problem.”)
- a system prompt that forbids evaluation, ranking, or hedging — pure generation, JSON array out, no prose
Phase 2 — Focus
Now the critic comes back online. Three passes:1
Score
Every leaf is scored on
novelty / viability / fit (0–10 each), as structured JSON. Ideas that look attractive but are traps (hidden cost, false economy, will not scale, premature abstraction) get tagged with a mechanistic reason — e.g. “shelve isn’t thread-safe under multi-writer load” — not a vague risk label.2
Cluster
Ideas are grouped by underlying angle, not surface keywords: “remove-the-server plays”, “cache-shaped plays”, “batched-window plays”. This surfaces the shape of the design space so you can argue at the angle level, not idea-by-idea.
3
Deepen top-K
For the K highest combined-score non-trap leaves (default K=3), a focus pass generates: a sketch of how the idea works, the load-bearing risk, the first concrete step a builder would take, and 3–5 child ideas (variations, hybrids, unlocks).
- the wide set, clustered
- a 2–4 idea shortlist
- the ★ non-obvious-but-viable pick, flagged explicitly
- the trap list, each trap with the reason it’s a trap
- the deepened branches — the “connected dots”
- one provocation (a wildcard question)
Architecture — the mechanism, not the metaphor
For researchers and infra folks.Context-window management
Each divergent branch is its ownquery() call against the Claude Agent SDK — a fresh, stateless session with no shared KV-cache, no shared message history, no shared system prompt beyond the claude_code preset. The only tokens that enter a branch are:
O(N × per_branch)), not quadratically — there is no broadcast of prior branches into later ones. The “ADHD” fan-out is true concurrent inference, not interleaved decoding on a shared trajectory.
Pruning & convergence criteria
Convergence is a separate LLM call with an inverted system prompt (critic posture, evaluation mandatory). No heuristic threshold and no logit-bias steering — the critic’s structured output is the pruning decision. DefaultK=3; the nonObviousPick field surfaces the highest-novelty viable leaf even if it’s not the highest-fit.
Routing & orchestration
Multi-agent orchestration runs via parallelquery() calls, gated by a configurable semaphore (concurrency, default 4). Frame selection is deterministic per-seed with a codeMode bias toward engineering vantage points. Each frame is a system-prompt payload that re-poses the entire question — “re-ask this as a hardware problem”, “re-ask this as a regulator” — not a logit-level intervention.
Anti-patterns
These are how the method goes wrong. Watch for them.- Convergence disguised as divergence. Ten minor variations of one idea is not breadth. If every candidate shares the same underlying assumption, you have not diverged — you have decorated.
- Weird-for-weird’s-sake with no convergence. A pile of 30 unsorted absurdities is as useless as one safe answer. Always converge.
- Walls of equally-weighted prose. Cluster, label, pull out the best. Structure is half the value.
- Refusing to commit. After diverging, take a position on what is actually promising. “Here are 20 ideas, you decide” is a cop-out.
- Skipping the isolation invariant. Sequential branches in one context anchor each other and the whole method collapses.