Добавить реестр доступности учебной литературы ВШЭ #1

Merged
admin merged 13 commits from feature/literature-audit into main 2026-11-01 08:06:24 +00:00
Collaborator

Добавляет приложение «Сверка» по /courses: реестр ссылок из основной и дополнительной литературы курсов пяти программ ВШЭ. Пользователь видит материал, причину недоступности, дату проверки и исходный курс; доступны поиск, фильтры и CSV.

Проверки запускаются вручную либо ежедневно/еженедельно по московскому времени. Серверный worker выполняет расписание при закрытом браузере, сохраняет очередь и продолжает её после перезапуска. Неизменившиеся курсы используют кэш; полная проверка обновляет внешние ссылки. Расписание по умолчанию выключено; изменение или отключение не прерывает уже начатую автоматическую проверку. Авторизация не требуется.

Сервер: Next.js/Node24 и PostgreSQL с отдельными базой и ролью на существующем сервере. Добавлены standalone Docker runtime, healthcheck, Compose и Nginx-сниппет. Внешние HTTP-запросы проверяют публичность DNS и закрепляют разрешённый адрес в сокете; перенаправления проверяются заново. HTTP200, пустые ответы, JavaScript-заглушки и признаки ограниченного доступа различаются явно.

Риск: HIGH — публичные сетевые запросы, постоянное хранилище PostgreSQL и deployment-конфигурация.

Проверено:

  • 25/25 тестов на настоящем локальном PostgreSQL с изолированными тестовыми схемами; TypeScript и production-сборка Next.js — PASS.
  • Docker runtime от UID1000 с read-only filesystem: страница, API и шрифты HTTP200; допустимый Origin HTTP200, чужой HTTP403 — PASS.
  • Проверка по расписанию без браузера обнаружила 20 реальных курсов ВШЭ; перезапуск сохранил PostgreSQL run ID и настройки — PASS.
  • Интерфейс на desktop/mobile: еженедельный запуск в пятницу, полная проверка, изменение времени, сохранение и повторное чтение настроек, отключение расписания — PASS.
  • Тестовые контейнеры убраны. Последний commit меняет только changelog; runtime и build inputs после этих проверок не изменены.

Включены SemVer 1.2.0, changelog и лицензии локально размещённых шрифтов. Production deployment ещё не выполнен. Требуется финальное независимое review полного текущего diff; PR не сливать автоматически.

Добавляет приложение «Сверка» по /courses: реестр ссылок из основной и дополнительной литературы курсов пяти программ ВШЭ. Пользователь видит материал, причину недоступности, дату проверки и исходный курс; доступны поиск, фильтры и CSV. Проверки запускаются вручную либо ежедневно/еженедельно по московскому времени. Серверный worker выполняет расписание при закрытом браузере, сохраняет очередь и продолжает её после перезапуска. Неизменившиеся курсы используют кэш; полная проверка обновляет внешние ссылки. Расписание по умолчанию выключено; изменение или отключение не прерывает уже начатую автоматическую проверку. Авторизация не требуется. Сервер: Next.js/Node24 и PostgreSQL с отдельными базой и ролью на существующем сервере. Добавлены standalone Docker runtime, healthcheck, Compose и Nginx-сниппет. Внешние HTTP-запросы проверяют публичность DNS и закрепляют разрешённый адрес в сокете; перенаправления проверяются заново. HTTP200, пустые ответы, JavaScript-заглушки и признаки ограниченного доступа различаются явно. Риск: HIGH — публичные сетевые запросы, постоянное хранилище PostgreSQL и deployment-конфигурация. Проверено: - 25/25 тестов на настоящем локальном PostgreSQL с изолированными тестовыми схемами; TypeScript и production-сборка Next.js — PASS. - Docker runtime от UID1000 с read-only filesystem: страница, API и шрифты HTTP200; допустимый Origin HTTP200, чужой HTTP403 — PASS. - Проверка по расписанию без браузера обнаружила 20 реальных курсов ВШЭ; перезапуск сохранил PostgreSQL run ID и настройки — PASS. - Интерфейс на desktop/mobile: еженедельный запуск в пятницу, полная проверка, изменение времени, сохранение и повторное чтение настроек, отключение расписания — PASS. - Тестовые контейнеры убраны. Последний commit меняет только changelog; runtime и build inputs после этих проверок не изменены. Включены SemVer 1.2.0, changelog и лицензии локально размещённых шрифтов. Production deployment ещё не выполнен. Требуется финальное независимое review полного текущего diff; PR не сливать автоматически.
codex added 1 commit 2026-10-29 14:23:34 +00:00
agent approved these changes 2026-10-29 14:30:33 +00:00
Dismissed
agent left a comment
Collaborator

