149 lines
5.7 KiB
Markdown
149 lines
5.7 KiB
Markdown
# Community source whitelist
|
||
|
||
## 1. Назначение документа
|
||
|
||
Этот документ фиксирует, что именно допустимо в публичном репозитории `crank-community`, а что должно оставаться вне него.
|
||
|
||
Документ нужен для трех задач:
|
||
|
||
- держать `crank-community` в рамках честной открытой редакции;
|
||
- не допускать обратного затекания premium surface после split;
|
||
- использовать explicit whitelist как правило для дальнейших изменений и синхронизации с private repositories.
|
||
|
||
## 2. Текущий статус
|
||
|
||
`crank-community` уже является самостоятельным public repository и должен рассматриваться как source base для открытой редакции.
|
||
|
||
Следствие:
|
||
|
||
- этот репозиторий описывается как действующая открытая кодовая база, а не как временная заготовка;
|
||
- cleanup выполняется прямо в `crank-community`, а не как подготовка к будущему импорту;
|
||
- любые общие улучшения сначала оформляются здесь, а затем переносятся в `crank-enterprise` и `crank-cloud`.
|
||
|
||
## 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;
|
||
- `TASKS.md` должен описывать backlog именно для `crank-community`.
|
||
|
||
### 3.2. Backend и core crates
|
||
|
||
Разрешены:
|
||
|
||
- `apps/admin-api`
|
||
- `apps/mcp-server`
|
||
- `crates/crank-core`
|
||
- `crates/crank-schema`
|
||
- `crates/crank-mapping`
|
||
- `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`, если они не превращаются в рабочий premium UX.
|
||
|
||
### 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
|
||
|
||
Также в Community не должны оставаться рабочие premium-only flows:
|
||
|
||
- `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. Текущие cleanup-задачи
|
||
|
||
На данный момент `crank-community` уже отделен как репозиторий, но еще требует final cleanup.
|
||
|
||
Основные хвосты:
|
||
|
||
1. workspace manifests все еще содержат часть premium protocol toolchain dependencies;
|
||
2. Community test/dev wiring еще не полностью очищен от legacy streaming и premium protocol references;
|
||
3. `workspace-setup`, `settings`, `catalog`, `usage`, `agents` и `i18n` все еще содержат отдельные premium strings и dormant UI modules;
|
||
4. часть docs все еще описывает переходный split-state вместо текущего Community repository.
|
||
|
||
## 6. Правило на будущее
|
||
|
||
Для `crank-community` действует whitelist-first правило:
|
||
|
||
- сначала определяется, допустима ли возможность в Community;
|
||
- потом код и документация приводятся к этой границе;
|
||
- и только после этого изменение попадает в `main`.
|
||
|
||
Запрещено:
|
||
|
||
- возвращать premium functionality в Community как dormant или half-wired path;
|
||
- хранить в Community “на будущее” private operator/runtime flows без прямой необходимости для общей базы;
|
||
- вести backlog так, будто `crank-community` все еще лишь промежуточная стадия split.
|