From 17d9c4252182f92ac8dba416654306db95e4764d Mon Sep 17 00:00:00 2001 From: "a.tolmachev" Date: Sun, 3 May 2026 19:45:13 +0000 Subject: [PATCH] docs: add community release checklist --- TASKS.md | 1 + docs/commercial-boundaries.md | 1 + docs/community-release-checklist.md | 111 ++++++++++++++++++++++++++++ docs/deployment.md | 15 +++- docs/implementation-plan.md | 1 + docs/product-editions.md | 1 + 6 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 docs/community-release-checklist.md diff --git a/TASKS.md b/TASKS.md index 76718b2..33841eb 100644 --- a/TASKS.md +++ b/TASKS.md @@ -41,6 +41,7 @@ Progress: - gate for creating `2` private repositories is already documented before any physical commercial split - canonical Community deployment manifest and env template now live under `deploy/community/*`, and public deploy uses that manifest instead of the root compose file - CI, README, runtime/deploy smoke docs now point to `deploy/community/*` as the Community delivery source of truth + - separate `Community` release checklist now exists and explicitly forbids treating future `Enterprise/Cloud` delivery as just another env on the same public manifest - pending: - remaining extension seams and packaging split still need to move from planning into concrete public/private manifests diff --git a/docs/commercial-boundaries.md b/docs/commercial-boundaries.md index a0badc7..6404cc5 100644 --- a/docs/commercial-boundaries.md +++ b/docs/commercial-boundaries.md @@ -201,6 +201,7 @@ Private code должен подключаться как реализация ## 10. Связанные документы - `docs/product-editions.md` +- `docs/community-release-checklist.md` - `docs/agent-auth-model.md` - `docs/module-decomposition.md` - `docs/frontend-roadmap.md` diff --git a/docs/community-release-checklist.md b/docs/community-release-checklist.md new file mode 100644 index 0000000..d1bd9af --- /dev/null +++ b/docs/community-release-checklist.md @@ -0,0 +1,111 @@ +# 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` + +Root-файлы: + +- `docker-compose.yml` +- `.env.example` + +считаются только convenience-слоем для локальной разработки и не должны использоваться как +основа будущей коммерческой упаковки. + +## 3. Что обязательно входит в Community release + +Community release должен поставлять: + +- `ui` +- `admin-api` +- `mcp-server` +- `postgres` как runtime dependency в compose-манифесте +- 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` +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` + +## 6. Правило для будущих коммерческих редакций + +`Enterprise` и `Cloud` не должны проектироваться как: + +- другой `.env` поверх `deploy/community/docker-compose.yml`; +- скрытые feature flags внутри Community release path; +- дополнительные сервисы, “подмешанные” в те же public manifests без отдельной delivery границы. + +Они должны иметь: + +- отдельные private repositories; +- отдельные manifests; +- отдельные release pipelines; +- отдельные operator docs. + +До создания: + +- `crank-enterprise` +- `crank-cloud` + +нельзя считать physical packaging split завершенным. + +## 7. Минимальный operator checklist + +Перед публикацией Community release нужно подтвердить: + +- capability matrix совпадает с `docs/product-editions.md`; +- UI не показывает рабочими premium-only сценарии; +- `admin-api` и `mcp-server` enforce capability limits на сервере; +- public deployment path воспроизводим на чистом хосте; +- staging smoke записан в regression notes. + +## 8. Связанные документы + +- `docs/product-editions.md` +- `docs/commercial-boundaries.md` +- `docs/deployment.md` +- `docs/deploy-and-staging-smoke.md` +- `docs/authenticated-staging-pass.md` +- `docs/implementation-plan.md` diff --git a/docs/deployment.md b/docs/deployment.md index 425b5f6..81f51eb 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -13,7 +13,10 @@ Документ не привязан к конкретному hypervisor, cloud provider, типу VM или домашней инфраструктуре. -Практический post-deploy smoke checklist вынесен отдельно в [deploy-and-staging-smoke.md](/home/a.tolmachev/code/rust/mcpaas/docs/deploy-and-staging-smoke.md). +Практический post-deploy smoke checklist вынесен отдельно в [deploy-and-staging-smoke.md](/home/github-ops/crank/docs/deploy-and-staging-smoke.md). + +Отдельный release checklist именно для открытой редакции вынесен в +[community-release-checklist.md](/home/github-ops/crank/docs/community-release-checklist.md). ## 2. Базовая модель деплоя @@ -261,6 +264,16 @@ Workflow доставляет именно `deploy/community/docker-compose.yml` - ротация одного секрета не требует переписывать весь набор env; - `.env` на сервере каждый deploy собирается заново из актуальных secrets. +## 11. Граница Community против future commercial delivery + +Community delivery path должен оставаться отдельным и воспроизводимым сам по себе. + +Это означает: + +- `deploy/community/*` — public source of truth для открытой поставки; +- future `Enterprise` и `Cloud` не должны появляться как еще один `.env` на том же compose-файле; +- commercial manifests и pipelines должны жить отдельно после создания private repositories. + ## 12. Что нельзя забыть - TLS и renewal сертификатов; diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index 12d94b2..24a4cf6 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -195,6 +195,7 @@ - `docs/product-editions.md` - `docs/commercial-boundaries.md` +- `docs/community-release-checklist.md` - `docs/frontend-roadmap.md` - `docs/refactoring-roadmap.md` - `docs/agent-auth-model.md` diff --git a/docs/product-editions.md b/docs/product-editions.md index 649e9d3..e2b5449 100644 --- a/docs/product-editions.md +++ b/docs/product-editions.md @@ -187,6 +187,7 @@ Crank развивается как три редакции: - `docs/architecture.md` - `docs/module-decomposition.md` - `docs/agent-auth-model.md` +- `docs/community-release-checklist.md` - `docs/frontend-roadmap.md` - `docs/refactoring-roadmap.md` - `docs/implementation-plan.md`