Files
crank/docs/community-source-whitelist.md
T
2026-05-07 19:27:54 +00:00

158 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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, потом удалять лишнее” запрещен.