Files

34 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PRD — OpenSpec Lab
## Цель (обновлено 2026-09-11)
Внедрить spec-driven подход (OpenSpec) для задач настройки инфраструктуры Hermes/homelab.
**Лаба выполнила свою роль:** цикл «спека → реализация → проверка → архив» отработан и
**разнесён по проектам** — каждый проект имеет собственный `openspec/` + скиллы per-project.
Лаба закрыта как рабочий каталог, остаётся как история/песочница.
## Пользователи
- Владелец homelab / Hermes-агент (автономная работа по задачам).
## Функциональные требования
- FR1: Цикл propose → apply → archive работает через CLI openspec **в каждом проекте**.
- FR2: Hermes-скиллы openspec-* подключены per-project (skills.external_dirs → 7 каталогов .hermes/skills/).
- FR3: Каждый проект имеет config.yaml с контекстом СВОЕЙ системы (пути, сервисы, правила).
- FR4: Изменения фиксируются как change-артефакты (proposal/specs/design/tasks) в openspec/ проекта.
- FR5: Архив сливает delta в main specs проекта (`openspec/specs/<capability>/spec.md`).
## Нефункциональные требования
- NFR1: Всё в /opt/hermes (единый каталог; .hermes — симлинк на /opt/hermes/.hermes).
- NFR2: Изменения системы — только инфраструктурные (systemd, docker), с rollback-инструкцией в design.md.
- NFR3: Лаба не используется для новых changes (закрыта).
- NFR4: Токены/PAT хранятся в obsidian-vault, не в git.
## Границы (что НЕ делаем)
- Не переписываем Hermes/его плагины под OpenSpec.
- Не создаём «общей кучи» изменений — каждая спека живёт в своём проекте.
- Не создаём новых облачных зависимостей (локальный экстрактор — приоритет).
## Критерии готовности
- G1: ✅ Полный цикл отработан на реальных задачах (архивированы, delta в main specs).
- G2: ✅ OpenSpec разнесён по 7 проектам (4 — перенесены и запушены 2026-09-11; vesti/dedinit/gotosocial — были).
- G3: ✅ Лаба задекларирована закрытой (README/STATUS/WALKTHROUGH обновлены, запушены).
- G4: ⏳ Tavily/local-extractor (инструменты Hermes) — решить размещение (`/opt/hermes/openspec/` или история лабы).