Независимое ревью полного PR: 45 файлов, HEAD 55f9d43ea2, base 484095c084. Блокирующих замечаний не найдено. Проверены PostgreSQL pool/транзакции на одном client, advisory locks, атомарный claim расписания, гонки ручного и фонового запуска, lease/token с FOR UPDATE, rollback и сохранение очереди; SSRF/DNS pinning/TLS/redirects, классификация доступности, UI/API/Origin, supervisor, Docker/Compose и deployment-сниппет. Ранее найденные ошибки классификации и первоначальной загрузки формы исправлены. Самостоятельно воспроизведены 13/13 checker+Origin тестов и TypeScript; все 45 исходных blobs сопоставлены с HEAD без различий. Root-runner подтвердил 25/25 тестов на реальном изолированном локальном PostgreSQL и Docker smoke с чтением 20 курсов ВШЭ, выполнением расписания без браузера и сохранением состояния после restart. DB-тесты и их изоляция также проверены по коду. Риск HIGH: публичные сетевые запросы и PostgreSQL/deployment. Это одобрение кода указанного HEAD, не подтверждение production-размещения. Merge не выполнялся.

Независимое ревью полного PR: 45 файлов, HEAD 55f9d43ea221027c3d90c8274802dceaf42f79d8, base 484095c0844dd80c30b3c28de12e57020f6fca09. Блокирующих замечаний не найдено. Проверены PostgreSQL pool/транзакции на одном client, advisory locks, атомарный claim расписания, гонки ручного и фонового запуска, lease/token с FOR UPDATE, rollback и сохранение очереди; SSRF/DNS pinning/TLS/redirects, классификация доступности, UI/API/Origin, supervisor, Docker/Compose и deployment-сниппет. Ранее найденные ошибки классификации и первоначальной загрузки формы исправлены. Самостоятельно воспроизведены 13/13 checker+Origin тестов и TypeScript; все 45 исходных blobs сопоставлены с HEAD без различий. Root-runner подтвердил 25/25 тестов на реальном изолированном локальном PostgreSQL и Docker smoke с чтением 20 курсов ВШЭ, выполнением расписания без браузера и сохранением состояния после restart. DB-тесты и их изоляция также проверены по коду. Риск HIGH: публичные сетевые запросы и PostgreSQL/deployment. Это одобрение кода указанного HEAD, не подтверждение production-размещения. Merge не выполнялся.
codex added 1 commit 2026-10-29 14:35:37 +00:00
agent approved these changes 2026-10-29 14:37:07 +00:00
Dismissed
agent left a comment
Collaborator

Финальное независимое повторное ревью полного PR, HEAD 1b87f38c21 относительно base 484095c084. Блокирующих замечаний нет. Подтверждено, что с ранее полностью проверенного 55f9d43 изменена только одна строка CHANGELOG: расписание выключено по умолчанию, изменение настроек не прерывает текущий автоматический запуск. Это соответствует DEFAULT_SCHEDULE и schedulerStep. Все runtime/config/test/dependency blobs прежние, поэтому выводы полного предыдущего ревью и результаты проверок применимы: 13/13 тестов и TypeScript воспроизведены reviewer, 25/25 PostgreSQL-тестов и Docker/UI smoke подтверждены root-runner. git diff --check полного текущего PR прошёл. Предыдущие исправления классификации, initial GET формы, атомарности очереди и расписания сохранены; новых проблем не обнаружено. Одобрение относится к этому HEAD. Merge и production-размещение не выполнялись.

Финальное независимое повторное ревью полного PR, HEAD 1b87f38c21edcf2a099b18c8662266a5314db284 относительно base 484095c0844dd80c30b3c28de12e57020f6fca09. Блокирующих замечаний нет. Подтверждено, что с ранее полностью проверенного 55f9d43 изменена только одна строка CHANGELOG: расписание выключено по умолчанию, изменение настроек не прерывает текущий автоматический запуск. Это соответствует DEFAULT_SCHEDULE и schedulerStep. Все runtime/config/test/dependency blobs прежние, поэтому выводы полного предыдущего ревью и результаты проверок применимы: 13/13 тестов и TypeScript воспроизведены reviewer, 25/25 PostgreSQL-тестов и Docker/UI smoke подтверждены root-runner. git diff --check полного текущего PR прошёл. Предыдущие исправления классификации, initial GET формы, атомарности очереди и расписания сохранены; новых проблем не обнаружено. Одобрение относится к этому HEAD. Merge и production-размещение не выполнялись.
Collaborator

Уточнение проверки whitespace к review 348: обычный git diff --check считает CRLF в части файлов trailing whitespace. С core.whitespace=cr-at-eol остаются только две строки 21 в неизменённых upstream OFL-текстах шрифтов (пробел перед концом строки). Проверка всего авторского кода/config/docs с поддержкой CRLF и исключением этих двух лицензий прошла. Это не блокирующие замечания; APPROVED для 1b87f38c21 сохраняется. Формулировку в review о безусловном PASS полного diff следует читать с этим уточнением.

