Добавлен независимый набор из 250 ситуаций и подробный отчет второй волны сравнения с Consultant.ru. Предыдущий отчет сохранен без изменений и не использован.
Кандидат minimum_should_match=1 проверен изолированно, но отклонен после review: 17 перестановок top-1, включая нерелевантные первые карточки для criminal-11 и administrative-14.
Проверенные компромиссы не дали подтвержденного улучшения. Поисковый код возвращен к production baseline 0.10.4 / search-6; production не менялся.
Отчет содержит метрики, примеры, сохраненные результаты проб и следующий шаг — экспертную разметку.
Проверки
13 backend-тестов прошли.
Production baseline перепроверен read-only на 250 запросах.
Экспериментальные варианты проверялись в изолированном контейнере.
## Изменения
- Добавлен независимый набор из 250 ситуаций и подробный отчет второй волны сравнения с Consultant.ru. Предыдущий отчет сохранен без изменений и не использован.
- Кандидат `minimum_should_match=1` проверен изолированно, но отклонен после review: 17 перестановок top-1, включая нерелевантные первые карточки для `criminal-11` и `administrative-14`.
- Проверенные компромиссы не дали подтвержденного улучшения. Поисковый код возвращен к production baseline `0.10.4 / search-6`; production не менялся.
- Отчет содержит метрики, примеры, сохраненные результаты проб и следующий шаг — экспертную разметку.
## Проверки
- 13 backend-тестов прошли.
- Production baseline перепроверен read-only на 250 запросах.
- Экспериментальные варианты проверялись в изолированном контейнере.
Подробности: `reports/search-benchmark-wave-2-2026-09-25/REPORT.md`
Review finding (blocking): REPORT.md mixes search generations in the domain table without labeling it. The overall metrics section reports baseline capture/summary.json (e.g. Akyldash topic hit@10 = 84.4%), but the Akyldash domain values match post-tuning search7-mm1/summary.json (e.g. labour 56%/96%; baseline was 56%/92%). Please label the domain table as post-tuning and identify the Consultant values as baseline, or use one generation consistently. This makes the current comparison ambiguous. No blocking search-code finding identified.
Review finding (blocking): `REPORT.md` mixes search generations in the domain table without labeling it. The overall metrics section reports baseline `capture/summary.json` (e.g. Akyldash topic hit@10 = 84.4%), but the Akyldash domain values match post-tuning `search7-mm1/summary.json` (e.g. labour 56%/96%; baseline was 56%/92%). Please label the domain table as post-tuning and identify the Consultant values as baseline, or use one generation consistently. This makes the current comparison ambiguous. No blocking search-code finding identified.
Review finding (blocking): прошлое замечание частично закрыто — разделение поколений в отраслевой таблице теперь явно подписано. Однако в таблице «Результат настройки» latency after (медиана 15,5 мс, P95 27,5 мс) взята из отклоненной пробы search7/summary.json (2<50%; 20 пустых результатов), тогда как принятый search7-mm1/summary.json показывает 65,4 мс и 273,6 мс. Исправьте эти две цифры либо пометьте источник/поколение, чтобы не приписывать latency не принятому алгоритму. Других блокирующих замечаний по коду не выявил.
Review finding (blocking): прошлое замечание частично закрыто — разделение поколений в отраслевой таблице теперь явно подписано. Однако в таблице «Результат настройки» latency after (медиана 15,5 мс, P95 27,5 мс) взята из отклоненной пробы `search7/summary.json` (2<50%; 20 пустых результатов), тогда как принятый `search7-mm1/summary.json` показывает 65,4 мс и 273,6 мс. Исправьте эти две цифры либо пометьте источник/поколение, чтобы не приписывать latency не принятому алгоритму. Других блокирующих замечаний по коду не выявил.
Independent review of current PR diff: both prior blocking findings are fixed. The domain table labels Akyldash as post-tuning and Consultant as baseline; the accepted search7-mm1 latency is now 65.4 ms median / 273.6 ms P95. I reviewed the full current diff and relevant query path; the one-line fallback change is covered by existing tests, and the reported before/after metrics match the included summaries. Ran 13 relevant backend tests: all pass. No blocking findings.
Independent review of current PR diff: both prior blocking findings are fixed. The domain table labels Akyldash as post-tuning and Consultant as baseline; the accepted search7-mm1 latency is now 65.4 ms median / 273.6 ms P95. I reviewed the full current diff and relevant query path; the one-line fallback change is covered by existing tests, and the reported before/after metrics match the included summaries. Ran 13 relevant backend tests: all pass. No blocking findings.
Финальное независимое ревью после changelog: проверил полный diff PR #39, путь построения OpenSearch-запроса, тесты и метрики в артефактах. Предыдущие замечания закрыты; цифры принятого search7-mm1 соответствуют сводке. Блокирующих замечаний нет. Наблюдение: в изолированном прогоне P95 вырос с 54,1 до 273,6 мс; это отражено в отчете, стоит проверить latency и после выкладки.
Финальное независимое ревью после changelog: проверил полный diff PR #39, путь построения OpenSearch-запроса, тесты и метрики в артефактах. Предыдущие замечания закрыты; цифры принятого `search7-mm1` соответствуют сводке. Блокирующих замечаний нет. Наблюдение: в изолированном прогоне P95 вырос с 54,1 до 273,6 мс; это отражено в отчете, стоит проверить latency и после выкладки.
Independent review of PR #39 at 3b033319: checked the complete current diff, the query change and its tests, report metrics, and the latest tuning/rollout status. The earlier review fixes remain correct. The plan accurately marks review complete and production rollout pending manual merge; it states the restart impact and post-deploy checks. No blocking findings.
Independent review of PR #39 at `3b033319`: checked the complete current diff, the query change and its tests, report metrics, and the latest tuning/rollout status. The earlier review fixes remain correct. The plan accurately marks review complete and production rollout pending manual merge; it states the restart impact and post-deploy checks. No blocking findings.
Independent review of the current PR #39 diff, including the production-before-rollout snapshot: I checked all 250 query IDs/formulations against the manifest, all three result sets against their summaries, the before/after and rejected-probe values, the report caveats, and the query implementation/tests. Production snapshot rows reproduce the baseline ordering/metrics; search7-mm1 is kept separate from the rejected 2<50% run. No blocking findings. Non-blocking reproducibility note: the raw result files do not themselves record runtime/index metadata or the collection command, so those details rely on the report description.
Independent review of the current PR #39 diff, including the production-before-rollout snapshot: I checked all 250 query IDs/formulations against the manifest, all three result sets against their summaries, the before/after and rejected-probe values, the report caveats, and the query implementation/tests. Production snapshot rows reproduce the baseline ordering/metrics; search7-mm1 is kept separate from the rejected 2<50% run. No blocking findings. Non-blocking reproducibility note: the raw result files do not themselves record runtime/index metadata or the collection command, so those details rely on the report description.
Нужна доработка порога fallback в backend/search/query.py:168. Переход minimum_should_match с 2 на 1 пропускает документы по одному случайному слову и в сохранённом прогоне поднимает их выше более подходящих результатов. Например, в search7-mm1/results.jsonl для criminal-11 (изъятый при обыске телефон) первым стало распоряжение об установке телефонов в автомашинах (43480), а прежний документ о передаче материалов следователю (94181) опустился на второе место. Для administrative-14 (задержание на митинге) профильные правила проведения митингов (23570) также сместились с первого места на второе. По 250 парным запросам первый результат изменился в 17 случаях. Эти регрессии не отражаются надёжно лексическим topic hit@10, на котором основано принятие настройки. Нужна настройка, сохраняющая покрытие без таких перестановок, и проверка изменившихся top-1 перед выкладкой.
Проверка: 13 backend-тестов прошли; сравнил capture/results.jsonl и search7-mm1/results.jsonl по одинаковым ID и формулировкам.
Нужна доработка порога fallback в `backend/search/query.py:168`. Переход `minimum_should_match` с 2 на 1 пропускает документы по одному случайному слову и в сохранённом прогоне поднимает их выше более подходящих результатов. Например, в `search7-mm1/results.jsonl` для `criminal-11` (изъятый при обыске телефон) первым стало распоряжение об установке телефонов в автомашинах (`43480`), а прежний документ о передаче материалов следователю (`94181`) опустился на второе место. Для `administrative-14` (задержание на митинге) профильные правила проведения митингов (`23570`) также сместились с первого места на второе. По 250 парным запросам первый результат изменился в 17 случаях. Эти регрессии не отражаются надёжно лексическим topic hit@10, на котором основано принятие настройки. Нужна настройка, сохраняющая покрытие без таких перестановок, и проверка изменившихся top-1 перед выкладкой.
Проверка: 13 backend-тестов прошли; сравнил `capture/results.jsonl` и `search7-mm1/results.jsonl` по одинаковым ID и формулировкам.
Independent review of PR #39 at 2b5b79c: blocking finding #127 is resolved—the final query uses minimum_should_match=2 and search-6/0.10.4; this matches main. I verified all 250 production snapshot rows match baseline ordering, while search7-mm1 independently reproduces the 17 top-1 changes cited in the finding. Report and tuning plan now distinguish the rejected candidate from final baseline; version references, artifact links/sets, and status are consistent. The 13 relevant backend tests pass, and git diff --check is clean. No blocking findings.
Independent review of PR #39 at `2b5b79c`: blocking finding #127 is resolved—the final query uses `minimum_should_match=2` and `search-6`/`0.10.4`; this matches `main`. I verified all 250 production snapshot rows match baseline ordering, while `search7-mm1` independently reproduces the 17 top-1 changes cited in the finding. Report and tuning plan now distinguish the rejected candidate from final baseline; version references, artifact links/sets, and status are consistent. The 13 relevant backend tests pass, and `git diff --check` is clean. No blocking findings.
Повторно проверил PR на коммите 2b5b79c6, независимо от последнего комментария после коммита. Текущий поисковый код, версии и тесты возвращены к 0.10.4 / search-6 и совпадают с базовой веткой; прежняя регрессия однословного fallback в итоговый diff не входит. Сверил все 250 ID и формулировок во всех сохранённых прогонах, пересчитал ключевые метрики из строк результатов: значения отчёта совпадают. Двухветочная проба действительно сохраняет baseline top-10 без изменений. git diff --check чист; 13 профильных backend-тестов прошли. Блокирующих замечаний к текущему состоянию PR нет.
Повторно проверил PR на коммите `2b5b79c6`, независимо от последнего комментария после коммита. Текущий поисковый код, версии и тесты возвращены к `0.10.4 / search-6` и совпадают с базовой веткой; прежняя регрессия однословного fallback в итоговый diff не входит. Сверил все 250 ID и формулировок во всех сохранённых прогонах, пересчитал ключевые метрики из строк результатов: значения отчёта совпадают. Двухветочная проба действительно сохраняет baseline top-10 без изменений. `git diff --check` чист; 13 профильных backend-тестов прошли. Блокирующих замечаний к текущему состоянию PR нет.
Merge/update review at ac4380c: the merge commit has origin/main (2ffb024) as its second parent. The PR diff against that main contains the same 18 files as the pre-update diff; no unexpected changes appeared. Worktree-only .gitignore edit and prior untracked report remain intact. The official approval at 2b5b79c is still non-stale, finding #127 is dismissed, and the PR remains open. Gitea reports no commit status checks for this merge commit (total_count: 0); git diff --check is clean. No blocking findings.
Merge/update review at `ac4380c`: the merge commit has `origin/main` (`2ffb024`) as its second parent. The PR diff against that main contains the same 18 files as the pre-update diff; no unexpected changes appeared. Worktree-only `.gitignore` edit and prior untracked report remain intact. The official approval at `2b5b79c` is still non-stale, finding #127 is dismissed, and the PR remains open. Gitea reports no commit status checks for this merge commit (`total_count: 0`); `git diff --check` is clean. No blocking findings.
admin
merged commit 93e5fc5837 into main2026-09-26 07:18:16 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Изменения
minimum_should_match=1проверен изолированно, но отклонен после review: 17 перестановок top-1, включая нерелевантные первые карточки дляcriminal-11иadministrative-14.0.10.4 / search-6; production не менялся.Проверки
Подробности:
reports/search-benchmark-wave-2-2026-09-25/REPORT.mdReview finding (blocking):
REPORT.mdmixes search generations in the domain table without labeling it. The overall metrics section reports baselinecapture/summary.json(e.g. Akyldash topic hit@10 = 84.4%), but the Akyldash domain values match post-tuningsearch7-mm1/summary.json(e.g. labour 56%/96%; baseline was 56%/92%). Please label the domain table as post-tuning and identify the Consultant values as baseline, or use one generation consistently. This makes the current comparison ambiguous. No blocking search-code finding identified.Review finding (blocking): прошлое замечание частично закрыто — разделение поколений в отраслевой таблице теперь явно подписано. Однако в таблице «Результат настройки» latency after (медиана 15,5 мс, P95 27,5 мс) взята из отклоненной пробы
search7/summary.json(2<50%; 20 пустых результатов), тогда как принятыйsearch7-mm1/summary.jsonпоказывает 65,4 мс и 273,6 мс. Исправьте эти две цифры либо пометьте источник/поколение, чтобы не приписывать latency не принятому алгоритму. Других блокирующих замечаний по коду не выявил.Independent review of current PR diff: both prior blocking findings are fixed. The domain table labels Akyldash as post-tuning and Consultant as baseline; the accepted search7-mm1 latency is now 65.4 ms median / 273.6 ms P95. I reviewed the full current diff and relevant query path; the one-line fallback change is covered by existing tests, and the reported before/after metrics match the included summaries. Ran 13 relevant backend tests: all pass. No blocking findings.
Финальное независимое ревью после changelog: проверил полный diff PR #39, путь построения OpenSearch-запроса, тесты и метрики в артефактах. Предыдущие замечания закрыты; цифры принятого
search7-mm1соответствуют сводке. Блокирующих замечаний нет. Наблюдение: в изолированном прогоне P95 вырос с 54,1 до 273,6 мс; это отражено в отчете, стоит проверить latency и после выкладки.Independent review of PR #39 at
3b033319: checked the complete current diff, the query change and its tests, report metrics, and the latest tuning/rollout status. The earlier review fixes remain correct. The plan accurately marks review complete and production rollout pending manual merge; it states the restart impact and post-deploy checks. No blocking findings.Independent review of the current PR #39 diff, including the production-before-rollout snapshot: I checked all 250 query IDs/formulations against the manifest, all three result sets against their summaries, the before/after and rejected-probe values, the report caveats, and the query implementation/tests. Production snapshot rows reproduce the baseline ordering/metrics; search7-mm1 is kept separate from the rejected 2<50% run. No blocking findings. Non-blocking reproducibility note: the raw result files do not themselves record runtime/index metadata or the collection command, so those details rely on the report description.
Нужна доработка порога fallback в
backend/search/query.py:168. Переходminimum_should_matchс 2 на 1 пропускает документы по одному случайному слову и в сохранённом прогоне поднимает их выше более подходящих результатов. Например, вsearch7-mm1/results.jsonlдляcriminal-11(изъятый при обыске телефон) первым стало распоряжение об установке телефонов в автомашинах (43480), а прежний документ о передаче материалов следователю (94181) опустился на второе место. Дляadministrative-14(задержание на митинге) профильные правила проведения митингов (23570) также сместились с первого места на второе. По 250 парным запросам первый результат изменился в 17 случаях. Эти регрессии не отражаются надёжно лексическим topic hit@10, на котором основано принятие настройки. Нужна настройка, сохраняющая покрытие без таких перестановок, и проверка изменившихся top-1 перед выкладкой.Проверка: 13 backend-тестов прошли; сравнил
capture/results.jsonlиsearch7-mm1/results.jsonlпо одинаковым ID и формулировкам.Tune search fallback for everyday legal queriesto Review second wave of search relevanceIndependent review of PR #39 at
2b5b79c: blocking finding #127 is resolved—the final query usesminimum_should_match=2andsearch-6/0.10.4; this matchesmain. I verified all 250 production snapshot rows match baseline ordering, whilesearch7-mm1independently reproduces the 17 top-1 changes cited in the finding. Report and tuning plan now distinguish the rejected candidate from final baseline; version references, artifact links/sets, and status are consistent. The 13 relevant backend tests pass, andgit diff --checkis clean. No blocking findings.Повторно проверил PR на коммите
2b5b79c6, независимо от последнего комментария после коммита. Текущий поисковый код, версии и тесты возвращены к0.10.4 / search-6и совпадают с базовой веткой; прежняя регрессия однословного fallback в итоговый diff не входит. Сверил все 250 ID и формулировок во всех сохранённых прогонах, пересчитал ключевые метрики из строк результатов: значения отчёта совпадают. Двухветочная проба действительно сохраняет baseline top-10 без изменений.git diff --checkчист; 13 профильных backend-тестов прошли. Блокирующих замечаний к текущему состоянию PR нет.Merge/update review at
ac4380c: the merge commit hasorigin/main(2ffb024) as its second parent. The PR diff against that main contains the same 18 files as the pre-update diff; no unexpected changes appeared. Worktree-only.gitignoreedit and prior untracked report remain intact. The official approval at2b5b79cis still non-stale, finding #127 is dismissed, and the PR remains open. Gitea reports no commit status checks for this merge commit (total_count: 0);git diff --checkis clean. No blocking findings.