# План реализации: SelfPost **Статус:** для линии v1.0/v1.x до тега релиза остаётся **один пункт** (ниже). B.1–B.3 и C.4 закрыты — as-built в [architecture.md](architecture.md), e2e/CI в [development.md](development.md), принятые риски в [security.md](security.md). Комплексное рецензирование кодовой базы и план доработок — [code-review.md](code-review.md). Текущее состояние и следующий шаг: [progress.md](progress.md). Объём 2.x.x — [roadmap.md](roadmap.md). **Основа:** [product.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](security.md) как принятый риск с обоснованием. «Посмотрели и ладно» — не закрытие.