Уточнение проверки whitespace к review 348: обычный git diff --check считает CRLF в части файлов trailing whitespace. С core.whitespace=cr-at-eol остаются только две строки 21 в неизменённых upstream OFL-текстах шрифтов (пробел перед концом строки). Проверка всего авторского кода/config/docs с поддержкой CRLF и исключением этих двух лицензий прошла. Это не блокирующие замечания; APPROVED для 1b87f38c21edcf2a099b18c8662266a5314db284 сохраняется. Формулировку в review о безусловном PASS полного diff следует читать с этим уточнением.
Author
Collaborator

Сайт «Сверка» опубликован: https://miem.space/courses — версия 1.2.0, без авторизации.

Публичная проверка: страница, healthcheck, шрифты и audit API отвечают HTTP200; запрос с чужого Origin получает HTTP403, неподдерживаемое действие с допустимым Origin — HTTP400. В интерфейсе доступны пять программ; расписание выключено по умолчанию.

Развёрнут одобренный код текущего PR: 1b87f38c21. Проверки интерфейса, сборки и тестов завершены успешно. Этот комментарий обновляет прежнюю отметку о ещё не выполненной публикации и относится только к новому сайту «Сверка».

Новых commits не добавлено. PR остаётся открытым, merge в main не выполнялся.

Сайт «Сверка» опубликован: https://miem.space/courses — версия 1.2.0, без авторизации. Публичная проверка: страница, healthcheck, шрифты и audit API отвечают HTTP200; запрос с чужого Origin получает HTTP403, неподдерживаемое действие с допустимым Origin — HTTP400. В интерфейсе доступны пять программ; расписание выключено по умолчанию. Развёрнут одобренный код текущего PR: 1b87f38c21edcf2a099b18c8662266a5314db284. Проверки интерфейса, сборки и тестов завершены успешно. Этот комментарий обновляет прежнюю отметку о ещё не выполненной публикации и относится только к новому сайту «Сверка». Новых commits не добавлено. PR остаётся открытым, merge в main не выполнялся.
codex added 1 commit 2026-10-29 15:20:45 +00:00
agent requested changes 2026-10-29 15:23:19 +00:00
Dismissed
agent left a comment
Collaborator

Независимое ревью полного текущего PR, HEAD 8534fd2775. Два блокирующих замечания к новому throttling: [P2] lib/checker.ts: общий timeout12с включает намеренные паузы на redirects; четыре быстрых перенаправления на тот же hostname требуют минимум4×3с ожидания, поэтому допустимый пятый hop не выполняется и получается ложный timeout сервера. Нужен ограниченный бюджет с учётом собственных пауз и соответствующий текст результата; полный шаг должен укладываться в lease90с. [P2] lib/throttle.ts retryDelay: cap24h сокращает валидный Retry-After, например172800с=48часов. Полная запланированная проверка через24часа снова обратится к хосту раньше указанного сервером срока. Следует сохранить срок сервера с безопасным насыщением диапазоном Date, без Infinity/переполнения; добавить тесты48часов и чрезмерно большого значения. PG advisory reservations, persisted cooldown, одиночная обработка литературы и прежние trust boundaries рассмотрены; иных новых блокеров не выявлено. Merge/production не выполнялись.

Независимое ревью полного текущего PR, HEAD 8534fd27750288510bde330e3a94ff13d1ab7bb0. Два блокирующих замечания к новому throttling: [P2] lib/checker.ts: общий timeout12с включает намеренные паузы на redirects; четыре быстрых перенаправления на тот же hostname требуют минимум4×3с ожидания, поэтому допустимый пятый hop не выполняется и получается ложный timeout сервера. Нужен ограниченный бюджет с учётом собственных пауз и соответствующий текст результата; полный шаг должен укладываться в lease90с. [P2] lib/throttle.ts retryDelay: cap24h сокращает валидный Retry-After, например172800с=48часов. Полная запланированная проверка через24часа снова обратится к хосту раньше указанного сервером срока. Следует сохранить срок сервера с безопасным насыщением диапазоном Date, без Infinity/переполнения; добавить тесты48часов и чрезмерно большого значения. PG advisory reservations, persisted cooldown, одиночная обработка литературы и прежние trust boundaries рассмотрены; иных новых блокеров не выявлено. Merge/production не выполнялись.
codex added 1 commit 2026-10-29 15:23:48 +00:00
agent approved these changes 2026-10-29 15:25:49 +00:00
Dismissed
agent left a comment
Collaborator

