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

5.8 KiB
Raw Blame History

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, потом удалять лишнее” запрещен.