A bounce could be recorded as a successful delivery. The log-tailer's Fixed: - A bounce could be recorded as a successful delivery. The log-tailer's - Log-tailer resumes where it stopped instead of jumping to end-of-file on - Level-2 rate limit no longer overshoots under concurrency: messages that Changed: - The project has a single public home: `github.com/mixeme/selfpost`. Codeberg - Code comments no longer cite the archived specification. References like - `docs/code-review.md` is gone. Its plan is finished — phases 0 (bar the - `docs/architecture.md` gained a *Code layers* section: a diagram of - Phase 1 doc/code hygiene (`docs/code-review.md`): removed ~30 stale … (1 more in CHANGELOG) Security: - Pre-release security review (plan § D, model Fable, 2026-08-06): full pass - `saslpasswd2` argv: the application login is now passed after a `--` Added: - Optional password encryption for the two secret-bearing downloads (plan - Domain import accepts an encrypted export: the envelope is detected by its - `selfpost-backup` writes encrypted archives and reads them back: - `TestParseDelivery` covers the exotic mail.log shapes the review asked for - docs: README *Encrypting a backup or export*; `docs/security.md` § … (14 more in CHANGELOG) Removed: - docs: `security.md` — accepted risk «restore old backup revives session rows» Changed: - docs: `implementation-plan.md` trimmed to the sole open v1.x gate — pre-release - docs: `architecture.md` — sessions (SQLite, idle renew, password change), - docs: `development.md` — expanded e2e stack and `release.yml` matrix workflow. - docs: `security.md` — accepted risk for send-log rows stuck at `queued` after - docs: `roadmap.md` — optional send-log / `mail.log` follow-ups under v1.x tail. … (10 more in CHANGELOG) Full detail: CHANGELOG.md (0.5.0).
87 lines
5.2 KiB
Markdown
87 lines
5.2 KiB
Markdown
# План документации SelfPost
|
||
|
||
**Статус: закрыт (D1–D9, август 2026).** Проход выполнен; история задач и
|
||
находок — в [CHANGELOG.md](../CHANGELOG.md) и `git log`. Этот файл дальше
|
||
держит **состав пакета**, **метод сверки с кодом** и **правила**, чтобы
|
||
документация не разошлась снова.
|
||
|
||
**Живые документы (вместо архивного ТЗ):**
|
||
|
||
| Дом | Файл |
|
||
|---|---|
|
||
| Пользовательская поставка | [README.md](../README.md) |
|
||
| Границы продукта | [product.md](product.md) |
|
||
| As-built устройство | [architecture.md](architecture.md) |
|
||
| Процесс разработки | [development.md](development.md) |
|
||
| Безопасность | [security.md](security.md) |
|
||
| Исторический снимок v1.0 | [archive/specification-v1.0.md](archive/specification-v1.0.md) |
|
||
|
||
Отложенная полировка v1.x (тег образа в compose) — [roadmap.md](roadmap.md)
|
||
§ «v1.x — хвост документации и деплоя». Пункты про Quick start и `docs/logo`
|
||
закрыты.
|
||
|
||
---
|
||
|
||
## 1. Состав пакета
|
||
|
||
### Поставляемое пользователю
|
||
|
||
| Артефакт | Состояние |
|
||
|---|---|
|
||
| [README.md](../README.md) | Установка, площадка, DNS, прогрев IP, эксплуатация, rate limiting, env, бэкап, репозиторий, образ, лицензия |
|
||
| [LICENSE](../LICENSE) | AGPL-3.0, полный текст |
|
||
| [deploy/docker-compose.yml](../deploy/docker-compose.yml) + прокси | Apache + nginx/Caddy/Traefik в [deploy/](../deploy/) |
|
||
| [deploy/.env.example](../deploy/.env.example) | Публичные переменные; полный справочник в README |
|
||
| [CHANGELOG.md](../CHANGELOG.md) | Keep a Changelog |
|
||
|
||
### Рабочие документы
|
||
|
||
[progress.md](progress.md), [implementation-plan.md](implementation-plan.md),
|
||
[roadmap.md](roadmap.md), этот файл.
|
||
|
||
**Вне объёма v1.x:** `CONTRIBUTING.md`, man-страницы, отдельный сайт документации.
|
||
|
||
---
|
||
|
||
## 2. Метод сверки с кодом
|
||
|
||
Правило: у каждого утверждения в документации есть **источник истины в дереве**;
|
||
сверка идёт от кода к тексту.
|
||
|
||
| Класс утверждений | Источник истины |
|
||
|---|---|
|
||
| Env-переменные, дефолты | `loadConfig` — [cmd/panel/main.go](../cmd/panel/main.go); `${VAR:-…}` в [build/](../build/) |
|
||
| Почтовый тракт | [build/postfix-config.sh](../build/postfix-config.sh) |
|
||
| Маршруты панели | [internal/web/web.go](../internal/web/web.go) |
|
||
| Бэкап/restore, экспорт домена | [internal/backup/](../internal/backup/), [cmd/selfpost-backup/](../cmd/selfpost-backup/) |
|
||
| Сессии | [internal/store/sessions.go](../internal/store/sessions.go), [internal/web/session.go](../internal/web/session.go) |
|
||
| Ротация лога, reload | [build/logrotate-mail.conf](../build/logrotate-mail.conf), [build/logrotate-loop.sh](../build/logrotate-loop.sh), [build/postfix-cert-reload.sh](../build/postfix-cert-reload.sh) |
|
||
| Деплой | [deploy/docker-compose.yml](../deploy/docker-compose.yml), [build/Dockerfile](../build/Dockerfile) |
|
||
| Чеклист README | таблица «Поставляемое пользователю» выше |
|
||
| Продукт, out of scope | [product.md](product.md) |
|
||
| As-built | [architecture.md](architecture.md) |
|
||
| Обязательная безопасность | [security.md](security.md) |
|
||
|
||
Порядок: перечислить фактическое в коде → найти в README / `architecture.md`.
|
||
Перед каждым тегом — короткий проход по этой таблице, не полная ревизия текста.
|
||
|
||
---
|
||
|
||
## 3. Правила поддержки
|
||
|
||
1. **Правило шага:** новая/переименованная env-переменная, маршрут панели или
|
||
наблюдаемое поведение почтового тракта закрываются вместе с README /
|
||
`.env.example` и записью в CHANGELOG (протокол — [progress.md](progress.md)).
|
||
2. **Регресс env (D7):** [cmd/panel/envdoc_test.go](../cmd/panel/envdoc_test.go) —
|
||
падает на недокументированном ключе `loadConfig` или build-скриптов.
|
||
3. **Новые расхождения** дописываются в [roadmap.md](roadmap.md) или
|
||
[implementation-plan.md](implementation-plan.md), а не исправляются молча.
|
||
|
||
---
|
||
|
||
## 4. Гейт релиза (документация)
|
||
|
||
Документационный проход **D1–D9 закрыт.** До тега релиза остаётся общий гейт:
|
||
e2e (готов, [development.md](development.md)) и ревизия безопасности
|
||
([implementation-plan.md](implementation-plan.md) § D) — см. [progress.md](progress.md).
|