From 32cc965f8413c819aa0ad7bf0cb79654bd54b287 Mon Sep 17 00:00:00 2001 From: claude-bot Date: Tue, 9 Jun 2026 09:59:36 +0300 Subject: [PATCH] reviewer(ET): auto-commit from reviewer run_id=432 --- docs/work-items/ORCH-087/12-review.md | 72 +++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 docs/work-items/ORCH-087/12-review.md diff --git a/docs/work-items/ORCH-087/12-review.md b/docs/work-items/ORCH-087/12-review.md new file mode 100644 index 0000000..20aa34b --- /dev/null +++ b/docs/work-items/ORCH-087/12-review.md @@ -0,0 +1,72 @@ +--- +type: review +work_item_id: ORCH-087 +verdict: APPROVED +version: 1 +--- + +# Review ORCH-087 + +## Summary +Задача закрывает три проблемы live-трекера: (G1) осиротевшие «замёрзшие» карточки, +(BR-EFF) эффорт в строке стадии, (BR-G5) честное итоговое время, плюс попутный CI-фикс +пути per-run логов. Реализация соответствует ТЗ, ADR-001 и критериям приёмки. Все 1090 +тестов зелёные. Документация (CLAUDE.md, README.md, docs/architecture/README.md, +CHANGELOG.md, ADR) обновлена в том же PR. Машина стадий и реестр QG не тронуты; миграции +аддитивны/идемпотентны; never-raise сохранён. Найдена одна косметика P3 (неточный +inline-комментарий), не влияющая на поведение. Блокеров нет. + +## Соответствие ТЗ / ADR + +- **G1 (BR-G1, AC-1.x):** аддитивный леджер `tracker_messages(task_id, message_id, + created_at, deleted_at)` + хелперы `add_tracker_message` / `get_open_tracker_messages` / + `mark_tracker_message_deleted` (`src/db.py`). На каждом bump зачищаются ВСЕ незакрытые + mid (union скаляр+леджер). Контракт `delete_telegram` (True=gone вкл. `_DELETE_GONE_MARKERS`, + False=transient) совпадает с логикой `if delete_telegram(old): mark_deleted(...)`; + transient остаётся открытым для ретрая. Новый mid в леджер ТОЛЬКО при `send is not None` + (R-3/BR-6). Скаляр `tracker_message_id` сохранён (BC). ✔ соответствует ADR §G1 (вариант A1). +- **G3 (AC-3.x):** ключ `confirm_deploy` добавлен в `_LIVE_BRANCH_LABELS` — цикл + `Awaiting Deploy → Deploying → Confirm Deploy → Monitoring → Done` полон. ✔ +- **BR-EFF (AC-E.x):** колонка `agent_runs.effort TEXT` (`_ensure_column`, идемпотентно); + стамп фактического `resolve_agent_effort` в `launcher._spawn` через `UPDATE` по `run_id` + (never-block, обёрнут try/except); рендер `· {model} · {effort}`, пустой → опускается. ✔ +- **BR-G5 (AC-5.x):** done-строка переписана на три подписанных метрики + `⏱️ Агенты · твоё{~cap} · общее с ожиданием`; кап `tracker_brd_review_cap_s` (дефолт 2ч, + маркер `~`); `_capped_review_str` never-raise; agent-сумма не регрессировала. ✔ +- **BR-G6 (AC-6.x):** `src/reconciler.py` / `tests/test_reconciler.py` НЕ тронуты; + `git merge-base --is-ancestor origin/main HEAD` → true; origin/main содержит merge ORCH-086; + маркеры ORCH-086 (`skipped_terminal_total`/`state_uuid`/terminal) на месте. ✔ +- **Инварианты (AC-X.5):** `STAGE_TRANSITIONS` / `QG_CHECKS` без изменений; миграции + `CREATE TABLE/INDEX IF NOT EXISTS` + `_ensure_column` — аддитивны/идемпотентны (enduro не + трогается); `disable_notification` / `plane_issue_link` / `disable_web_page_preview` — + сохранены. ✔ +- **ADR (AC-0.x):** ADR-001 отвечает на 4 вопроса §4 BRD, содержит таблицу staging- + воспроизведения и known-limitation Telegram 48ч (AC-1.4). Код фикса соответствует ADR. ✔ + +## Findings + +### P0 — Blocker +- (нет) + +### P1 — Must fix +- (нет) + +### P2 — Should fix +- (нет) + +### P3 — Nice to have +- [ ] `src/notifications.py` (~стр. 460, докстринг блока рендера эффорта): комментарий + утверждает «Historical rows with NULL effort fall back to the config-resolved effort for + the agent», но `_run_effort` фолбэка на `resolve_agent_effort` НЕ делает — при пустом/NULL + effort возвращает `""` и суффикс опускается. Поведение корректно и соответствует AC-E.4 + (fallback по ТЗ §5 был «Допустим», не обязателен); неточен лишь комментарий — стоит убрать + вводящую в заблуждение фразу или реально добавить фолбэк. Не влияет на работу. + +## Документация +Обновлена в ТОМ ЖЕ PR (AC-X.3 выполнен): +- `CLAUDE.md` — §Нотификации/Telegram live-tracker (зачистка сирот, эффорт, честное время). +- `docs/architecture/README.md` — компонент Notifications + отдельный раздел ORCH-087. +- `README.md` — таблица env (`ORCH_RUNS_DIR`). +- `CHANGELOG.md` — `## [Unreleased]` запись (ORCH-087 трекер + CI-фикс пути логов). +- ADR `06-adr/ADR-001-tracker-orphan-cleanup.md` — присутствует, покрывает G0/механизм/формулу. +Замечаний по документации нет.