# Требования к данным — ORCH-067 ## Изменения схемы БД: НЕТ `STAGE_TRANSITIONS`, таблицы и колонки `tasks`/`agent_runs` **не меняются**. Это жёсткое ограничение TZ §6 и предпосылка ADR-001 (запрет колонки-флага для веток статуса). ## Читаемые колонки `tasks` (существующие) | Колонка | Использование в ORCH-067 | |---|---| | `id` | Ключ задачи. | | `work_item_id` | Текст номера (`ORCH-NNN`) + ключ резолва в `link_for`. | | `title` | Заголовок карточки (`html.escape`). | | `stage` | Offline-маппинг Plane-статуса (ADR-001 Р-1, слой 1). | | `brd_review_started_at`, `brd_review_ended_at` | Различение `Analysis` ↔ `⏸️ In Review` (offline, без сети). | | `repo` | Резолв `project_id` (`get_project_by_repo`) для ссылки и live-overlay. | | `plane_issue_id` (UUID) | `issue_id` в URL Plane + аргумент `fetch_issue_state` (live-overlay). | | `created_at`, `updated_at` | Тоталы времени в done-строке (без изменений). | `render_task_tracker` **расширяет существующий `SELECT`** по `tasks`, добавляя `repo` и `plane_issue_id` к уже выбираемым полям. Схему это не трогает — колонки уже есть. ## Кэш в памяти (не БД) Per-issue TTL-кэш live-статуса (ключ `plane_issue_id`, TTL `tracker_live_status_ttl_s=60`, ADR-001 Р-3) — **in-memory**, по образцу `_STATES_CACHE` в `plane_sync.py`. Не персистится, переживание рестарта не требуется (best-effort индикация). Очистка при рестарте — допустима. ## Источник имён статусов Имена и логические ключи статусов берутся из существующих структур `src/plane_sync.py` (`_PLANE_NAME_TO_KEY`, `get_project_states`, `_DEFAULT_STATES`), вводимых ORCH-066. Новых статусов/ключей ORCH-067 **не добавляет**.