5.8 KiB
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.mdCargo.tomlCargo.lockLICENSEREADME.mdTASKS.mdjustfilerust-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-apiapps/mcp-servercrates/crank-corecrates/crank-schemacrates/crank-mappingcrates/crank-protocrates/crank-registrycrates/crank-runtimecrates/crank-adapter-rest
С оговоркой:
crank-runtimeдолжен собираться какREST-onlyбаза;- Community workspace не должен зависеть от
GraphQL,gRPC,SOAP,WebSocketadapter 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-graphqlcrates/crank-adapter-grpccrates/crank-adapter-soapcrates/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:
GraphQLwizard pathgRPCwizard pathSOAPwizard pathWebSocketwizard path- Community streaming execution UI
- Community demo data для premium protocols
- premium protocol examples
5. Блокеры для чистого public import
Сейчас чистый whitelist export еще нельзя считать готовым, потому что в текущем коде есть смешанные зависимости.
Основные блокеры:
- Root workspace все еще содержит premium adapter crates.
admin-apiиmcp-servertest/dev wiring все еще используют premium crates.- UI build все еще включает premium wizard modules и premium step templates.
workspace-setup,settings,catalog,usage,agentsиi18nвсе еще содержат premium protocol surface.examples/и часть docs все еще содержат premium protocol materials.
6. Порядок очистки перед public import
Чистый перенос в crank-community должен идти только так:
- Переписать Community workspace так, чтобы он не включал premium crates.
- Удалить premium protocol dependencies из Community backend wiring.
- Сделать отдельный Community UI surface без premium wizard/templates/modules.
- Удалить premium examples и demo fixtures из Community export.
- Перепроверить docs и release artifacts.
- Только после этого делать новый force-push чистой истории в
crank-community.
7. Правило на будущее
Для crank-community допустим только whitelist-first подход:
- сначала фиксируется разрешенный состав;
- потом код приводится к нему;
- и только потом выполняется push.
Подход “сначала импортировать baseline, потом удалять лишнее” запрещен.