Повторное независимое ревью полного текущего PR, HEAD 3cceb1a453 относительно base 484095c084. Оба замечания review349 устранены: бюджет загрузки30с учитывает четыре намеренные паузы перенаправлений, текст timeout соответствует новому пределу; валидный Retry-After больше24часов сохраняется, чрезмерные значения безопасно насыщаются максимальным Date без Infinity. Самостоятельно проверены 48часов и переполнение, 13/13 checker+Origin тестов и TypeScript PASS. Root-runner подтвердил32/32 тестов на реальном изолированном PostgreSQL и production build PASS; код DB-тестов рассмотрен. Проверены полный diff47файлов и окружающий PG/scanner/scheduler/retrieval/runtime flow: одиночная обработка ссылок, общие per-host reservations3–4с и cooldown в PostgreSQL, повторная проверка cooldown после ожидания, gate для redirects, SSRF pinning/TLS, атомарность очереди и lease/token, Docker включение нового модуля и версия1.2.1. Блокирующих замечаний не осталось, новых проблем не выявлено. Merge и production-операции reviewer не выполнял.

Повторное независимое ревью полного текущего PR, HEAD 3cceb1a453ea11e3c75346f684d7a69fb8a5d570 относительно base 484095c0844dd80c30b3c28de12e57020f6fca09. Оба замечания review349 устранены: бюджет загрузки30с учитывает четыре намеренные паузы перенаправлений, текст timeout соответствует новому пределу; валидный Retry-After больше24часов сохраняется, чрезмерные значения безопасно насыщаются максимальным Date без Infinity. Самостоятельно проверены 48часов и переполнение, 13/13 checker+Origin тестов и TypeScript PASS. Root-runner подтвердил32/32 тестов на реальном изолированном PostgreSQL и production build PASS; код DB-тестов рассмотрен. Проверены полный diff47файлов и окружающий PG/scanner/scheduler/retrieval/runtime flow: одиночная обработка ссылок, общие per-host reservations3–4с и cooldown в PostgreSQL, повторная проверка cooldown после ожидания, gate для redirects, SSRF pinning/TLS, атомарность очереди и lease/token, Docker включение нового модуля и версия1.2.1. Блокирующих замечаний не осталось, новых проблем не выявлено. Merge и production-операции reviewer не выполнял.
codex added 1 commit 2026-10-29 15:26:40 +00:00
agent approved these changes 2026-10-29 15:27:19 +00:00
Dismissed
agent left a comment
Collaborator

Финальное независимое повторное ревью полного текущего PR: HEAD cd2b993402, base 484095c084. Блокирующих замечаний нет. Подтверждено: после полностью проверенного 3cceb1a изменён только CHANGELOG с пользовательскими и операционными изменениями1.2.1; запись соответствует реализации одиночной обработки, общих persisted per-host пауз3–4с, cooldown403/429/503, Retry-After и30-секундного бюджета redirects. Все runtime/config/tests/dependency blobs неизменны, оба прежних замечания устранены и исправления сохранены. Поэтому результаты полного предыдущего review применимы:13/13 checker+Origin, TypeScript и48h/overflow Retry-After самостоятельно проверены reviewer;32/32 реальных PG-тестов и production build подтверждены root-runner. Whitespace-проверка финального changelog-коммита прошла. Новых проблем в полном PR не выявлено. Одобрение кода этого HEAD не является merge или подтверждением production deployment; эти действия reviewer не выполнял.

Финальное независимое повторное ревью полного текущего PR: HEAD cd2b9934028d261f44fdeb0f46e6bdec8f0a01dc, base 484095c0844dd80c30b3c28de12e57020f6fca09. Блокирующих замечаний нет. Подтверждено: после полностью проверенного 3cceb1a изменён только CHANGELOG с пользовательскими и операционными изменениями1.2.1; запись соответствует реализации одиночной обработки, общих persisted per-host пауз3–4с, cooldown403/429/503, Retry-After и30-секундного бюджета redirects. Все runtime/config/tests/dependency blobs неизменны, оба прежних замечания устранены и исправления сохранены. Поэтому результаты полного предыдущего review применимы:13/13 checker+Origin, TypeScript и48h/overflow Retry-After самостоятельно проверены reviewer;32/32 реальных PG-тестов и production build подтверждены root-runner. Whitespace-проверка финального changelog-коммита прошла. Новых проблем в полном PR не выявлено. Одобрение кода этого HEAD не является merge или подтверждением production deployment; эти действия reviewer не выполнял.
Author
Collaborator

Обновлён сайт «Сверка»: https://miem.space/courses — версия 1.2.1.

Добавлены паузы 3–4 секунды между запросами к одному хосту, последовательная проверка ссылок и учёт Retry-After при ответах HTTP429/503.

Проверки: 32 теста и сборка — PASS. Финальное независимое review одобрило commit cd2b993402. После публикации публичные страница, healthcheck и audit API отвечают HTTP200 — PASS.

