| name | stagnation |
| description | Safety gate. Detects when a research session is circling — repeated searches returning the same sources, re-analyzing the same competitors without new data, or GTM iterations that keep re-arguing the same channel choice — and suggests a pivot. Runs continuously across the pipeline. |
Stagnation — Detect Circular Research
Market research can loop: the same 3 competitors get re-searched with
slightly different queries, returning the same articles, while the actual
gaps in research/FINDINGS.md stay unverified.
Signals to Watch
- Repeated searches, same results. Two or more search queries in this
session returned overlapping source sets with no new tier-1/2 evidence.
- Re-reading without re-deciding. The same competitor's FINDINGS.md
entry gets revisited multiple times without any field changing.
- GTM channel indecision.
execute or roi_evaluation re-argues the
same channel choice 3+ times without new cost/conversion data entering
the discussion.
- Scope creep disguised as thoroughness. Adding "just one more
competitor" or "just one more market angle" repeatedly instead of moving
to
decide/execute with what's already gathered.
Process
- If 2+ of the above signals trigger, stop and name it explicitly to the
user: "This looks like circular research on {topic} — the last N searches
returned the same sources."
- Propose a pivot, one of:
- Move forward with current evidence, explicitly marking the
under-researched point as an "unverified assumption" in the relevant
deliverable rather than continuing to search.
- Change the search angle entirely (different query framing, different
source type — e.g. switch from press coverage to pricing pages
directly).
- Ask the user for a missing input only they have (e.g. their own
historical CAC data) instead of searching further.
- Record the pivot decision so it doesn't recur silently.
Write to research/STAGNATION-LOG.md (append):
### {ISO-8601}
**Signal**: {which of the 4 triggered}
**Topic circling**: {competitor / channel / market angle}
**Pivot taken**: {proceed with gap flagged / new search angle / asked user}
Anti-Rationalization
- "One more search might find it" said for the 4th time in a row is the
stagnation signal itself, not a reason to continue.
- Thoroughness is valuable up to the point where it stops producing new
evidence — after that it's avoidance of a decision.
Evidence
The gate is working when at least one pivot has been logged for any
engagement that runs long enough to hit 2+ stagnation signals; a short,
efficient engagement with zero log entries is also a valid (good) outcome.
Red Flags
- Same competitor name searched 3+ times in one session with near-identical
query text.
- A GTM plan section rewritten 3+ times with no new evidence cited between
versions.
- User expresses frustration ("we've been going in circles") before the
gate catches it — the gate should trigger first.