Andrey Epifancev 06ef35a013 OpenSpec: change fact-status-removal (#104)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 16:37:54 +04:00

2.8 KiB
Raw Blame History

MODIFIED Requirements

Requirement: Агенты модулей

У каждого подключённого модуля, объявляющего типы команд, SHALL быть свой агент; имя агента — имя модуля (jira — jira-agent, wiki — eva-agent). Агент SHALL определяться по токену: setting.tokens = {client, agents: {<модуль>: <токен>}}, недостающий токен агента хаб создаёт при старте. Хаб SHALL для каждого агента отдельно:

  • выдавать в claim только команды типов его модуля, с одной командой в полёте на агента (агенты работают параллельно);
  • хранить строку agent_status (ключ — имя агента);
  • держать опубликованный релиз release/<модуль>/ и состояние самообновления;
  • отдавать в GET /agent/settings ключи ядра и ключи для агента только своего модуля;
  • пускать на маршруты модуля со scope agent только агента этого модуля (токен другого агента — 401).

Миграция v7 SHALL сохранить прежний агентский токен как токен агента jira, перенести строку agent_status в агента jira и прежнюю публикацию release/agent.py в release/jira/. jira-agent v14 SHALL работать без обновления.

Scenario: jira-agent после выкатки

  • WHEN хаб v6 с агентским токеном T и публикацией v14 обновлён до v7, jira-agent v14 шлёт claim с токеном T
  • THEN 200; ответ содержит agent_release {version: 14, …}; GET /agent показывает агента jira с версией 14

Scenario: Агенты не берут чужие команды

  • WHEN в очереди пакет 1 с ensure_issue и пакет 2 с wiki_sync, оба queued; агент wiki шлёт claim
  • THEN выдан wiki_sync; следующий claim агента jira получает ensure_issue, хотя wiki_sync ещё claimed

Scenario: Чужой маршрут агента

  • WHEN токеном агента wiki вызван POST /agent/state
  • THEN 401, зеркало не меняется

Scenario: Настройки только своего модуля

  • WHEN токеном агента wiki вызван GET /agent/settings
  • THEN в ответе есть wiki_pacing и settings_version, ключей jira (project_key, link_types) нет