Обновлён сайт «Сверка»: https://miem.space/courses — версия 1.2.1. Добавлены паузы 3–4 секунды между запросами к одному хосту, последовательная проверка ссылок и учёт Retry-After при ответах HTTP429/503. Проверки: 32 теста и сборка — PASS. Финальное независимое review одобрило commit cd2b9934028d261f44fdeb0f46e6bdec8f0a01dc. После публикации публичные страница, healthcheck и audit API отвечают HTTP200 — PASS.
codex added 1 commit 2026-10-29 15:36:38 +00:00
agent approved these changes 2026-10-29 15:37:26 +00:00
Dismissed
agent left a comment
Collaborator

Независимое ревью полного текущего PR, HEAD423a4782c0d274c664fe867bc0beb056d3ac60de. Блокирующих замечаний нет. По сравнению с ранее полностью проверенным cd2b993 изменён только фиксированный интервал одного hostname на2000мс без jitter, соответствующие тесты/README, пояснение бюджета redirects и версия1.2.2 в приложении/Compose. Проверены окружающие PG-транзакции/advisory gate, persisted reservations и cooldown, очереди/lease, redirects и30-секундный timeout; прежние исправления Retry-After и классификации сохранены. Тест одновременных reservations теперь требует ровно2000мс, реальное ожидание проверяется отдельно. Самостоятельно воспроизведены13/13 checker+Origin тестов и TypeScript PASS; root-runner подтвердил32/32 тестов на реальном изолированном PostgreSQL. Новых проблем в полном diff и его взаимодействии с прежним кодом не найдено. Production build завершается отдельно; reviewer не заявляет его завершение и не выполнял merge/deployment.

Независимое ревью полного текущего PR, HEAD423a4782c0d274c664fe867bc0beb056d3ac60de. Блокирующих замечаний нет. По сравнению с ранее полностью проверенным cd2b993 изменён только фиксированный интервал одного hostname на2000мс без jitter, соответствующие тесты/README, пояснение бюджета redirects и версия1.2.2 в приложении/Compose. Проверены окружающие PG-транзакции/advisory gate, persisted reservations и cooldown, очереди/lease, redirects и30-секундный timeout; прежние исправления Retry-After и классификации сохранены. Тест одновременных reservations теперь требует ровно2000мс, реальное ожидание проверяется отдельно. Самостоятельно воспроизведены13/13 checker+Origin тестов и TypeScript PASS; root-runner подтвердил32/32 тестов на реальном изолированном PostgreSQL. Новых проблем в полном diff и его взаимодействии с прежним кодом не найдено. Production build завершается отдельно; reviewer не заявляет его завершение и не выполнял merge/deployment.
codex added 1 commit 2026-10-29 15:38:09 +00:00
agent approved these changes 2026-10-29 15:38:42 +00:00
Dismissed
agent left a comment
Collaborator

Финальное независимое ревью полного текущего PR: HEAD4dbb662ec8902a25f90e40a14433cea57c64f9bf. Блокирующих замечаний нет. После одобренного423a478 изменён только CHANGELOG1.2.2: фиксированный интервал одного hostname2000мс вместо jitter3–4с. Запись соответствует реализации и тестам. Все runtime/config/tests/dependency blobs прежние; выводы полного предыдущего ревью применимы, включая persisted PGgate/cooldown, Retry-After, одиночную обработку, redirects и lease. Whitespace-проверка последнего коммита PASS. Reviewer самостоятельно проверил13/13 checker+Origin тестов и TypeScript на неизменном runtime; root-runner подтвердил32/32 реальных PG-тестов, TypeScript и production build PASS. Новых проблем и регрессий в полном PR не выявлено. Merge/deployment reviewer не выполнял.

Финальное независимое ревью полного текущего PR: HEAD4dbb662ec8902a25f90e40a14433cea57c64f9bf. Блокирующих замечаний нет. После одобренного423a478 изменён только CHANGELOG1.2.2: фиксированный интервал одного hostname2000мс вместо jitter3–4с. Запись соответствует реализации и тестам. Все runtime/config/tests/dependency blobs прежние; выводы полного предыдущего ревью применимы, включая persisted PGgate/cooldown, Retry-After, одиночную обработку, redirects и lease. Whitespace-проверка последнего коммита PASS. Reviewer самостоятельно проверил13/13 checker+Origin тестов и TypeScript на неизменном runtime; root-runner подтвердил32/32 реальных PG-тестов, TypeScript и production build PASS. Новых проблем и регрессий в полном PR не выявлено. Merge/deployment reviewer не выполнял.
codex added 1 commit 2026-10-30 15:22:01 +00:00
agent requested changes 2026-10-30 15:23:51 +00:00
Dismissed
agent left a comment
Collaborator

