# PR — remove experimental search strategies not in the frontend

Components deleted in this PR (see the PR diff / `git show <sha>:<path>` for
the full pre-deletion code — this file only summarises what was novel).

All deleted strategies were reachable only through `create_strategy()` when
selected via the "Show All Strategies" toggle (`search.show_all_strategies`,
also removed) plus their own tests; none were on the default dropdown. The
surviving, factory-reachable strategies are `SourceBasedSearchStrategy`
(`source-based`), `FocusedIterationStrategy` (`focused-iteration` /
`focused-iteration-standard`), `TopicOrganizationStrategy`
(`topic-organization`), `MCPSearchStrategy` (`mcp`), `LangGraphAgentStrategy`
(`langgraph-agent`), and the internal `NewsAggregationStrategy` (`news`).

---

## Component group: constraint / evidence / dual-confidence chain

Files deleted (all under `src/local_deep_research/advanced_search_system/strategies/`):
`evidence_based_strategy.py`, `evidence_based_strategy_v2.py`,
`constrained_search_strategy.py`, `parallel_constrained_strategy.py`,
`early_stop_constrained_strategy.py`, `smart_query_strategy.py`,
`dual_confidence_strategy.py`, `dual_confidence_with_rejection.py`,
`concurrent_dual_confidence_strategy.py`, `constraint_parallel_strategy.py`,
plus the support packages `constraint_checking/` and `answer_decoding/`.

- Reachability: a single-rooted inheritance chain
  (`EvidenceBasedStrategy` → `ConstrainedSearchStrategy` → … →
  `DualConfidenceWithRejectionStrategy` → `{Concurrent…, ConstraintParallel}`)
  reachable only via the show-all dropdown and their own tests.
- Closest reachable successor: none direct — this was the BrowseComp
  entity-finding lineage. `FocusedIterationStrategy` covers factual Q&A in
  production and still uses the surviving BrowseComp *question generators*
  (`questions/browsecomp_question.py`, `questions/flexible_browsecomp_question.py`).

### Useful ideas from the pre-deletion versions

- **Dual-confidence scoring** — scored candidates with separate positive /
  negative / uncertainty signals (`uncertainty_penalty`, `negative_weight`)
  rather than a single relevance score, with an early-rejection threshold to
  prune candidates that strongly violate a critical constraint. A genuinely
  distinctive evaluation idea; only ever exercised on BrowseComp-style
  entity puzzles, not on general research.
- **Concurrent search + evaluation** — `ConcurrentDualConfidenceStrategy` ran
  candidate search and constraint evaluation on overlapping thread pools with
  a quality-plateau early stop, instead of strict search-then-evaluate rounds.
- **`constraint_checking/` checkers** — pluggable checker hierarchy
  (strict / threshold / dual-confidence / rejection-engine) over a shared
  `BaseConstraintChecker` interface. The pluggability was the interesting part;
  it had no consumer outside this strategy chain.

### Why deletion was safe

The whole lineage was self-contained (each class only inherited from the one
above it) and never on the default dropdown. The reusable, validated pieces —
the BrowseComp question generators and the `candidate_exploration/` explorers —
live in separate packages that survive and are still used by
`FocusedIterationStrategy`.

### Recovery path

Do not restore the files. If dual-confidence scoring proves worth reviving,
add it as an evaluation option on a surviving strategy rather than
resurrecting the inheritance chain.

---

## Component group: query-decomposition strategies

Files deleted: `recursive_decomposition_strategy.py`,
`adaptive_decomposition_strategy.py`, `smart_decomposition_strategy.py`.

- Reachability: factory keys `recursive`, `adaptive`, `smart`; show-all only.
- Closest reachable successor: `SourceBasedSearchStrategy` / the
  decomposition question generator (`questions/decomposition_question.py`,
  which survives).

### Useful ideas

- **Adaptive step typing** — `AdaptiveDecompositionStrategy` modelled a run as
  typed steps (`StepType`: constraint-extraction / initial-search /
  verification / refinement / synthesis) with a confidence heuristic
  (verified-facts / constraints, +0.1 for having candidates, capped 0.95).
  A tidy state model that was never benchmarked against the simpler strategies.

### Why deletion was safe

Exploratory; the surviving `DecompositionQuestionGenerator` keeps the
sub-query generation idea available to any strategy.

### Recovery path

Do not restore. Add a decomposition option to a surviving strategy if needed.

---

## Component group: simple / single-pass strategies

Files deleted: `rapid_search_strategy.py`, `parallel_search_strategy.py`,
`standard_strategy.py`, `iterdrag_strategy.py`,
`iterative_reasoning_strategy.py` (factory keys `iterative` and
`iterative-reasoning`).

- Reachability: show-all only, plus benchmark defaults that pointed at
  `iterdrag` (now repointed to `source-based`).
- Closest reachable successor: `SourceBasedSearchStrategy` (single/parallel
  passes) and `FocusedIterationStrategy` (iterative reasoning with knowledge
  accumulation).

### Useful ideas

- **IterDRAG** — interleaved iterative retrieval and generation; was the
  historical benchmark default. Its retrieval-augmented loop is subsumed by
  focused-iteration's knowledge accumulation.
- **`RapidSearchStrategy`** — deliberately single-iteration for latency-bound
  use; the same effect is achievable with `source-based` and
  `max_iterations=1`.

### Why deletion was safe

All were thin variants of behavior the two surviving general strategies
provide via parameters.

### Recovery path

Prefer flags on `source-based` / `focused-iteration` over restoring the files.

---

## Component group: meta / specialised strategies

Files deleted: `iterative_refinement_strategy.py`,
`browsecomp_optimized_strategy.py`, `browsecomp_entity_strategy.py`,
`modular_strategy.py` (factory keys `modular` / `modular-parallel`).

- Reachability: show-all only.
- Closest reachable successor: `FocusedIterationStrategy` (BrowseComp
  optimisation + question generation) and `TopicOrganizationStrategy`.

### Useful ideas

- **`IterativeRefinementStrategy`** — a *wrapper* meta-strategy: it ran an
  inner strategy (default `source-based`), then used LLM gap-analysis to drive
  follow-up refinement rounds. The wrap-any-strategy interface was the novel
  part; it added cost without a benchmarked win.
- **`ModularStrategy`** — composed constraint-checker + candidate-explorer
  modules selected by string keys. The module-composition idea is interesting
  but only ever wired to the now-deleted constraint checkers.
- **`BrowseCompEntityStrategy`** — entity-focused knowledge-graph building for
  BrowseComp puzzles; the question-generation half survives in `questions/`.

### Why deletion was safe

None were on the default dropdown; their validated sub-pieces (BrowseComp
question generators, `candidate_exploration/`) survive independently.

### Recovery path

Do not restore. Re-expose the refinement/modular ideas as options on a
surviving strategy if a benchmark justifies it.
