Record comprehensive code review in docs/code-review.md covering architecture, quality, documentation, GUI, legacy, and risks. Link from implementation-plan and progress; update CHANGELOG. Co-authored-by: Cursor <cursoragent@cursor.com>
2.9 KiB
План реализации: SelfPost
Статус: для линии v1.0/v1.x до тега релиза остаётся один пункт (ниже). B.1–B.3 и C.4 закрыты — as-built в architecture.md, e2e/CI в development.md, принятые риски в security.md. Комплексное рецензирование кодовой базы и план доработок — code-review.md. Текущее состояние и следующий шаг: progress.md. Объём 2.x.x — roadmap.md.
Основа: product.md v1.0.
D. Предрелизная ревизия безопасности
Проверка на уязвимости моделью Fable — после B.1–B.3 и C.4, до тега релиза. Не выполнено.
Почему один проход по итоговому состоянию, а не по каждому пункту. B.1–C.4
меняли одну и ту же поверхность (сессии в SQLite, logrotate + postfix reload,
гейт SELFPOST_HOSTNAME, e2e-override с ослабленными настройками). Срезы по
отдельным коммитам не заменяют просмотр дифа от v1.0.0 до HEAD.
Объём. Диф от тега v1.0.0 до состояния перед следующим тегом — вместе с
Фазами 12–14, которых в аудите v1.0 не было — плюс повторный проход по чек-листу
ТЗ 7.6 целиком, а не только по изменённым строкам. Приоритет: аутентификация и
сессии, валидация ввода, запись в конфиги и map-файлы (injection), os/exec без
shell, права на файлы в /data, обращение с секретами (пароли приложений,
sasldb2, архив бэкапа).
Модель — Fable (не Opus): код писал Opus, проверка собственной работы
систематически слабее независимой. Правило progress.md «безопасность/инфра →
Opus» — про написание; здесь ревизия. Форма: /security-review по изменениям
(скилл смотрит диф) + ручной проход по 7.6.
Гейт. Вместе с e2e (C.4, готов): до тега. Находка класса «эксплуатируется снаружи» откладывает тег. Каждая находка закрывается явно: правка до тега либо запись в security.md как принятый риск с обоснованием. «Посмотрели и ладно» — не закрытие.