Promote factory-bootstrap → factory wiki + 2 tasks; archive buffer

Wiki: factory/.wiki/concepts/factory-bootstrap.md (full design + Q1/Q6/Q8
decisions + Q2-Q5/Q7/Q9 deferred + 2026-05-06 field-test results).
Tasks: factory#factory-bootstrap-script (ready), factory#factory-l1-design
(blocked-by script). Side-task: claude-skills#project-creation-lifecycle-skill
(gap surfaced — ad-hoc project creation strands repos outside projects-meta
indexing until manual seed).

Buffer moved to .archive/2026-05-06-factory-bootstrap.md.
This commit is contained in:
2026-05-06 21:23:42 +03:00
parent 8ddcf0dd27
commit f3cad514db
2 changed files with 44 additions and 14 deletions

View File

@@ -2,7 +2,7 @@
topic: factory-bootstrap
started: 2026-05-06
participants: [user, claude-cso]
status: in-progress
status: ready-to-promote
problem: >
Установка/обновление инфраструктуры software factory (точечные папки в ~/projects/,
shared MCP-сервера, скилы) для нового сотрудника должна быть "одной кнопкой" —
@@ -174,6 +174,10 @@ problem: >
- **Цена:** +1 папка `templates/enterprise/<repo>/` (6 скелетов: `common`, `meeting-room`, `organization`, `templates`, `projects-meta-mcp-skeleton`, `interns-mcp-skeleton`) + per-component поле `source.template:` в manifest. Оценка: ~неделя на скелеты + ~3 дня на `clone-or-init` логику в Go-биноре.
- **Зависимости:** не блокирует v0 (clone-mode достаточно для текущего fleet'а из 1 юзера + новой машины). Реализуется параллельно после v0 production-deploy.
- **Q9 — переименование `claude-skills` → `.skills`** (deferred): репо `claude-skills` стилистически выпадает из dotfile-конвенции флота (`.common/`, `.organization/`, `.meeting-room/`, `.templates/`, `.wiki/`, `.tasks/`) и фиксирует в имени один движок, хотя `superpowers:using-superpowers` уже ссылается на Copilot CLI / Codex / Gemini tool mappings. Озвучено пользователем 2026-05-06 во время field-test'а, явно «но позже».
- **Scope переименования:** только git-имя репо в gitea + cloned dir name. Local runtime path `~/.claude/skills/` остаётся (hardcoded в Claude Code). Frontmatter скилов с Claude-specific tool names не трогается — `references/copilot-tools.md` / `codex-tools.md` уже покрывают cross-platform.
- **Когда поднимать:** (a) при дизайне `factory.yaml` v0.2 / `templates/enterprise/<repo>/` — естественный момент менять имена; (b) при общем рефакторинге фикстур-репо. Не блокирует v0.
## v0 plan — live bootstrap нового ноута как field-test
Stop-condition этого подхода: **не сидеть в чистом дизайне до победного — у пользователя есть свежая машина, на ней проверяем дизайн руками**.
@@ -190,21 +194,43 @@ Stop-condition этого подхода: **не сидеть в чистом д
- Diff между "что я сделал руками" и "что должен делать L0 скрипт" — readme-черновик `.factory/L0/README.md`.
- Список найденных gaps (что не получилось / что было неочевидно) — кандидаты в Q-список.
## Действия после промоушена
## Field-test results — 2026-05-06
End-to-end на новом Win11 ноуте отработал. Полный лог — `.factory/L0/install-log.md` (`git.kzntsv.site/OpeItcLoc03/factory`).
| Шаг | Что | Статус |
|---|---|---|
| L0a | mise + системный pkg-mgr (winget) | ✅ first-pass |
| L0b | clone `factory`, инициализация `~/.config/factory/home.toml` | ✅ |
| 11a | clone `claude-skills`, 21 скил доступен через `Skill` тул | ✅ |
| 11b | `claude login` + плагины `superpowers@claude-plugins-official` + `context7@claude-plugins-official` | ✅ (manual, browser-redirect) |
| 11c.1 | `setup-interns` — MCP-сервер, секреты в `.common/secrets/interns.env` | ✅ |
| 11c.2 | `setup-projects-meta` — repo + wiki clone + MCP entry + initial sync | ✅ idempotent re-run (всё уже было — скил детектил наличие и пошёл по path «update + verify») |
| 11c.3 | context7 sanity (`resolve-library-id "react"` → 5 matches) | ✅ |
| Фикстуры | `.organization/`, `.templates/`, `.meeting-room/` склонированы | ✅ |
**Что подтвердилось:**
1. **Q1 решение (Go для L1) валидно** — текущий L0 на mise+winget хорошо ложится в манифест, runtime-зависимостей сверху не нужно.
2. **Q6 решение (mise поверх системного pkg-mgr)** — отработало без сюрпризов. Mise успешно поставил node/python.
3. **`setup-projects-meta` idempotency-логика** — корректно различил «fresh install» vs «update+verify». В bootstrap.ps1 повторить эту же pre-check логику.
4. **Plugin-route для context7** — правильное решение (legacy `setup-context7` скил не запускался, конфликта нет).
**Gap'ы / кандидаты для bootstrap-скрипта** (полный список — в `install-log.md` секция «Gaps / questions surfaced during field-test»):
- 11b принципиально не автоматизируется (требует браузер-redirect / device-code) — bootstrap.ps1 должен **парковаться** здесь и ждать пользователя.
- Порядок 11c-скилов критичен: `interns``projects-meta` → плагины (или их sanity) → фикстуры. Это контракт скрипта, не выбор пользователя.
- Каждый setup-* скил уже идемпотентен — bootstrap может звать их без проверки «надо ли». Но pre-check блок самого скрипта (есть ли git, mise, claude, плагины) обязан быть.
## Действия после промоушена (план)
1. `meeting-room-promote-brainstorm factory-bootstrap`
- shared wiki: `concepts/factory-bootstrap` (целевой проект — `_meta` или новый `factory`)
- `claude-skills/.tasks/`: `factory-bootstrap-design` (status=ready, next_action="ответить на Q1Q5, прототипировать L0")
- `.archive/2026-05-06-factory-bootstrap.md`
## Resume point — 2026-05-06 (перерыв)
Field-test на новом Win11 ноуте идёт. Полный пошаговый лог + текущее состояние шагов — в `.factory/L0/install-log.md` (запушено в `git.kzntsv.site/OpeItcLoc03/factory`).
Краткий summary: L0a (toolchain) ✅, L0b (factory clone + home.toml) ✅, 11a (claude-skills + 21 skill) ✅. Юзер в перерыв сам прогоняет 11b (claude login + плагины superpowers/context7). После возвращения — 11c (setup-* скилы по очереди).
Основной артефакт field-test'а: список **gap'ов для bootstrap.ps1**, накапливающийся в install-log.md в секции "Gaps / questions surfaced during field-test". Когда field-test завершится — этот список напрямую конвертируется в скрипт.
- shared wiki в проекте `factory`: `concepts/factory-bootstrap` (полный дизайн + Q1/Q6/Q8 решения + Q9 deferred + field-test results).
- tasks в `factory/.tasks/`:
- `factory-bootstrap-script` — status=ready, next_action: «извлечь шаги из install-log.md в `bootstrap.ps1` + `bootstrap.sh`, переиспользовать idempotency-pattern из setup-projects-meta».
- `factory-l1-design` — status=blocked-by `factory-bootstrap-script`, next_action: «после успешного скрипта — Go-бинарь + factory.yaml schema (см. Q2/Q4)».
- архив: `.archive/2026-05-06-factory-bootstrap.md`.
## Stop-condition этого буфера
Дизайн доводится до состояния, где открытые вопросы Q1Q5 закрыты. После — promote и переход в плановую фазу (L0 → L1 → manifest → миграция существующих setup-* в L2-делегирование).
**Достигнут 2026-05-06.** Q1, Q6, Q8 закрыты; Q2Q5 явно отложены за v0 (живут в shared wiki после промоушена); Q7, Q9 deferred. Field-test end-to-end успешен. Готов к промоушену.

View File

@@ -21,3 +21,7 @@ Events: `started`, `promoted`, `registered`, `archived`.
2026-05-05 designed interns-repo-read (.brainstorm/repo-read.md — domain spec, target promote: claude-skills, parent: interns)
2026-05-05 promoted interns-repo-read → claude-skills/.wiki/concepts/interns-repo-read-design.md (commits 34001022+b7943a3c+93a45007); tasks created: common#interns-repo-read-impl (ready), claude-skills#interns-repo-read-skill-updates (ready)
2026-05-05 archived interns-repo-read → .archive/2026-05-05-repo-read.md
2026-05-06 designed factory-bootstrap (.brainstorm/factory-bootstrap.md — domain spec, target promote: factory; field-test on Win11 laptop)
2026-05-06 bootstrapped factory project (.tasks/STATUS.md + .wiki/ canonical layout, commit ecddcdf — fixed projects-meta sync indexing prerequisite)
2026-05-06 promoted factory-bootstrap → factory/.wiki/concepts/factory-bootstrap.md (commits 549fe2ea+d26da137+b79be591); tasks created: factory#factory-bootstrap-script (ready), factory#factory-l1-design (blocked-by factory-bootstrap-script); also claude-skills#project-creation-lifecycle-skill (ready, gap surfaced during this promote)
2026-05-06 archived factory-bootstrap → .archive/2026-05-06-factory-bootstrap.md