Files
gotosocial/openspec/specs/gotosocial/project-governance/spec.md
T

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, в соответствии со schema spec-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: <причина>)