# Community source whitelist ## 1. Назначение документа Этот документ фиксирует, что именно допустимо в публичном репозитории `crank-community`, а что должно оставаться за его пределами. Документ нужен по двум причинам: - исключить повторный baseline-import без фильтрации; - перевести split в режим explicit whitelist, а не последующего удаления лишнего. ## 2. Текущий статус Состояние на текущий момент: - `crank-community` уже создан; - bootstrap commit в нем сохранен; - baseline-import был выполнен ошибочно и уже удален из истории force-push; - текущий `main` в `crank-community` снова указывает на bootstrap-only состояние. Это означает, что финальный public import еще не выполнен. ## 3. Разрешенный состав `crank-community` ### 3.1. Верхнеуровневые файлы Разрешены: - `AGENTS.md` - `Cargo.toml` - `Cargo.lock` - `LICENSE` - `README.md` - `TASKS.md` - `justfile` - `rust-toolchain.toml` - `.dockerignore` - `.env.example` - `.gitignore` - `.sqlx/*` С оговоркой: - `Cargo.toml` и `Cargo.lock` должны быть community-specific и не включать premium crates; - `TASKS.md` после split должен описывать backlog уже для `crank-community`, а не для старого transitional monorepo. ### 3.2. Backend и core crates Разрешены: - `apps/admin-api` - `apps/mcp-server` - `crates/crank-core` - `crates/crank-schema` - `crates/crank-mapping` - `crates/crank-proto` - `crates/crank-registry` - `crates/crank-runtime` - `crates/crank-adapter-rest` С оговоркой: - `crank-runtime` должен собираться как `REST-only` база; - Community workspace не должен зависеть от `GraphQL`, `gRPC`, `SOAP`, `WebSocket` adapter crates; - server-side capability enforcement должен оставаться честным и не позволять premium protocol paths. ### 3.3. UI Разрешены: - Community UI pages; - Community wizard для `REST`; - capability-gated copy, который честно описывает границы Community; - Community demo and staging flows. Допустимо сохранять: - public capability model; - честные тексты про существование `Enterprise` и `Cloud`. ### 3.4. Deployment и scripts Разрешены: - `deploy/community/*` - public GitHub workflows для Community - community release docs - public smoke scripts ### 3.5. Documentation Разрешены: - public architecture docs; - public API/MCP contracts; - `product-editions`, `commercial-boundaries`, `repository-split-map`; - Community deployment and smoke docs; - Community release checklist. ## 4. Явный blacklist для `crank-community` В публичный репозиторий не должны попадать: - `crates/crank-adapter-graphql` - `crates/crank-adapter-grpc` - `crates/crank-adapter-soap` - `crates/crank-adapter-websocket` - private token issuer implementations - enterprise governance implementations - metering / billing implementations - hosted control-plane code - private delivery manifests - private release workflows - private operator tooling Также не должны оставаться public artifacts, которые реально включают premium-only flows как рабочий Community surface: - `GraphQL` wizard path - `gRPC` wizard path - `SOAP` wizard path - `WebSocket` wizard path - Community streaming execution UI - Community demo data для premium protocols - premium protocol examples ## 5. Блокеры для чистого public import Сейчас чистый whitelist export еще нельзя считать готовым, потому что в текущем коде есть смешанные зависимости. Основные блокеры: 1. Root workspace все еще содержит premium adapter crates. 2. `admin-api` и `mcp-server` test/dev wiring все еще используют premium crates. 3. UI build все еще включает premium wizard modules и premium step templates. 4. `workspace-setup`, `settings`, `catalog`, `usage`, `agents` и `i18n` все еще содержат premium protocol surface. 5. `examples/` и часть docs все еще содержат premium protocol materials. ## 6. Порядок очистки перед public import Чистый перенос в `crank-community` должен идти только так: 1. Переписать Community workspace так, чтобы он не включал premium crates. 2. Удалить premium protocol dependencies из Community backend wiring. 3. Сделать отдельный Community UI surface без premium wizard/templates/modules. 4. Удалить premium examples и demo fixtures из Community export. 5. Перепроверить docs и release artifacts. 6. Только после этого делать новый force-push чистой истории в `crank-community`. ## 7. Правило на будущее Для `crank-community` допустим только whitelist-first подход: - сначала фиксируется разрешенный состав; - потом код приводится к нему; - и только потом выполняется push. Подход “сначала импортировать baseline, потом удалять лишнее” запрещен.