# Community release checklist

## 1. Назначение документа

Этот документ фиксирует канонический release path только для открытой редакции `Community`.

Он нужен, чтобы:

- не смешивать Community delivery с будущей коммерческой поставкой;
- дать reproducible checklist для public release;
- зафиксировать, какие артефакты считаются source of truth именно для открытой редакции.

## 2. Source of truth для Community release

Для открытой редакции каноническими считаются:

- `deploy/community/docker-compose.yml`
- `deploy/community/.env.example`
- `.github/workflows/ci.yml`
- `.github/workflows/deploy.yml`
- `docs/deployment.md`
- `docs/deploy-and-staging-smoke.md`
- `docs/authenticated-staging-pass.md`
- `docs/public-smoke-targets.md`
- `docs/staging-regression-notes.md`

Root-файлы:

- `docker-compose.yml`
- `.env.example`

считаются только convenience-слоем для локальной разработки и не должны использоваться как
основа будущей коммерческой упаковки.

## 3. Что обязательно входит в Community release

Community release должен поставлять:

- `ui`
- `admin-api`
- `mcp-server`
- `postgres` как runtime dependency в compose-манифесте
- optional `valkey` profile как рекомендованный, но не обязательный cache layer
- healthchecks
- базовый self-hosted deployment path
- capability-gated UI, который не притворяется коммерческой редакцией

## 4. Чего не должно быть в Community release

В Community release нельзя включать:

- private container images;
- private `Helm` charts;
- hosted control-plane services;
- enterprise-only auth/governance services;
- private token issuer implementations;
- manifests, которые пытаются быть общими одновременно для Community и коммерческой поставки.

## 5. Community release workflow

Перед выпуском нужно проверить:

1. `CI` зеленый.
2. Community deployment manifest валиден:
   - `docker compose -f deploy/community/docker-compose.yml --env-file deploy/community/.env.example config -q`
   - `docker compose -f deploy/community/docker-compose.yml --env-file deploy/community/.env.example --profile cache config -q`
3. Docker image build проходит для:
   - `admin-api`
   - `mcp-server`
   - `ui`
4. Deploy workflow использует именно `deploy/community/docker-compose.yml`.
5. Post-deploy smoke выполнен по:
   - `docs/deploy-and-staging-smoke.md`
   - `docs/authenticated-staging-pass.md`
   - `docs/public-smoke-targets.md`

## 6. Правило для будущих коммерческих редакций

`Enterprise` и `Cloud` не должны проектироваться как:

- другой `.env` поверх `deploy/community/docker-compose.yml`;
- скрытые feature flags внутри Community release path;
- дополнительные сервисы, “подмешанные” в те же public manifests без отдельной delivery границы.

Они должны иметь:

- отдельный public repository `crank-community`;
- отдельные private repositories;
- отдельные manifests;
- отдельные release pipelines;
- отдельные operator docs.

Разделение репозиториев уже выполнено:

- `crank-community`
- `crank-enterprise`
- `crank-cloud`

Для Community это означает:

- release checklist больше не зависит от transitional export procedure;
- `crank-community` сам является source of truth для своей поставки;
- все требования этого checklist относятся к текущему состоянию репозитория, а не к будущему импорту.

## 7. Минимальный operator checklist

Перед публикацией Community release нужно подтвердить:

- capability matrix совпадает с `docs/product-editions.md`;
- UI не показывает рабочими premium-only сценарии;
- `admin-api` и `mcp-server` enforce capability limits на сервере;
- public deployment path воспроизводим на чистом хосте;
- базовый запуск и запуск с profile `cache` оба валидны;
- staging smoke записан в regression notes.

## 8. Связанные документы

- `docs/product-editions.md`
- `docs/commercial-boundaries.md`
- `docs/repository-split-map.md`
- `docs/deployment.md`
- `docs/deploy-and-staging-smoke.md`
- `docs/authenticated-staging-pass.md`
- `docs/public-smoke-targets.md`
- `docs/staging-regression-notes.md`
- `docs/implementation-plan.md`
