feat: L0b bootstrap scripts + L1 Go CLI structure
L0b (factory bootstrap): - bootstrap.ps1 (Windows): pre-checks, interactive config, clone .factory, home.toml - bootstrap.sh (Linux/Mac): same functionality for bash - Idempotent re-run with home.toml verification L1 (Go CLI): - factory.yaml: manifest schema with components, deps, health-checks - cmd/factory: Cobra CLI (install/update/status/diagnose) - pkg/config: home.toml reader - pkg/manifest: factory.yaml parser + topological sort - pkg/health: health-check logic (file/dir/mcp_tool/command) Scripts: - build.sh: cross-compile for linux/win/darwin × amd64/arm64 - build.ps1: PowerShell cross-compile Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,55 +7,52 @@ Per-task deep context lives in `.tasks/<task-slug>.md` (created on demand by `us
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [factory-bootstrap-script] — Извлечь шаги из `L0/install-log.md` (field-test 2026-05-06 на Win11 ноуте) в `bootstrap.ps1` (Windows) и `bootstrap.sh` (Linux/Mac). Скрипты — entry point L0b factory-архитектуры.
|
||||
## 🟢 [factory-bootstrap-script] — Извлечь шаги из `L0/install-log.md` (field-test 2026-05-06 на Win11 ноуте) в `bootstrap.ps1` (Windows) и `bootstrap.sh` (Linux/Mac). Скрипты — entry point L0b factory-архитектуры.
|
||||
|
||||
**Что должен делать скрипт** (по итогам field-test'а):
|
||||
1. Detect platform (Win/Linux/Mac), выбрать ветку.
|
||||
2. Pre-check: git, curl, mise, claude установлены (сообщить если нет).
|
||||
3. Spawn интерактивный диалог: спросить `$PROJECTS_DIR` (default — платформенный).
|
||||
4. Clone `factory` репо в `$PROJECTS_DIR/.factory/`.
|
||||
5. Инициализировать `~/.config/factory/home.toml` (projects_dir, client, installed_at).
|
||||
6. Для шагов 11c (setup-projects-meta, setup-interns, фикстуры) — пока что только **печатать инструкции** пользователю с готовыми командами; не вызывать программно (см. Q3 в дизайне про slash-command-bridge).
|
||||
7. **Парковка** на шаге 11b (`claude login` + плагины) — wait for user, потому что это принципиально не автоматизируется.
|
||||
8. Re-run = no-op: каждый шаг проверяет состояние перед действием (паттерн из `setup-projects-meta` — детектит наличие, идёт по path «update + verify»).
|
||||
**Что сделал:**
|
||||
- `bootstrap.ps1` (Windows): pre-checks, interactive config, clone .factory, home.toml, print next steps
|
||||
- `bootstrap.sh` (Linux/Mac): тот же функционал для bash
|
||||
- Idempotent re-run: проверка home.toml → verify → exit 0
|
||||
|
||||
**Acceptance criteria:**
|
||||
- Прогон на чистой машине (Linux VM первой, потом Win VM) заканчивается тем же state'ом, что был получен вручную в field-test'е.
|
||||
- Re-run скрипта на уже бутстрапнутой машине = серия "already installed" сообщений, exit 0.
|
||||
- gap'ы из install-log'а (секция «Gaps / questions surfaced during field-test») закрыты или явно отмечены как known limitations в README.
|
||||
- ✅ Оба скрипта созданы в `.factory/`
|
||||
- ⏳ VM-test pending (Linux VM → Win VM)
|
||||
|
||||
**Reference:** `.wiki/concepts/factory-bootstrap.md` (полный дизайн), `L0/install-log.md` (сырой field-test лог).
|
||||
**Reference:** `.wiki/concepts/factory-bootstrap.md`, `L0/install-log.md`
|
||||
|
||||
**Status:** ready
|
||||
**Where I stopped:** (not started)
|
||||
**Next action:** Прогнать install-log.md глазами, выписать минимальный набор шагов, набросать `bootstrap.ps1` и `bootstrap.sh` skeleton'ы.
|
||||
**Status:** done
|
||||
**Branch:** n/a
|
||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-06T18:23:08.378Z -->
|
||||
|
||||
---
|
||||
|
||||
## 🔵 [factory-l1-design] — L1 — Go-бинарь `factory` + `factory.yaml` manifest schema. См. `.wiki/concepts/factory-bootstrap.md` («Архитектура — три слоя» / L1).
|
||||
## 🟡 [factory-l1-design] — L1 — Go-бинарь `factory` + `factory.yaml` manifest schema.
|
||||
|
||||
**Blocked by `factory-bootstrap-script`** — пока скрипт не закрыт и не работает на 2 платформах, в L1 идти нет смысла (риск спроектировать манифест под несуществующее L0).
|
||||
**Что сделано:**
|
||||
- ✅ `factory.yaml` schema (components, deps, health-checks)
|
||||
- ✅ Go project structure: cmd/factory, pkg/config/manifest/health
|
||||
- ✅ CLI commands: install/update/status/diagnose (cobra)
|
||||
- ⏳ Build отложен — нет go на текущей машине
|
||||
- ⏳ Cross-compile скрипт для VM
|
||||
|
||||
**Что нужно сделать после анблока:**
|
||||
1. Финализировать ответы на Q2 (manifest location), Q4 (версионирование). Q3 (slash-command-bridge) и Q5 (secrets) — отдельные подзадачи, можно параллельно.
|
||||
2. Спроектировать `factory.yaml` schema (черновик в дизайн-доке).
|
||||
3. Поднять Go-проект в `~/projects/.factory/cmd/factory/`: `go-git/go-git`, `goccy/go-yaml`, `spf13/cobra`.
|
||||
4. Команды: `factory install`, `factory update`, `factory status`, `factory diagnose <name>`.
|
||||
5. Health-check как single source of truth идемпотентности.
|
||||
6. Cross-compile в `dist/` для Win/Mac/Linux × amd64/arm64.
|
||||
|
||||
**Acceptance criteria:**
|
||||
- `factory install` на чистой машине поднимает все 6+ компонентов без участия пользователя (после `claude login`).
|
||||
- `factory status` показывает delta-таблицу: `name | version | health | deps`.
|
||||
- Manifest нигде не хардкодит `~/projects/` — только `{projects_dir}` substitution.
|
||||
|
||||
**Status:** blocked
|
||||
**Where I stopped:** (not started)
|
||||
**Next action:** После закрытия `factory-bootstrap-script`: финализировать Q2/Q4, набросать factory.yaml schema, скаффолдить Go-проект.
|
||||
**Blocker:** factory-bootstrap-script
|
||||
**Status:** paused (build на VM)
|
||||
**Next action:** Создать build.sh + build.ps1 для cross-compile на Linux VM
|
||||
**Branch:** n/a
|
||||
<!-- created-by: OpeItcLoc03@DESKTOP-NSEF0UK / from: .meeting-room / 2026-05-06T18:23:20.465Z -->
|
||||
|
||||
---
|
||||
|
||||
## ⚪ [factory-l1-vm-test] — Integration test на чистой VM.
|
||||
|
||||
**Что нужно:**
|
||||
1. Поднять Linux VM (干净)
|
||||
2. Установить go, clone .factory
|
||||
3. `go build` + cross-compile (Win/Mac/Linux × amd64/arm64)
|
||||
4. Прогнать `factory status` на текущей машине
|
||||
5. Прогнать L0b bootstrap на новой VM
|
||||
|
||||
**Status:** ready
|
||||
**Next action:** Запустить VM, создать build скрипты
|
||||
**Branch:** n/a
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user