# Repository split map ## 1. Назначение документа Этот документ фиксирует целевую карту физического разделения текущего репозитория на: - `crank-community` - `crank-enterprise` - `crank-cloud` Документ нужен, чтобы: - не гадать, что именно куда переносится; - заранее отделить public Community artifacts от private commercial delivery; - подготовить создание новых репозиториев как управляемый шаг, а не как спонтанный рефакторинг. ## 2. Текущее состояние Разделение уже выполнено на уровне репозиториев: - `crank-community` — public base; - `crank-enterprise` — private self-hosted delta; - `crank-cloud` — private hosted delta. Дальнейшая задача не в создании split, а в его дисциплинированном поддержании: - общее улучшение идет сначала в `crank-community`; - затем переносится в `crank-enterprise` и `crank-cloud`; - cleanup Community делается только в `crank-community`. ## 3. Целевой результат ### 3.1. `crank-community` Public repository. В нем должны остаться: - Community runtime; - Community UI; - `admin-api`, `mcp-server`, `ui`; - `crank-core`, `crank-registry`, `crank-runtime`, schema and mapping crates; - только `REST`-ориентированный Community protocol surface; - capability model; - Community auth model: - static AI-agent key; - only `security_level = standard`; - `deploy/community/*`; - optional `Valkey` service definition для Community deployment; - public CI/CD for Community; - Community docs, smoke docs и demo flow. Техническая оговорка: - `crank-runtime` в Community должен уметь собираться без premium adapter crates; - `UnsupportedProtocol` и capability model должны оставаться достаточным fallback для disabled protocol families. В нем не должно остаться: - private token issuer implementations; - enterprise auth/governance services; - cloud control-plane logic; - private packaging files; - private operational tooling. ### 3.2. `crank-enterprise` Private repository. В нем должны жить: - self-hosted commercial extensions; - `GraphQL` и `gRPC unary`, если они окончательно выводятся из Community; - short-lived token service; - one-time token service; - enterprise access/governance: - `SSO` - `2FA` - extended `RBAC` - `audit log` - premium protocol/runtime additions, если они не входят в Community; - enterprise deployment manifests; - optional cluster-aware cache integration для self-hosted production; - private container/release packaging; - enterprise operator docs. ### 3.3. `crank-cloud` Private repository. В нем должны жить: - cloud control plane; - metering; - billing; - hosted tenant management; - hosted operational tooling; - managed shared cache layer defaults and cache operations; - cloud-only delivery manifests; - cloud release pipeline; - hosted support/admin tooling. ## 4. Карта по типам содержимого ### 4.1. Application code Остается в `crank-community`: - весь текущий Community runtime и UI - все public extension seams - все capability checks - `REST`-only product surface Как промежуточный этап до физического переноса: - `crank-runtime` в общем коде должен иметь feature-gated seams для `GraphQL/gRPC/SOAP/WebSocket`; - это позволяет потом перенести premium adapters в private repos без полного форка runtime base. Уходит в `crank-enterprise`: - `crank-adapter-graphql` - `crank-adapter-grpc` - private auth/token/governance services - enterprise-only runtime additions Уходит в `crank-cloud`: - hosted orchestration and control-plane code - billing/metering integrations ### 4.2. Deployment manifests Остается в `crank-community`: - `deploy/community/*` Уходит в `crank-enterprise`: - private self-hosted manifests - private `Helm` charts - enterprise image references Уходит в `crank-cloud`: - hosted deployment manifests - cloud operational manifests ### 4.3. CI/CD Остается в `crank-community`: - public Community `CI` - public Community `Deploy` Уходит в `crank-enterprise`: - private release workflows - private image publishing Уходит в `crank-cloud`: - hosted release workflows - control-plane rollout workflows ### 4.4. Documentation Остается в `crank-community`: - public architecture - public API/MCP contracts - Community deployment docs - Community smoke docs Уходит в `crank-enterprise`: - enterprise operator docs - enterprise packaging docs - enterprise support runbooks Уходит в `crank-cloud`: - hosted operations docs - tenant control-plane docs - cloud support runbooks ## 5. Правила переноса При переносе нужно соблюдать: 1. Сначала переносится Community в `crank-community` как рабочая самостоятельная база. 2. Потом переносится private self-hosted контур в `crank-enterprise`. 3. Потом переносится hosted/control-plane контур в `crank-cloud`. 4. Public contracts должны остаться в Community и не зависеть от private кодовой базы. 5. Private repos не должны требовать обратного копирования логики в Community. ## 6. Правила поддержки split после разделения После разделения действуют такие правила: 1. `crank-community` остается базой для общей открытой логики. 2. `crank-enterprise` и `crank-cloud` не должны независимо переизобретать общий Community код. 3. Общие исправления и улучшения сначала делаются в `crank-community`, затем переносятся в private repositories. 4. Удаление или ограничение Community functionality делается только в `crank-community`. 5. Private repositories должны хранить только свой product delta, а не полную независимую копию всей эволюции продукта. ## 7. Практический вывод Для текущего этапа это означает: - `crank-community` нужно дочистить до окончательного public состояния; - затем использовать его как source base для общих улучшений; - коммерческие возможности продолжать развивать только в `crank-enterprise` и `crank-cloud`.