Andrey Epifancev 41a208da80 chore(openspec): Purpose спеки modules (#87)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 23:42:43 +04:00

2.7 KiB
Raw Blame History

modules Specification

Purpose

Устройство хаба из ядра и подключаемых модулей (первый — jira): что принадлежит ядру, как модуль подключается описанием, проверка пересечений при старте и единая схема базы.

Requirements

Requirement: Ядро и модули хаба

Хаб SHALL состоять из ядра и подключаемых модулей. Ядро SHALL владеть базой и миграциями, настройками хаба, проектами (метка, название), хранилищем файлов, реле общей папки, релизом агента, очередью пакетов команд, HTTP-сервером с авторизацией, раздачей веб-приложения и общим слоем MCP. Модуль SHALL подключаться к ядру описанием: таблицы, типы команд и их обработчики в очереди, маршруты HTTP, ключи настроек, фоновые работы, инструменты MCP, подкоманды CLI. Первый модуль — jira (зеркало задач, журнал изменений, вложения, команды Jira). Ядро MUST NOT импортировать модули, кроме списка подключённых модулей и истории миграций схемы.

При старте хаб SHALL проверять, что типы команд, ключи настроек и маршруты (метод и шаблон адреса) ядра и модулей не пересекаются; пересечение — ошибка старта с указанием конфликта.

Схема базы SHALL оставаться одной, с одной версией setting.schema_version на весь хаб; таблицы модуля входят в неё.

Scenario: Конфликт типов команд

  • WHEN два подключённых модуля объявляют тип команды refresh
  • THEN хаб не стартует, ошибка называет тип и оба модуля

Scenario: Поведение без изменений

  • WHEN хаб после перестройки стартует на базе v6 с агентом v14
  • THEN схема остаётся v6, копия базы не создаётся; адреса API, веба, ответы и инструменты MCP — прежние; агент берёт команды и отчитывается как раньше