Files
factory/.wiki/concepts/infra-as-product.md

5.8 KiB
Raw Permalink Blame History

title, updated, source, type, ingested_at, ingested_by, source_project
title updated source type ingested_at ingested_by source_project
Factory — инфраструктура как продукт 2026-06-11 .workshop/.brainstorm/infra-as-product.md (rounds 1-5) concept 2026-06-11T07:29:08.884Z OpeItcLoc03@DESKTOP-NSEF0UK 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 как чеклист)