mirror of
https://gitverse.ru/kpa39l/gotosocial.git
synced 2026-09-29 09:55:10 +00:00
4.3 KiB
4.3 KiB
gotosocial/project-governance Specification
Purpose
Определить обязательный процесс управления изменениями проекта: любое изменение (код, конфигурация, документация, статусы) проводится только через OpenSpec-воркфлоу. Введено по явному распоряжению владельца 2026-09-13.
Requirements
Requirement: OpenSpec-воркфлоу обязателен для всех изменений
- MUST: Каждое изменение проекта оформляется как openspec-change
(
openspec new change '<name>') с артефактами proposal → specs (delta) → design → tasks, в соответствии со schemaspec-driven. - MUST: Реализация выполняется по задачам из
tasks.md; каждая задача — с реальной верификацией (команда/тест/наблюдаемое поведение), подтверждение «сделано» без проверки не принимается. - MUST: После реализации change архивируется
(
openspec archive '<name>' --yes), delta вливается вopenspec/specs/<capability>/; итог валиден (openspec validate). - MUST NOT: Прямое редактирование файлов проекта (docker-compose.yml, config.yaml, код, системные юниты, README/STATUS/TODO, openspec/specs) без openspec-change.
Scenario: Прямая правка запрещена
- GIVEN владелец дал задачу на изменение (например, «добавь правило в файлы»)
- WHEN агент хочет править файл напрямую, без openspec-change
- THEN действие отклоняется: сначала создаётся openspec-change, задачи применяются, change архивируется
Scenario: Изменение через воркфлоу допустимо
- GIVEN изменение проекта (код или конфиг)
- WHEN создан openspec-change, задачи выполнены и верифицированы,
change заархивирован,
openspec validateпроходит - THEN изменение считается легитимным и коммитится
(
feat/fix(...): ...; openspec: <change-name>)
Requirement: Источники правила для агентов и людей
- MUST: Правило зафиксировано в
AGENTS.md(корень проекта) — файл авто-подхватывается агентами (Hermes/Claude) при работе в проекте. - MUST: Правило включено в
openspec/config.yaml(context) — оно инжектится в каждый артефакт openspec. - SHOULD: Правило продублировано в
README.md(видно человеку при первом знакомстве с проектом).
Scenario: Агент видит правило
- GIVEN агент работает в /opt/gotosocial
- WHEN он открывает сессию
- THEN в
AGENTS.mdон находит «ЖЁСТКОЕ ТРЕБОВАНИЕ: все изменения — через OpenSpec» с запретами и исключениями
Requirement: Исключение только по команде владельца
- MAY: Прямое изменение допускается только после явной команды владельца («сделай в обход openspec», подтверждение на прямой фикс).
- MUST: Исключение фиксируется в коммит-сообщении (например,
bypass-openspec: <причина>), чтобы оставаться аудируемым.
Scenario: Явный обход
- GIVEN владелец сказал «сделай напрямую, без openspec»
- WHEN агент вносит изменение
- THEN изменение допустимо, но помечается в коммите
(
bypass-openspec: <причина>)