047f7433ba
Adds a new agreed-upon phase covering /status (supervisord processes, Postfix queue, TLS cert expiry, milter sockets, PTR/FCrDNS check) and per-domain DNS correctness status (DKIM/SPF-heuristic/DMARC) on the domain page. Not part of v1.0 spec scope; scoped and agreed with the user before implementation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
44 lines
4.9 KiB
Markdown
44 lines
4.9 KiB
Markdown
# Прогресс реализации SelfPost
|
|
|
|
Живой трекер состояния. **Переживает `/clear`** — читается первым при возобновлении работы.
|
|
План (открытые вопросы + опциональные фазы): [implementation-plan.md](implementation-plan.md).
|
|
ТЗ: [specification.md](specification.md). История релизов: [CHANGELOG.md](../CHANGELOG.md).
|
|
История сделанного по фазам (0→11, все закрыты) — в `git log` и в CHANGELOG, здесь не дублируется.
|
|
|
|
## Как возобновить после сброса контекста
|
|
|
|
1. Прочитать этот файл (текущее состояние, что дальше).
|
|
2. Открыть `implementation-plan.md` — там нерешённые вопросы и опциональная линия 2.x.x (Фаза O1+).
|
|
3. При необходимости — детали в `specification.md`.
|
|
4. Продолжить с пункта «Следующий шаг».
|
|
|
|
## Модель по типу работы
|
|
|
|
Правило: безопасность / инфра / риск-критичное → **Opus**; UI / документация / бойлерплейт → **Sonnet**; тривиальная механика → **Haiku**.
|
|
|
|
## Коммиты
|
|
|
|
Коммит на **каждом осмысленном шаге** (не каждое сохранение файла, но и не только конец фазы): рабочий под-функционал, зелёная сборка, конец фазы. Минимум — один коммит на закрытую фазу + промежуточные на связные под-шаги. Ветка `main` (если пользователь не попросит отдельную). Push/PR — только по явной команде. Сообщение коммита завершается трейлером `Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>`.
|
|
|
|
На каждом таком шаге — запись в [CHANGELOG.md](../CHANGELOG.md) под `[Unreleased]` (формат Keep a Changelog). При явном решении зарезать версию — секция `[Unreleased]` переименовывается в `[X.Y.Z] - дата`, заводится новая пустая `[Unreleased]`. Тег/пуш образа — только по явному запросу (см. workflow release.yml).
|
|
|
|
## Протокол закрытия фазы/крупного шага
|
|
|
|
Перед `/clear` в конце каждого законченного шага Claude:
|
|
1. Обновляет этот файл: «Текущее состояние» → что изменилось, что дальше.
|
|
2. Проверяет применимые критерии «Готово, когда…».
|
|
3. Дописывает `CHANGELOG.md` под `[Unreleased]`.
|
|
4. Делает финальный коммит шага.
|
|
|
|
---
|
|
|
|
## Текущее состояние
|
|
|
|
- **Базовый линейный план 0→11 (v1.0) полностью выполнен и принят** (аудит безопасности ТЗ 7.6 — полное соответствие, деплой в проде подтверждён). Подробности — в git-истории и `CHANGELOG.md`.
|
|
- **Дальше — то, что перечислено в `implementation-plan.md`:** открытые вопросы (раздел A-D — hardening сверх обязательного 7.6, надёжность, CI/тесты), опциональная **Фаза O1+** (входящий релей, линия 2.x.x, требует согласования) и **Фаза 12 (v1.x, запланирована, не начата)** — страница статуса `/status` (процессы/очередь/TLS/milter-сокеты/PTR) + DNS-статус домена (DKIM/SPF-эвристика/DMARC) на странице домена; согласована с пользователем, готова к реализации.
|
|
- **Прод:** `selfpost.mixfed.ru`, реальный Let's Encrypt сертификат, живой e2e (DKIM/SPF pass).
|
|
|
|
## Рабочая петля (dev loop) — ВАЖНО
|
|
|
|
Локально (Windows, `D:\Local\Git\selfpost`) **нет Go и Docker** — только редактирование и git. Вся сборка/тесты идут на dev-сервере `selfpost.mixfed.ru` (Debian 12 bookworm, тот же, что базовый образ; провижён под разработку). Цикл: править локально → `rsync` дерева на сервер → `go build`/`go vet`/`docker build`/тесты там. Источник истины и git-история — локальный репозиторий; сервер — только исполнитель сборки/тестов. Подключение: `ssh root@selfpost.mixfed.ru` (по ключу).
|