| name | stagnation |
| description | Detects when a research session is going in circles — repeated searches with no new results, re-reading already-summarized papers, or ideas that repeat earlier rejected ones — and suggests a pivot. |
stagnation — loop detection
Process
- Track session state. Compare each new action against what's already been done this session: search queries already run (via
_papers/ session notes), papers already summarized (via _papers/ per-paper files), ideas already generated (via _ideas/ notes).
- Detect repetition. Flag when: a search query is a near-duplicate of one already run with no new results, a paper about to be read already has a summary note, or a new idea substantially repeats one already listed (including ones the user rejected).
- Surface it explicitly. Don't silently re-run or re-generate — tell the user directly: "this looks like the Nth pass over the same ground."
- Suggest a concrete pivot. Offer a specific alternative: narrow or broaden the search query, pivot to an adjacent subfield, or switch branches entirely (e.g. from more searching to moving into ideation with what's already been found).
Anti-Rationalization
- "One more search might turn up something new" — if the last 2-3 near-identical searches didn't, say so instead of quietly trying again.
- "The user asked for it again, so just do it" — a user re-requesting the same thing is itself a stagnation signal worth surfacing, not a reason to skip the check.
- "It's a slightly different idea" — check substance, not phrasing; a reworded version of a rejected idea is still the same idea.
Evidence
Stagnation detection is working when: repeated searches/reads/ideas are actually cross-checked against session history (not just judged from memory), and every detected loop comes with a concrete suggested pivot, not just a bare "you're looping" notice.
Red Flags
- Re-running a near-identical search 3+ times without flagging it
- Re-summarizing a paper that already has a summary note in
_papers/
- Generating an idea list that silently repeats a previously rejected idea