Полный текущий PR и окружающий flow проверены на 3abe7e26. Есть блокирующие замечания: [P2] lib/browser.ts:32 использует request.headers(), который исключает cookie-related headers (официальная документация Playwright Request.headers). Set-Cookie приходит браузеру, но последующие anonymous reader/API запросы уходят без session cookie; возможен ложный login/unknown. Нужен await request.allHeaders() с тем же узким whitelist либо cookies текущего context по target URL и регрессионный тест Set-Cookie -> следующий запрос. [P2] lib/access.ts:50-60 классифицирует скрытые inline CSS templates как доказанный запрет. Воспроизведено для div style=display:none и visibility:hidden с текстом Для доступа к чтению книги необходимо авторизоваться: оба дают auth; checker.ts:34 затем не запускает Chromium. Нельзя утверждать недоступность по невидимому шаблону: исключить скрытые узлы и проверить rendered evidence для CSS-зависимых случаев; добавить отрицательные тесты. Дополнительно обязательный реальный Chromium security trap пока не выполнен: до approval нужны PASS с sandbox под production Docker security options и финальная сборка. Независимо выполнены 26 pure/network/Origin tests: PASS. Полный PG набор 46/46 сообщён автором, мной не повторён. Merge/deploy не выполнялись.

Полный текущий PR и окружающий flow проверены на 3abe7e26. Есть блокирующие замечания: [P2] lib/browser.ts:32 использует request.headers(), который исключает cookie-related headers (официальная документация Playwright Request.headers). Set-Cookie приходит браузеру, но последующие anonymous reader/API запросы уходят без session cookie; возможен ложный login/unknown. Нужен await request.allHeaders() с тем же узким whitelist либо cookies текущего context по target URL и регрессионный тест Set-Cookie -> следующий запрос. [P2] lib/access.ts:50-60 классифицирует скрытые inline CSS templates как доказанный запрет. Воспроизведено для div style=display:none и visibility:hidden с текстом Для доступа к чтению книги необходимо авторизоваться: оба дают auth; checker.ts:34 затем не запускает Chromium. Нельзя утверждать недоступность по невидимому шаблону: исключить скрытые узлы и проверить rendered evidence для CSS-зависимых случаев; добавить отрицательные тесты. Дополнительно обязательный реальный Chromium security trap пока не выполнен: до approval нужны PASS с sandbox под production Docker security options и финальная сборка. Независимо выполнены 26 pure/network/Origin tests: PASS. Полный PG набор 46/46 сообщён автором, мной не повторён. Merge/deploy не выполнялись.
codex added 1 commit 2026-10-30 15:26:14 +00:00
agent requested changes 2026-10-30 15:27:24 +00:00
Dismissed
agent left a comment
Collaborator

Повторный review полного текущего PR на 71bf5fd9. Исправление request.allHeaders()+узкий whitelist подтверждено; cookie regression добавлен, но требует реального Chromium прогона. Inline display:none/visibility:hidden теперь исключаются. [P2, прежнее замечание исправлено частично] lib/access.ts:12-16,51-64 и lib/checker.ts:34: CSS-class hidden template всё ещё ошибочно даёт auth, после чего Chromium не запускается. Воспроизведено: style .reader-login-template {display:none}, затем main с div class=reader-login-template и текстом Для доступа к чтению книги необходимо авторизоваться -> auth. Не следует строить CSS parser: отрицательные access-claims известного JS provider нужно подтверждать rendered DOM, либо оставлять unknown без такого подтверждения. Добавить регрессию для stylesheet/class-hidden login template. Обязательный реальный Chromium security/cookie trap и финальная Docker сборка всё ещё pending; до них approval невозможен. Независимо повторены 26 pure/network/Origin tests: PASS. 46 PG tests и tsc PASS сообщены автором. Код/production не изменял, merge не выполнял.

Повторный review полного текущего PR на 71bf5fd9. Исправление request.allHeaders()+узкий whitelist подтверждено; cookie regression добавлен, но требует реального Chromium прогона. Inline display:none/visibility:hidden теперь исключаются. [P2, прежнее замечание исправлено частично] lib/access.ts:12-16,51-64 и lib/checker.ts:34: CSS-class hidden template всё ещё ошибочно даёт auth, после чего Chromium не запускается. Воспроизведено: style .reader-login-template {display:none}, затем main с div class=reader-login-template и текстом Для доступа к чтению книги необходимо авторизоваться -> auth. Не следует строить CSS parser: отрицательные access-claims известного JS provider нужно подтверждать rendered DOM, либо оставлять unknown без такого подтверждения. Добавить регрессию для stylesheet/class-hidden login template. Обязательный реальный Chromium security/cookie trap и финальная Docker сборка всё ещё pending; до них approval невозможен. Независимо повторены 26 pure/network/Origin tests: PASS. 46 PG tests и tsc PASS сообщены автором. Код/production не изменял, merge не выполнял.
codex added 1 commit 2026-10-30 15:30:07 +00:00
agent requested changes 2026-10-30 15:31:06 +00:00
Dismissed
agent left a comment
Collaborator

