split: bootstrap community repository

This commit is contained in:
a.tolmachev
2026-05-07 19:21:12 +00:00
parent 978ed3a02e
commit 7123a3c734
7 changed files with 79 additions and 13 deletions
+11 -4
View File
@@ -39,6 +39,15 @@ Verification:
Progress:
- done:
- `crank-community` now contains the first imported public baseline from the current monorepo
- bootstrap templates have been pushed into:
- `crank-community`
- `crank-enterprise`
- `crank-cloud`
- all `3` target repositories now exist:
- `crank-community`
- `crank-enterprise`
- `crank-cloud`
- public target repository `crank-community` now exists and can receive bootstrap templates once the remaining private repositories are created
- gate for creating `3` target repositories is already documented before any physical commercial split
- canonical Community deployment manifest and env template now live under `deploy/community/*`, and public deploy uses that manifest instead of the root compose file
@@ -49,10 +58,8 @@ Progress:
- bootstrap templates now exist for `crank-community`, `crank-enterprise`, and `crank-cloud`, including initial README and workflow skeletons
- `crank-runtime` now has protocol feature seams, and the runtime crate compiles with `--no-default-features` as a `REST-only` base
- pending:
- next management gate is to create the remaining private target repositories:
- `crank-enterprise`
- `crank-cloud`
- after all `3` repositories exist, move the prepared bootstrap templates into their roots before physical split starts
- trim `crank-community` from bootstrap baseline to the final public Community source of truth
- continue physical split by isolating `enterprise/cloud` delta away from the extracted Community base
## Planned
+4 -1
View File
@@ -79,7 +79,10 @@
- создание `crank-community`, `crank-enterprise` и `crank-cloud` должно быть отдельным осознанным шагом;
- до этого момента в текущем репозитории нужно завершить capability model, extension seams и public contracts;
- физическое вынесение private code нельзя начинать раньше, чем эти три целевых repositories созданы и для них определены delivery boundaries.
- на текущий момент public repository `crank-community` уже создан; следующий обязательный внешний шаг — создание private repositories `crank-enterprise` и `crank-cloud`.
- все три целевых repositories уже созданы;
- bootstrap templates уже перенесены в целевые repositories;
- `crank-community` уже получил первый импорт public baseline;
- следующий шаг — начать physical split, не оставляя текущий monorepo source of truth для всех трех редакций.
## 6. Техническая стратегия разделения
+4
View File
@@ -95,6 +95,10 @@ Community release должен поставлять:
нельзя считать physical packaging split завершенным.
Для первичного импорта Community baseline из текущего monorepo используется:
- `scripts/export-community.sh`
## 7. Минимальный operator checklist
Перед публикацией Community release нужно подтвердить:
+7 -3
View File
@@ -148,9 +148,13 @@
Текущий статус:
- `crank-community` уже создан;
- до начала physical split остаются private repositories:
- `crank-enterprise`
- `crank-cloud`
- `crank-enterprise` уже создан;
- `crank-cloud` уже создан;
- bootstrap templates уже перенесены в новые repositories;
- `crank-community` уже получил первый импорт public baseline;
- следующий шаг уже не организационный, а технический:
- очистить `crank-community` до финального public Community source of truth;
- затем продолжить вынос `enterprise/cloud` delta.
Bootstrap templates для этого шага уже должны быть подготовлены заранее в текущем репозитории:
+7 -5
View File
@@ -208,9 +208,11 @@ Private repository.
Текущий статус:
- `crank-community` уже создан;
- до старта physical split остаются внешние шаги:
- создать `crank-enterprise`
- создать `crank-cloud`
- `crank-enterprise` уже создан;
- `crank-cloud` уже создан;
- bootstrap templates уже перенесены в целевые repositories;
- `crank-community` уже получил первый импорт public baseline из текущего monorepo;
- management gate закрыт, следующий шаг — начать physical split.
Пока эти четыре пункта не выполнены, physical split не начинается.
@@ -224,8 +226,8 @@ Private repository.
Следующий управленческий шаг после завершения текущего boundary-трека:
- создать `crank-enterprise`
- создать `crank-cloud`
- начать physical split с `crank-community`
- довести `crank-community` от baseline-import до финального public source of truth
- создать `crank-enterprise`
- создать `crank-cloud`
+11
View File
@@ -37,3 +37,14 @@ Usage:
```bash
./scripts/staging-note-block.sh rmcp.itexp.me abc1234 "codex + operator" partial
```
## export-community.sh
Helper that replaces the working tree of the extracted `crank-community`
repository with the tracked Community baseline from this monorepo.
Usage:
```bash
./scripts/export-community.sh /path/to/crank-community-working-tree
```
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage:
./scripts/export-community.sh /path/to/crank-community-working-tree
The target directory must already be a git working tree for crank-community.
EOF
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
usage
exit 0
fi
if [[ $# -ne 1 ]]; then
usage >&2
exit 1
fi
repo_root="$(git rev-parse --show-toplevel)"
target_dir="$(cd "$1" && pwd)"
if [[ ! -d "$target_dir/.git" ]]; then
echo "target is not a git working tree: $target_dir" >&2
exit 1
fi
find "$target_dir" -mindepth 1 -maxdepth 1 ! -name .git -exec rm -rf {} +
git -C "$repo_root" ls-files -z -- . ':(exclude)templates/repositories/**' \
| rsync -a --delete --from0 --files-from=- "$repo_root/" "$target_dir/"