Независимый review: есть два blocking finding. (1) save_review принимает неполный и дублирующийся список ranks (api.py:248–264), а в results_json сохраняет только его. Клиент может опустить неудобные документы или повторить один rank, поэтому запись не содержит полный серверный снимок, вопреки плану. Проверяйте, что множество ranks в POST в точности равно ranks snapshot (без дублей), и формируйте полный results_json по snapshot с оценками null для непросмотренных; добавьте тесты пропуска и дубля. (2) В snapshot/SQLite сохраняется self.index (обычно alias akyldash-fragments-current), но не фактический versioned index и нет algorithm_version. После переключения alias записи нельзя надёжно сравнить до/после настройки, хотя это критерий Issue #23. Зафиксируйте разрешённый физический индекс/версию алгоритма на сервере и проверьте это тестом. Остальное: HMAC, лимиты и native controls выглядят уместно; полный unittest запуск не выполнялся из-за чужих изменений рабочей директории.
Независимый review: есть два blocking finding. (1) `save_review` принимает неполный и дублирующийся список ranks (api.py:248–264), а в `results_json` сохраняет только его. Клиент может опустить неудобные документы или повторить один rank, поэтому запись не содержит полный серверный снимок, вопреки плану. Проверяйте, что множество ranks в POST в точности равно ranks snapshot (без дублей), и формируйте полный `results_json` по snapshot с оценками `null` для непросмотренных; добавьте тесты пропуска и дубля. (2) В snapshot/SQLite сохраняется `self.index` (обычно alias `akyldash-fragments-current`), но не фактический versioned index и нет `algorithm_version`. После переключения alias записи нельзя надёжно сравнить до/после настройки, хотя это критерий Issue #23. Зафиксируйте разрешённый физический индекс/версию алгоритма на сервере и проверьте это тестом. Остальное: HMAC, лимиты и native controls выглядят уместно; полный unittest запуск не выполнялся из-за чужих изменений рабочей директории.
Повторный review: первое finding устранено — полный набор ranks обязателен, неполный набор отклоняется. Но остаётся один blocking finding: algorithm_version заполняется API_VERSION (v1), то есть версией HTTP-контракта, а не версией ранжирования. Совместимое изменение весов/analyzer обычно не меняет API v1, поэтому записи всё ещё нельзя надёжно сравнить до/после настройки. Нужна отдельная явно изменяемая константа/параметр версии алгоритма, сохранённая в snapshot и SQLite; добавьте проверку её значения в тест. Также полезно покрыть дубль rank отдельным тестом.
Повторный review: первое finding устранено — полный набор ranks обязателен, неполный набор отклоняется. Но остаётся один blocking finding: `algorithm_version` заполняется `API_VERSION` (`v1`), то есть версией HTTP-контракта, а не версией ранжирования. Совместимое изменение весов/analyzer обычно не меняет API v1, поэтому записи всё ещё нельзя надёжно сравнить до/после настройки. Нужна отдельная явно изменяемая константа/параметр версии алгоритма, сохранённая в snapshot и SQLite; добавьте проверку её значения в тест. Также полезно покрыть дубль rank отдельным тестом.
Финальный повторный независимый review полного PR после cccae44 завершён: blocking findings нет. Отдельный SEARCH_ALGORITHM_VERSION = search-1 теперь подписывается и сохраняется в snapshot/SQLite вместо API version; прежняя проверка полного покрытия ranks и фиксация physical index сохраняются. Новых регрессий, проблем доступности или избыточной сложности не найдено. Полный unittest здесь не запускался из-за несвязанных изменений рабочей директории.
Финальный повторный независимый review полного PR после cccae44 завершён: blocking findings нет. Отдельный `SEARCH_ALGORITHM_VERSION = search-1` теперь подписывается и сохраняется в snapshot/SQLite вместо API version; прежняя проверка полного покрытия ranks и фиксация physical index сохраняются. Новых регрессий, проблем доступности или избыточной сложности не найдено. Полный unittest здесь не запускался из-за несвязанных изменений рабочей директории.
Финальный независимый review полного PR после 73eb938 завершён: blocking findings нет. CHANGELOG точно описывает внутреннюю лабораторию, оценки, комментарии и SQLite-экспорт подписанных снимков. Ранее проверенные защита snapshot, полное покрытие ranks, версии индекса/алгоритма и доступные элементы интерфейса сохранены; changelog-коммит регрессий не внёс. Указанные автором 22 unittest прошли повторно.
Финальный независимый review полного PR после 73eb938 завершён: blocking findings нет. CHANGELOG точно описывает внутреннюю лабораторию, оценки, комментарии и SQLite-экспорт подписанных снимков. Ранее проверенные защита snapshot, полное покрытие ranks, версии индекса/алгоритма и доступные элементы интерфейса сохранены; changelog-коммит регрессий не внёс. Указанные автором 22 unittest прошли повторно.
admin
merged commit 808ac6c792 into main2026-08-28 04:22:47 +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.
Реализует Issue #23: внутренний интерфейс проверки поисковой выдачи с оценкой 0–3, комментариями, просмотром документов, подписанным snapshot выдачи и SQLite-экспортом. Проверки: unittest discover; py_compile; git diff --check
Независимый review: есть два blocking finding. (1)
save_reviewпринимает неполный и дублирующийся список ranks (api.py:248–264), а вresults_jsonсохраняет только его. Клиент может опустить неудобные документы или повторить один rank, поэтому запись не содержит полный серверный снимок, вопреки плану. Проверяйте, что множество ranks в POST в точности равно ranks snapshot (без дублей), и формируйте полныйresults_jsonпо snapshot с оценкамиnullдля непросмотренных; добавьте тесты пропуска и дубля. (2) В snapshot/SQLite сохраняетсяself.index(обычно aliasakyldash-fragments-current), но не фактический versioned index и нетalgorithm_version. После переключения alias записи нельзя надёжно сравнить до/после настройки, хотя это критерий Issue #23. Зафиксируйте разрешённый физический индекс/версию алгоритма на сервере и проверьте это тестом. Остальное: HMAC, лимиты и native controls выглядят уместно; полный unittest запуск не выполнялся из-за чужих изменений рабочей директории.Повторный review: первое finding устранено — полный набор ranks обязателен, неполный набор отклоняется. Но остаётся один blocking finding:
algorithm_versionзаполняетсяAPI_VERSION(v1), то есть версией HTTP-контракта, а не версией ранжирования. Совместимое изменение весов/analyzer обычно не меняет API v1, поэтому записи всё ещё нельзя надёжно сравнить до/после настройки. Нужна отдельная явно изменяемая константа/параметр версии алгоритма, сохранённая в snapshot и SQLite; добавьте проверку её значения в тест. Также полезно покрыть дубль rank отдельным тестом.Финальный повторный независимый review полного PR после
cccae44завершён: blocking findings нет. ОтдельныйSEARCH_ALGORITHM_VERSION = search-1теперь подписывается и сохраняется в snapshot/SQLite вместо API version; прежняя проверка полного покрытия ranks и фиксация physical index сохраняются. Новых регрессий, проблем доступности или избыточной сложности не найдено. Полный unittest здесь не запускался из-за несвязанных изменений рабочей директории.Финальный независимый review полного PR после
73eb938завершён: blocking findings нет. CHANGELOG точно описывает внутреннюю лабораторию, оценки, комментарии и SQLite-экспорт подписанных снимков. Ранее проверенные защита snapshot, полное покрытие ranks, версии индекса/алгоритма и доступные элементы интерфейса сохранены; changelog-коммит регрессий не внёс. Указанные автором 22 unittest прошли повторно.