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

4.2 KiB
Raw Blame History

Why

«Статус по факту» (issue_note.fact_status) пришёл из CSV-пакета admin/jira-sync: владелец вёл его руками рядом со статусом Jira, а jira_sync.py переводил задачи в Jira по таблице transitions.map, ключом которой был этот статус. Владелец 17.10.2026 (brainstorming #57) решил, что поле — шум, и его нужно убрать совсем. Первым шагом (#57, PR #58) поле убрали из веб-приложения; в базе, API, MCP, настройках и импорте оно осталось (#60).

Хаб статус по факту не использует ни для чего, кроме хранения и показа: агент ensure_status получает путь статусов в самой команде и transitions_map/status_labels не читает; потребители MCP (awp-ca, stocks_drrk, sfm_foxpro) поле не упоминают. Владелец 24.10.2026: сохранённые значения удалить безвозвратно (#104).

What Changes

  • База, схема v8: миграция v7 → v8 удаляет колонку issue_note.fact_status и ключи status_labels, transitions_map из setting, поднимает settings_version; копия базы — в backups/ по общему правилу.
  • Настройки: status_labels и transitions_map уходят из умолчаний модуля jira и из ключей для агента; sdlc-hub init --config их не переносит.
  • API: GET /issues без фильтра и поля fact_status (параметр игнорируется, как любой неизвестный); GET /board без fact_status; PUT /issues/{key}/note с fact_status — 422 «неизвестные поля заметки».
  • MCP sdlc-jira: issues — без колонки «статус по факту» и параметра fact_status; notes_set — без параметра fact_status; issue не выводит его в заметках.
  • Импорт sdlc-hub import пропускает колонку «Статус по факту» CSV.
  • Веб: из типов (Note, BoardIssue) и фикстур уходят fact_status и status_labels; поведение страниц не меняется.
  • Спеки и документация: data-model, hub-api, mcp, migration, modules, web-app, README, ARCHITECTURE.md. В data-model исправляется отставание: «текущая — 6» при коде v7.

Non-Goals

  • jira-agent: изменений не нужно, design-only change в агенте не заводится.
  • kind_labels, work_kind и прочие заметки — остаются.
  • Пункты M-3, M-4, M-5 из #60 (они про «скрыть закрытые», не про статус по факту) — остаются в #60.
  • Спринты и бэклог модуля jira — следующий change.

Anti-Goals

  • Потеря других данных заметок (work_kind, done_text, rest_text, owner_note, updated_at, updated_by) при миграции.
  • Хаб, который после миграции снова создаёт status_labels/transitions_map (умолчания) или отдаёт их агенту.
  • Падение хаба на базе v7 при старте: миграция должна пройти на живой базе без ручных шагов.

Impact

  • Код: src/sdlc_hub/core/db.py (v8), src/sdlc_hub/modules/jira/{schema,settings,mirror,api,mcp,importer}.py, web/src/modules/jira/** (типы, фикстуры), тесты и эталоны tests/fixtures/baseline/*.
  • Выкатка: kickstart хаба владельцем (миграция при старте), /mcp → reconnect в сессиях с sdlc-jira, make web (типы веба).
  • Закрывает пункт «Статус по факту — удалить совсем» в #60; issue #60 остаётся открытой (M-3, M-4, M-5).