docs: лаба закрыта как рабочий каталог — OpenSpec разнесён по проектам

This commit is contained in:
estorozhenko
2026-09-11 17:36:46 +00:00
parent b047e3a21d
commit be0c195722
2 changed files with 68 additions and 89 deletions
+38 -50
View File
@@ -1,67 +1,55 @@
# OpenSpec Lab — spec-driven для инфраструктуры
# OpenSpec Lab — песочница (устаревшая роль)
> **Статус: 2026-09-11 — лаба ЗАКРЫТА как рабочий каталог.**
> OpenSpec теперь живёт **в каждом проекте** (`/opt/<project>/openspec/`).
> Этот каталог остаётся как история/песочница и не используется для новых changes.
## Зачем была
Песочница OpenSpec (Fission-AI, CLI 1.12.0) для практики spec-driven development
на задачах настройки инфраструктуры Hermes и homelab.
## Зачем
## Новая модель (per-project)
OpenSpec даёт формальный цикл «согласовали ЧТО → делаем КАК → проверяем → архивируем»:
Каждый проект имеет собственный `openspec/` + `.hermes/skills/openspec-*`:
1. `proposal.md` — зачем менять
2. `specs/<cap>/spec.md` — дельта требований (ADDED/MODIFIED/REMOVED) с GIVEN/WHEN/THEN
3. `design.md` — как именно (файлы, команды, rollback, риски)
4. `tasks.md` — чеклист применения
| Проект | Что описано |
|---|---|
| `/opt/hermes/email-assistant` | email storage, calendar/vikunja (активный change) |
| `/opt/monitoring` | grafana access, vinograd monitoring |
| `/opt/infrastructure` | tunnel-proxy (SOCKS5) |
| `/opt/icq` | prosody/icq services (активный change) |
| `/opt/vesti`, `/opt/dedinit.ru`, `/opt/gotosocial` | свои проекты |
После `openspec archive` дельта вливается в `openspec/specs/` (источник истины), а
change уходит в `openspec/changes/archive/` с датой.
## Команды
```bash
# Новый change
openspec new change "short-name"
# Статус / валидация
openspec status --change short-name
openspec validate short-name
# Завершение
openspec archive short-name --yes
```
## Hermes-скиллы
`openspec init --tools hermes` сгенерировал скиллы в `.hermes/skills/openspec-*`.
В `~/.hermes/config.yaml` (Hermes-профиль) подключены через:
Скиллы подключены через `~/.hermes/config.yaml`:
```yaml
skills:
external_dirs:
- /opt/hermes/openspec-lab/.hermes/skills
- /opt/hermes/email-assistant/.hermes/skills
- /opt/monitoring/.hermes/skills
- /opt/infrastructure/.hermes/skills
- /opt/icq/.hermes/skills
- /opt/vesti/.hermes/skills
- /opt/gotosocial/.hermes/skills
- /opt/dedinit.ru/.hermes/skills
```
## Реальные changes
## Команды (в каждом проекте)
| Change | Статус | Что |
|---|---|---|
| `add-vpn-tunnel-proxy` | заархивирован | Спека постоянного SOCKS5-туннеля до VPS01 |
| `tavily-proxy-setup` | заархивирован | Tavily extract через локальный прокси (гео-обход), e2e работает |
| `local-extractor` | открыт (4/4 артефакта, тесты сетевые отложены) | Локальная экстракция trafilatura, Tavily-совместимый интерфейс |
```bash
cd /opt/<project>
openspec new change "short-name" # новый change
openspec status --change short-name # артефакты
openspec validate <name> # проверка
openspec archive <name> --yes # слияние в openspec/specs/ + архив
```
## Архив
- Перенесённые changes живут в `openspec/changes/archive/` каждого проекта.
- Старые изменения лабы (исторические) сохранены в git-истории этого репозитория.
## Git / gitverse
Источник истины — gitverse.ru (зеркало gitea на bigbox).
```bash
git remote -v # origin → https://estorozhenko:<TOKEN>@gitverse.ru/estorozhenko/openspec-lab.git
# Создать репозиторий на gitverse (UI/API), затем:
git push -u origin main
```
Токен (PAT) хранится в obsidian: `homelab/gitverse.ru.md` и
`homelab/gitea.nixg.ru/Токен для gitverse.ru.md`.
## Стек (окружение bigbox)
- OpenSpec CLI: `npm install -g @fission-ai/openspec` (node 22)
- Hermes-профиль: `/opt/hermes/.hermes`
- Прокси-скрипты: `/opt/hermes/.hermes/scripts/`
- Tavily-прокси: systemd `tavily-proxy.service` (порт 8971, через SOCKS5-туннель)
Источник истины — gitverse.ru (origin этого репо): https://gitverse.ru/kpa39l/openspec-lab.git