split: bootstrap community repository
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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. Техническая стратегия разделения
|
||||
|
||||
|
||||
@@ -95,6 +95,10 @@ Community release должен поставлять:
|
||||
|
||||
нельзя считать physical packaging split завершенным.
|
||||
|
||||
Для первичного импорта Community baseline из текущего monorepo используется:
|
||||
|
||||
- `scripts/export-community.sh`
|
||||
|
||||
## 7. Минимальный operator checklist
|
||||
|
||||
Перед публикацией Community release нужно подтвердить:
|
||||
|
||||
@@ -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 для этого шага уже должны быть подготовлены заранее в текущем репозитории:
|
||||
|
||||
|
||||
@@ -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`
|
||||
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
Executable
+35
@@ -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/"
|
||||
Reference in New Issue
Block a user