meta(wiki): ingest concepts/infra-as-product in OpeItcLoc03/factory
This commit is contained in:
109
.wiki/concepts/infra-as-product.md
Normal file
109
.wiki/concepts/infra-as-product.md
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
---
|
||||||
|
title: Factory — инфраструктура как продукт
|
||||||
|
updated: '2026-06-11'
|
||||||
|
source: .workshop/.brainstorm/infra-as-product.md (rounds 1-5)
|
||||||
|
type: concept
|
||||||
|
ingested_at: '2026-06-11T07:29:08.884Z'
|
||||||
|
ingested_by: OpeItcLoc03@DESKTOP-NSEF0UK
|
||||||
|
source_project: OpeItcLoc03/workshop
|
||||||
|
---
|
||||||
|
## Контекст
|
||||||
|
|
||||||
|
Factory — дистрибутив инфраструктуры OpeItcLoc03 для внешних пользователей. Первый потребитель — Алексей (собственный Gitea). Цель: отделить разработку инфраструктуры от её эксплуатации через машинную границу.
|
||||||
|
|
||||||
|
## Рамка: «ОС для AI-native цеха»
|
||||||
|
|
||||||
|
Наша инфраструктура — не набор утилит, а операционная система для AI-native цеха. Шесть слоёв:
|
||||||
|
|
||||||
|
| Слой | Компонент | Статус |
|
||||||
|
|---|---|---|
|
||||||
|
| 1 Физический | VDS + NAS | 🟢 |
|
||||||
|
| 2 Control plane | projects-meta-mcp | 🟢 (Gitea-coupled) |
|
||||||
|
| 3 Знание | wiki-graph, wiki-pattern | 🟢 доказано, контрарианское |
|
||||||
|
| 4 Рабочая сила | interns 🟢 · coworkers 🔵 | 🟡 |
|
||||||
|
| 5 Оркестрация | agents-task-runner v0.6.1 | 🟢 spawn-баг починен |
|
||||||
|
| 6 Методология | claude-skills (31 скил) | 🟢 |
|
||||||
|
|
||||||
|
Дифференциатор — слой 3 (знание без RAG). Весь рынок болтает vector-DB; мы доказали что для курируемого корпуса linked-plaintext + graph-traversal бьёт RAG по recall и auditable.
|
||||||
|
|
||||||
|
## Factory v1 — архитектура дистрибутива
|
||||||
|
|
||||||
|
**Один публичный репо** на git.kzntsv.site (позже GitHub). Не flip видимости `.common`, не много отдельных репо — один курированный артефакт.
|
||||||
|
|
||||||
|
### Состав репо
|
||||||
|
|
||||||
|
```
|
||||||
|
factory/
|
||||||
|
├── bootstrap.ps1 ← L1 (Go-бинарь не нужен для v1)
|
||||||
|
├── factory.yaml ← манифест компонентов с версиями
|
||||||
|
├── lib/
|
||||||
|
│ ├── projects-meta-mcp/ ← источник (собирается bootstrap'ом)
|
||||||
|
│ ├── wiki-graph/
|
||||||
|
│ └── interns-mcp/
|
||||||
|
└── skills/ ← минимальный набор setup-*/using-*
|
||||||
|
```
|
||||||
|
|
||||||
|
### Конфигурация (два файла)
|
||||||
|
|
||||||
|
- `factory.yaml` — ЧТО ставить (компоненты, версии). Шипит с репо.
|
||||||
|
- `~/.config/factory/home.toml` — машинный конфиг (projects_dir, git_host). Генерится при установке.
|
||||||
|
- `~/.config/factory/secrets.toml` — все API-ключи единым файлом. Git-кредентиалы в GCM.
|
||||||
|
|
||||||
|
### Модульная система
|
||||||
|
|
||||||
|
Bootstrap спрашивает при установке какие модули включить:
|
||||||
|
|
||||||
|
- **Ядро (всегда):** `.factory` (инструменты) + skills + `~/.claude.json` с MCP-серверами
|
||||||
|
- **tasks** (опционально): projects-meta + per-project `.tasks/`
|
||||||
|
- **wiki** (опционально): общая `.wiki/` + per-project `.wiki/`
|
||||||
|
- **workshop** (опционально): boss-zone для дизайна
|
||||||
|
- **admin** (опционально): ops-зона
|
||||||
|
|
||||||
|
### Файловая структура у пользователя после установки
|
||||||
|
|
||||||
|
```
|
||||||
|
projects\
|
||||||
|
├── .factory\ ← tools (наш Gitea)
|
||||||
|
├── [.wiki\] ← опц.: общая вики (его Gitea, bootstrap создаёт)
|
||||||
|
├── [.workshop\] ← опц.: boss-zone
|
||||||
|
├── [.admin\] ← опц.: ops-зона
|
||||||
|
└── my-project\
|
||||||
|
├── [.tasks\]
|
||||||
|
└── [.wiki\]
|
||||||
|
|
||||||
|
~/.config/factory/
|
||||||
|
├── home.toml ← его git_host, projects_dir
|
||||||
|
└── secrets.toml ← его PAT, API-ключи
|
||||||
|
|
||||||
|
~/.claude/skills/ ← скопировано из .factory/skills/ bootstrap'ом
|
||||||
|
~/.claude.json ← mcpServers → .factory/lib/*
|
||||||
|
```
|
||||||
|
|
||||||
|
`.wiki/` — данные пользователя (его Gitea, его remote). Bootstrap создаёт wiki-репо на его Gitea и клонирует локально. **Не** является частью `.factory/`.
|
||||||
|
|
||||||
|
## Dev/prod разделение
|
||||||
|
|
||||||
|
- **Dev-машина:** работаем по живому в `.common`, принимаем боль, разрабатываем
|
||||||
|
- **Prod-машина (ноут):** ставим из factory, получаем чистый стабильный опыт
|
||||||
|
- Машинная граница = dev/prod граница — никакого двойного конфига на одной машине
|
||||||
|
|
||||||
|
`main` ветка публичного `factory` = всегда releasable. Dev-работа в приватном `.common` на ветках; в `factory` попадает только протестированное.
|
||||||
|
|
||||||
|
## Версионирование и обновления
|
||||||
|
|
||||||
|
Версия = git-тег factory-репо. Обновление:
|
||||||
|
```
|
||||||
|
git -C ~/.factory pull --ff-only
|
||||||
|
pwsh ~/.factory/bootstrap.ps1 --update
|
||||||
|
```
|
||||||
|
Скрипт идемпотентен. `home.toml` и `secrets.toml` при `--update` не трогаются никогда.
|
||||||
|
|
||||||
|
## Checklist до первого пользователя (Алексей)
|
||||||
|
|
||||||
|
1. Создать публичный репо `factory` на git.kzntsv.site
|
||||||
|
2. Перенести MCP-серверы из `.common/lib/` в `factory/lib/`
|
||||||
|
3. Перенести минимальный набор скилов в `factory/skills/`
|
||||||
|
4. Написать `factory.yaml`
|
||||||
|
5. Дописать `bootstrap.ps1` (закрыть gaps из `L0/install-log.md`)
|
||||||
|
6. Параметризовать git_host
|
||||||
|
7. Протестировать на ноуте (field-test 2026-05-06 как чеклист)
|
||||||
Reference in New Issue
Block a user