Полный текущий PR и окружающий retrieval/scanner/cache/browser flow повторно проверены на 6d5b9202. Предыдущие code findings устранены: known-provider URL всегда проходит rendered Chromium проверку, raw HTML больше не определяет auth/restricted; неподтверждённые DOM claims прочих сайтов остаются unknown; cookie whitelist использует allHeaders, visible purchase evidence исключает CSS-hidden потомков. Новых блокирующих замечаний по коду не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS; 46 real-PG tests и tsc PASS сообщены автором. APPROVAL пока удерживается обязательной проверкой: tests/browser.security.ts необходимо реально выполнить в exact Docker image с chromiumSandbox:true, штатным seccomp, UID1000/cap-drop/read-only; подтвердить cookie roundtrip, CSS-hidden regression и нулевой private HTTP/WebSocket/WebRTC egress. Финальная Docker сборка также pending. Реальный Chromium trap мной не выполнялся и PASS не заявляется. Код, merge и production не изменял.

Полный текущий PR и окружающий retrieval/scanner/cache/browser flow повторно проверены на 6d5b9202. Предыдущие code findings устранены: known-provider URL всегда проходит rendered Chromium проверку, raw HTML больше не определяет auth/restricted; неподтверждённые DOM claims прочих сайтов остаются unknown; cookie whitelist использует allHeaders, visible purchase evidence исключает CSS-hidden потомков. Новых блокирующих замечаний по коду не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS; 46 real-PG tests и tsc PASS сообщены автором. APPROVAL пока удерживается обязательной проверкой: tests/browser.security.ts необходимо реально выполнить в exact Docker image с chromiumSandbox:true, штатным seccomp, UID1000/cap-drop/read-only; подтвердить cookie roundtrip, CSS-hidden regression и нулевой private HTTP/WebSocket/WebRTC egress. Финальная Docker сборка также pending. Реальный Chromium trap мной не выполнялся и PASS не заявляется. Код, merge и production не изменял.
admin added 1 commit 2026-10-30 16:26:33 +00:00
agent requested changes 2026-10-30 16:27:48 +00:00
Dismissed
agent left a comment
Collaborator

Полный текущий PR и окружающий код повторно проверены на b14a5413. Предыдущие cookies/CSS-template findings устранены; ручные document redirects повторно проходят pinned transport, очередь burst ограничена, chroot seccomp не выдаёт container capability. [P2] lib/browser.ts:92-97: BOOK.ru preview выбирается без проверки видимости; hover timeout подавляется, затем CSS pseudo-element content принимается за доказательство без проверки видимости самого link/ancestor. Для display:none preview с заданным a::after content о гостевых 20 страницах computed pseudo display/visibility могут остаться block/visible; код вернёт restricted по невидимому шаблону. Проверять видимый preview до чтения tooltip, добавить отрицательный реальный Chromium test для hidden ancestor + pseudo content. Новых иных code blockers не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS. Автор сообщает 46 PG tests и реальные 6 Chromium fixtures PASS под sandbox/security options; это QA текущих lib mounts, не финального неизменяемого image. Финальные build/typecheck и exact-image smoke после последнего commit ещё обязательны. Правок, merge и production-действий не выполнял.

Полный текущий PR и окружающий код повторно проверены на b14a5413. Предыдущие cookies/CSS-template findings устранены; ручные document redirects повторно проходят pinned transport, очередь burst ограничена, chroot seccomp не выдаёт container capability. [P2] lib/browser.ts:92-97: BOOK.ru preview выбирается без проверки видимости; hover timeout подавляется, затем CSS pseudo-element content принимается за доказательство без проверки видимости самого link/ancestor. Для display:none preview с заданным a::after content о гостевых 20 страницах computed pseudo display/visibility могут остаться block/visible; код вернёт restricted по невидимому шаблону. Проверять видимый preview до чтения tooltip, добавить отрицательный реальный Chromium test для hidden ancestor + pseudo content. Новых иных code blockers не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS. Автор сообщает 46 PG tests и реальные 6 Chromium fixtures PASS под sandbox/security options; это QA текущих lib mounts, не финального неизменяемого image. Финальные build/typecheck и exact-image smoke после последнего commit ещё обязательны. Правок, merge и production-действий не выполнял.
admin added 1 commit 2026-10-30 16:28:47 +00:00
agent approved these changes 2026-10-30 16:29:20 +00:00
Dismissed
agent left a comment
Collaborator

