diff --git a/TASKS.md b/TASKS.md index f4281f3..fe1c855 100644 --- a/TASKS.md +++ b/TASKS.md @@ -45,9 +45,9 @@ Progress: - separate `Community` release checklist now exists and explicitly forbids treating future `Enterprise/Cloud` delivery as just another env on the same public manifest - explicit repository split map now defines what goes to `crank-community`, `crank-enterprise`, and `crank-cloud` - `Community` is now fixed as `REST-only` in product docs, capability model, backend validation, demo seed, and UI protocol expectations + - bootstrap templates now exist for `crank-community`, `crank-enterprise`, and `crank-cloud`, including initial README and workflow skeletons - pending: - - remaining extension seams and packaging split still need to move from planning into concrete `crank-community` / `crank-enterprise` / `crank-cloud` manifests - - next management gate is to actually create the `3` target repositories before physical split starts + - next management gate is to actually create the `3` target repositories and move these bootstrap templates into their roots before physical split starts ## Planned diff --git a/docs/commercial-boundaries.md b/docs/commercial-boundaries.md index 0eb2f85..74a9a90 100644 --- a/docs/commercial-boundaries.md +++ b/docs/commercial-boundaries.md @@ -202,6 +202,13 @@ Private code должен подключаться как реализация - Community release path должен опираться на `deploy/community/*`; - private `Enterprise` и `Cloud` manifests не должны проектироваться как вариации того же root compose-файла. +Подготовительные bootstrap artifacts для будущих репозиториев должны храниться отдельно от production manifests. +В текущем репозитории для этого используются: + +- `templates/repositories/crank-community/*` +- `templates/repositories/crank-enterprise/*` +- `templates/repositories/crank-cloud/*` + ## 10. Связанные документы - `docs/product-editions.md` diff --git a/docs/implementation-plan.md b/docs/implementation-plan.md index e7ad869..5536eb8 100644 --- a/docs/implementation-plan.md +++ b/docs/implementation-plan.md @@ -144,6 +144,12 @@ - `crank-enterprise` - `crank-cloud` +Bootstrap templates для этого шага уже должны быть подготовлены заранее в текущем репозитории: + +- `templates/repositories/crank-community/*` +- `templates/repositories/crank-enterprise/*` +- `templates/repositories/crank-cloud/*` + ### Результат - `crank-community` становится public Community repository; diff --git a/docs/repository-split-map.md b/docs/repository-split-map.md index be38936..4bf647b 100644 --- a/docs/repository-split-map.md +++ b/docs/repository-split-map.md @@ -197,6 +197,12 @@ Private repository. Пока эти четыре пункта не выполнены, physical split не начинается. +Техническая заготовка для этого шага уже живет в: + +- `templates/repositories/crank-community/*` +- `templates/repositories/crank-enterprise/*` +- `templates/repositories/crank-cloud/*` + ## 7. Практический вывод Следующий управленческий шаг после завершения текущего boundary-трека: diff --git a/templates/repositories/README.md b/templates/repositories/README.md new file mode 100644 index 0000000..b76aec2 --- /dev/null +++ b/templates/repositories/README.md @@ -0,0 +1,25 @@ +# Repository Templates + +Этот каталог содержит bootstrap-шаблоны для физического разделения текущего репозитория на: + +- `crank-community` +- `crank-enterprise` +- `crank-cloud` + +Назначение: + +- не придумывать структуру новых репозиториев с нуля в момент split; +- заранее зафиксировать базовые README и workflow skeletons; +- сократить риск того, что `Community`, `Enterprise` и `Cloud` начнут жить по разным непредсказуемым правилам. + +Правила использования: + +1. Шаблоны не являются production source of truth для текущего репозитория. +2. Они применяются только в момент создания новых репозиториев. +3. После создания целевых репозиториев эти файлы должны быть перенесены в их корень и адаптированы под реальные owners, secrets и release paths. + +Связанные документы: + +- `docs/repository-split-map.md` +- `docs/commercial-boundaries.md` +- `docs/community-release-checklist.md` diff --git a/templates/repositories/crank-cloud/.github/workflows/release.yml b/templates/repositories/crank-cloud/.github/workflows/release.yml new file mode 100644 index 0000000..c9018f0 --- /dev/null +++ b/templates/repositories/crank-cloud/.github/workflows/release.yml @@ -0,0 +1,13 @@ +name: Cloud Release + +on: + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: TODO + run: | + echo "Add private cloud release pipeline after crank-cloud repository is created." + exit 1 diff --git a/templates/repositories/crank-cloud/README.md b/templates/repositories/crank-cloud/README.md new file mode 100644 index 0000000..59f176e --- /dev/null +++ b/templates/repositories/crank-cloud/README.md @@ -0,0 +1,24 @@ +# crank-cloud + +Private hosted/control-plane repository for Crank. + +## Scope + +This repository is expected to contain: + +- cloud control-plane code +- hosted orchestration +- metering and billing integrations +- hosted tenant management +- cloud operational tooling +- private cloud deployment and rollout workflows + +It must remain separate from the public Community delivery path and from self-hosted Enterprise packaging. + +## Initial bootstrap checklist + +1. Create the repository as private. +2. Copy bootstrap files from this template. +3. Define hosted environment owners, release policy and secret model. +4. Add cloud-only workflows and manifests. +5. Move cloud-owned code only after Community and Enterprise boundaries are already fixed. diff --git a/templates/repositories/crank-community/.github/workflows/ci.yml b/templates/repositories/crank-community/.github/workflows/ci.yml new file mode 100644 index 0000000..cd7a4b3 --- /dev/null +++ b/templates/repositories/crank-community/.github/workflows/ci.yml @@ -0,0 +1,20 @@ +name: Community CI + +on: + pull_request: + push: + branches: + - main + - "feat/**" + +jobs: + rust: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: TODO + run: | + echo "Move Community CI logic here from the split monorepo." + exit 1 diff --git a/templates/repositories/crank-community/.github/workflows/deploy.yml b/templates/repositories/crank-community/.github/workflows/deploy.yml new file mode 100644 index 0000000..4f202cb --- /dev/null +++ b/templates/repositories/crank-community/.github/workflows/deploy.yml @@ -0,0 +1,13 @@ +name: Community Deploy + +on: + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: TODO + run: | + echo "Move Community deploy workflow here after crank-community repository is created." + exit 1 diff --git a/templates/repositories/crank-community/README.md b/templates/repositories/crank-community/README.md new file mode 100644 index 0000000..a915ade --- /dev/null +++ b/templates/repositories/crank-community/README.md @@ -0,0 +1,33 @@ +# crank-community + +Public Community repository for Crank. + +## Scope + +This repository is the open-source, self-hosted `Community` edition. + +It is expected to contain: + +- Community runtime and UI +- `admin-api` +- `mcp-server` +- public core crates +- Community-only deployment manifests +- public CI/CD +- public documentation and demo flow + +It must not contain: + +- private enterprise token services +- private enterprise governance code +- cloud control-plane code +- private release manifests +- private operational tooling + +## Initial bootstrap checklist + +1. Copy Community-owned code and docs from the monorepo according to `docs/repository-split-map.md`. +2. Move `deploy/community/*` into the root delivery path for this repository. +3. Move public workflows into `.github/workflows/`. +4. Enable public branch protection and required status checks. +5. Publish Community release and deployment documentation from this repository only. diff --git a/templates/repositories/crank-enterprise/.github/workflows/release.yml b/templates/repositories/crank-enterprise/.github/workflows/release.yml new file mode 100644 index 0000000..fe7c3ba --- /dev/null +++ b/templates/repositories/crank-enterprise/.github/workflows/release.yml @@ -0,0 +1,13 @@ +name: Enterprise Release + +on: + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: TODO + run: | + echo "Add private enterprise release pipeline after crank-enterprise repository is created." + exit 1 diff --git a/templates/repositories/crank-enterprise/README.md b/templates/repositories/crank-enterprise/README.md new file mode 100644 index 0000000..35cbc6d --- /dev/null +++ b/templates/repositories/crank-enterprise/README.md @@ -0,0 +1,30 @@ +# crank-enterprise + +Private self-hosted commercial repository for Crank. + +## Scope + +This repository is expected to contain: + +- self-hosted commercial extensions +- short-lived and one-time machine token services +- enterprise access and governance features +- premium protocol/runtime additions that are not part of Community +- private self-hosted packaging +- private operator documentation + +It must not become a copy-paste fork of the entire Community repository. + +Expected model: + +- pull Community-compatible contracts from `crank-community` +- keep private delta isolated +- avoid editing the same ownership area in two repositories without a clear seam + +## Initial bootstrap checklist + +1. Create the repository as private. +2. Copy bootstrap files from this template. +3. Define owners and access policy. +4. Create private release workflow and private registry path. +5. Move only enterprise-owned code after `crank-community` is established as the public base.