Strategy/projects/files/sdr/eval_main_merge_analysis.md
+

eval_main_merge_analysis

SDR: eval→main Merge Risk Analysis

Сгенерировано: worker 13:05 MSK 2026-03-11

Реальный масштаб изменений

~976 файлов — это не 976 файлов кода. Реальная разбивка:

Тип Файлов Риск
src/ — core код 12 🟡 Medium
data/eval/results/ ~897 🟢 Нет (результаты бенчмарков)
Infra (Dockerfile, compose) 5 🟡 Конфликты возможны
Прочее (.env, Makefile, docs) ~63 🟢 Низкий

Core изменения в eval (vs main)

Новые файлы

  • src/.../metrics.py (325 строк) — LangChain callbacks для cost tracking
  • src/.../search/openalex_search.py (175 строк) — OpenAlex бесплатный поиск

Модифицированные файлы

  • coordinator.py (+84): QueryParser.clean_query() — убирает “OpenAlex/arXiv” prefix-галлюцинации LLM; authority metadata (DOI/ArXiv/cited_by)
  • micro_researcher.py (+104): rate limit retry (3 попытки + exponential backoff), LangChain callbacks
  • prompts.py (+92): усиленные anti-hallucination правила, English-first search hints, clarification agent “задавать вопросы по умолчанию”
  • deep_researcher.py (+92): улучшения аналогичного характера
  • utils.py (+57): вспомогательные улучшения
  • pyproject.toml: убрана зависимость tavily>=1.1.0 (перешли на self-hosted)

Что есть в main, но нет в eval (3 коммита)

  • 2e2b6ff: Dockerfile (uv via pip), pyproject.toml deps, state.py reasoning field ⚠️ Конфликт!
  • 69157f7: package.json update
  • f9f1b03: next.js security fix ⚠️ Важно!

Риски при слиянии

Конфликты (почти неизбежны)

  • Dockerfile — оба branch меняли
  • pyproject.toml — eval убрал tavily, main обновил зависимости → нужен ручной merge
  • docker-compose.production.yml — изменён в обоих

Production риски src/

  • Все изменения — исправления и добавления, не переписывание
  • metrics.py — новый файл, zero risk
  • openalex_search.py — новый файл, additive
  • Rate limit retry в micro_researcher — defensive, только улучшает
  • Clarification agent prompt fix — баг-фикс (agent никогда не задавал вопросов)

Рекомендуемый подход

# На main ветке:
git checkout main
git checkout eval -- src/open_deep_research/
git add src/
git commit -m "feat: merge eval improvements (OpenAlex, metrics, anti-hallucination, rate limits)"

✅ Минимальный риск: только 12 файлов кода, без data/eval мусора

Вариант B: Full merge через PR

git checkout main
git merge eval  # ожидай конфликты в Dockerfile/pyproject.toml/compose

⚠️ Потребует разрешения конфликтов в 3+ infra файлах

Вариант C: Rebase eval на main

git checkout eval
git rebase origin/main  # подхватим 3 main-only коммита
# Resolve conflicts → затем PR eval→main

⚠️ Рискованно для shared branch

Итог

Реальный риск: средний (не высокий). 12 файлов изменений — все исправления и добавления. Главный риск — конфликты в Dockerfile/pyproject.toml.

Рекомендация Феанора: Вариант A (selective merge src/). Bypasses data/eval clutter. Quick and clean. Потребует ОК Даниила как propose-уровень задача.

Choose icon