d49351c022
Codeberg is being retired as the project's public site, so every reference now points at GitHub. That includes the Go module path (codeberg.org/mix/selfpost → github.com/mixeme/selfpost): leaving an import path on a host that is going away would break `go get` and `go install`, so this is not only a docs change. Touches go.mod, test/e2e/go.mod, all imports, Makefile MODULE, the -ldflags version stamp in build/Dockerfile and docs/development.md, the licence headers in the SVG/HTML assets, and README (no more primary/mirror pair). Comments no longer cite the archived specification. "spec 7.6.1", "spec 5.1" and friends pointed into docs/archive/specification-v1.0.md, which is marked as not a source of truth; each is now a reference to the live document that owns the subject — architecture.md (with section), product.md, security.md or the README. The review only asked for the 7.x refs (code-review.md § 4), but 4/5/6/ 8/9 had the same defect, so they went too. Comments only, no behaviour change. Also closes the remaining review items: architecture.md gained a Code layers section with the layer diagram (A2), and TestParseDelivery gained the exotic mail.log cases (§ 3). Fixes a bug that last test found: the delivery-line pattern matched status= greedily, taking the *last* occurrence on the line. Postfix appends the remote server's reply verbatim, so a rejection whose reply quoted "status=sent" was filed as a delivered message in the send log. It now takes the first status= after the recipient, which is the real field. R7 (CONTRIBUTING.md) moved to roadmap 2.x — one developer, no external PR flow, so the file would have no audience yet. R1 (compose image tag) and the git tag stay in roadmap § v1.x as the release-commit steps. gofmt/go vet clean on both modules; go test ./... green except the three known Windows-only failures (file perms, backslash paths, renaming an open file). Not exercised on the dev server — no Docker locally. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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).
|