4.2 KiB
4.2 KiB
10 — Технические риски — ORCH-087
| # | Риск | Вероятность / Влияние | Митигация |
|---|---|---|---|
| R1 | Сироты старше 48ч неудаляемы (Telegram: message can't be deleted) — остаются в чате навсегда |
Сред / Низ (косметика) | Помечаем deleted=1 (_DELETE_GONE_MARKERS), зачистка не зацикливается; новый код не порождает таких сирот (sweep на каждом апдейте ≪ 48ч). Документировано (AC-6). Старые накопленные — вне автоматики. |
| R2 | Rate-limit / 429 при массовой зачистке накопленных сирот | Низ / Низ | delete_telegram → False (transient) → запись остаётся deleted=0, повтор позже. Один best-effort delete на запись за проход; зачистка растягивается, не падает. |
| R3 | Гонка не исключается (нет замка) — кратко возможны 2 карточки между параллельными апдейтами | Сред / Низ | Реестр делает гонку самозалечивающейся: sweep следующего тика подчистит лишнее (всё ≠ keep). Замок намеренно не вводим — лок в never-raise слое опаснее редкой лишней карточки (риск дедлока при max_concurrency=1). |
| R4 | Регрессия миграции на общей прод-БД (enduro-trails) | Низ / Выс | Строго аддитивно: CREATE TABLE IF NOT EXISTS + _ensure_column (no-op если есть); логический FK без REFERENCES. Idempotent init_db. Покрыто TC-09. |
| R5 | never-raise нарушен новым sweep/реестром → падение валит конвейер | Низ / Выс | Все helper'ы и sweep_orphans обёрнуты как соседи; update_task_tracker целиком в try/except (AC-5, TC-05). Запись эффорта в _spawn не валит launcher. |
| R6 | Эффорт-стамп врёт (пересчёт на рендере расходится с CLI при смене конфига) | Сред / Низ | Источник — РОВНО строка effort, ушедшая в --effort (стамп в _spawn), не resolve_agent_effort на рендере (AC-8). |
| R7 | Порядок в _spawn: INSERT agent_runs (стр.~449) идёт ДО резолва effort (стр.~475) |
Сред / Низ | Реализовать UPDATE agent_runs SET effort=? WHERE id=run_id после резолва, либо перенести INSERT ниже резолва. Зафиксировано в ADR-001 §G4.2. |
| R8 | Дыра покрытия deploy-цикла (G3): ветка статуса не отрисована | Низ / Низ | Тесты TC-07/TC-08 проверяют offline-лейблы (deploy/done) и overlay-маппинг (deploying/monitoring); дыра закрывается в _STAGE_STATUS_LABEL/_LIVE_BRANCH_LABELS без изменения ORCH-066. |
| R9 | Рост tracker_messages (~N строк/задача) |
Низ / Низ | Незначительно для SQLite; опц. фоновая обрезка deleted=1 старше X дней — вне скоупа ORCH-087. |
Принятые архитектурные ограничения
- Замок на
update_task_trackerне вводится (R3) — сходимость через реестр предпочтительнее потокового лока в never-raise слое. - Дефолтный режим остаётся
bump(фича ORCH-042/067 сохранена);editдоступен через env. - Изменения замкнуты в компоненте Notifications + аддитивная схема —
STAGE_TRANSITIONS,QG_CHECKS, статусная модель ORCH-066,plane_sync-ключи не трогаются. Глобальный ADR не нужен.