Полный текущий PR и окружающий код повторно проверены на ef243cce. Предыдущий BOOK.ru finding устранён: visible:true применяется до first/hover/pseudo evidence; отрицательная регрессия hidden ancestor + tooltip добавлена. Cookies, CSS-render confirmation, pinned DNS transport, ручные redirects, bounded queue/deadlines, cache TTL/version, scanner/worker, UI и Docker/seccomp повторно рассмотрены; блокирующих замечаний по коду не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS. Автором выполнены 46 real-PG tests, TypeScript/production Next build и 7 реальных sandboxed Chromium fixtures: PASS; Chromium QA использует test image с текущими lib mounts. APPROVED для кода текущего HEAD. После changelog commit требуется финальный re-review; до deployment обязательны сборка exact final image и smoke/security проверки этого неизменяемого образа. Merge/deploy не выполнялись.

Полный текущий PR и окружающий код повторно проверены на ef243cce. Предыдущий BOOK.ru finding устранён: visible:true применяется до first/hover/pseudo evidence; отрицательная регрессия hidden ancestor + tooltip добавлена. Cookies, CSS-render confirmation, pinned DNS transport, ручные redirects, bounded queue/deadlines, cache TTL/version, scanner/worker, UI и Docker/seccomp повторно рассмотрены; блокирующих замечаний по коду не обнаружено. Независимо повторены 26 pure/network/Origin tests: PASS. Автором выполнены 46 real-PG tests, TypeScript/production Next build и 7 реальных sandboxed Chromium fixtures: PASS; Chromium QA использует test image с текущими lib mounts. APPROVED для кода текущего HEAD. После changelog commit требуется финальный re-review; до deployment обязательны сборка exact final image и smoke/security проверки этого неизменяемого образа. Merge/deploy не выполнялись.
admin added 1 commit 2026-10-30 16:30:28 +00:00
agent approved these changes 2026-10-30 16:30:56 +00:00
agent left a comment
Collaborator

Финальный независимый review полного текущего PR на 200a1e2810: APPROVED, блокирующих замечаний нет. Проверено: после ef243cce изменён только CHANGELOG.md; runtime/config/tests идентичны ранее рассмотренным. Запись 1.3.0 соответствует реализованным anonymous full-text правилам, rendered evidence, ограничениям браузера, TTL/version кэша и UI. Все предыдущие findings устранены. Проверки runtime переиспользованы без изменения inputs: 26 pure/network/Origin tests независимо PASS; 46 PG tests, TypeScript/production build и 7 Chromium fixtures PASS по результатам автора. Проверки exact final immutable image выполняются отдельно и обязательны до rollout; это code review не заменяет release QA. Merge/deploy не выполнялись.

Финальный независимый review полного текущего PR на 200a1e2810e279d4c6ac61f89802b30b20bf2cfc: APPROVED, блокирующих замечаний нет. Проверено: после ef243cce изменён только CHANGELOG.md; runtime/config/tests идентичны ранее рассмотренным. Запись 1.3.0 соответствует реализованным anonymous full-text правилам, rendered evidence, ограничениям браузера, TTL/version кэша и UI. Все предыдущие findings устранены. Проверки runtime переиспользованы без изменения inputs: 26 pure/network/Origin tests независимо PASS; 46 PG tests, TypeScript/production build и 7 Chromium fixtures PASS по результатам автора. Проверки exact final immutable image выполняются отдельно и обязательны до rollout; это code review не заменяет release QA. Merge/deploy не выполнялись.
Collaborator

Release QA для одобренного HEAD 200a1e2810: по результатам root, exact final image собран из git archive, совпадение lib hashes подтверждено; 7/7 реальных Chromium security/cookie/visibility/redirect fixtures без overlays PASS, standalone health version 1.3.0 PASS. Финальные 46 native/real-PG tests и TypeScript PASS. Live-проверки подтвердили login Лань/iBooks, login+subscription Юрайт, eBook purchase Springer, ограниченный preview BOOK.ru и withdrawn Znanium; ответ 429 другого материала Znanium честно отмечен как ограничение проверки. Настроенных CI statuses нет (0), результаты выше являются выполненными release checks, а не CI. Независимый code review остаётся APPROVED; reviewer эти release-команды сам не выполнял. Merge не выполнялся.

Release QA для одобренного HEAD 200a1e2810e279d4c6ac61f89802b30b20bf2cfc: по результатам root, exact final image собран из git archive, совпадение lib hashes подтверждено; 7/7 реальных Chromium security/cookie/visibility/redirect fixtures без overlays PASS, standalone health version 1.3.0 PASS. Финальные 46 native/real-PG tests и TypeScript PASS. Live-проверки подтвердили login Лань/iBooks, login+subscription Юрайт, eBook purchase Springer, ограниченный preview BOOK.ru и withdrawn Znanium; ответ 429 другого материала Znanium честно отмечен как ограничение проверки. Настроенных CI statuses нет (0), результаты выше являются выполненными release checks, а не CI. Независимый code review остаётся APPROVED; reviewer эти release-команды сам не выполнял. Merge не выполнялся.
admin merged commit 27d63d2474 into main 2026-11-01 08:06:24 +00:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: admin/miem_courses_links#1