claude-bot
a7b27f2235
fix(notifications): tracker orphan cleanup + effort-in-line + honest done-time (ORCH-087)
Устраняет «замёрзшие» осиротевшие карточки live-трекера и доделывает строку
стадии/итоговое время.
G1 — зачистка сирот: аддитивный леджер tracker_messages(task_id, message_id,
created_at, deleted_at) + хелперы add/get_open/mark_deleted в src/db.py. bump
теперь удаляет ВСЕ незакрытые mid задачи (а не только скаляр
tasks.tracker_message_id, сохранён как BC-указатель). Новый mid в леджер только
при успешном send (BR-6); transient-delete остаётся для ретрая; «already
gone»/>48ч закрывается. Корень бага — скалярный учёт, терявший ссылку при
гонке/delete-fail+send-ok (ADR-001 G0).
G3 — deploy-цикл: ключ confirm_deploy в _LIVE_BRANCH_LABELS (без base-alias).
BR-EFF — эффорт в строке: колонка agent_runs.effort (_ensure_column,
идемпотентно), стамп фактического resolve_agent_effort в launcher._spawn в
момент запуска; рендер `· {model} · {effort}`, пустой → суффикс опускается.
BR-G5 — честное время: done-строка `⏱️ Агенты Σ · твоё {review~cap} · общее с
ожиданием {wall}` — три независимых подписанных метрики; кап
tracker_brd_review_cap_s (ORCH_TRACKER_BRD_REVIEW_CAP_S, дефолт 2ч, маркер ~).
Инварианты: STAGE_TRANSITIONS/QG_CHECKS/стадии без изменений; миграции
аддитивны/идемпотентны (enduro не трогается); never-raise,
disable_notification, plane_issue_link (ORCH-067), disable_web_page_preview
(ORCH-080) сохранены; src/reconciler.py не эродирован (ORCH-086 на месте).
Тесты: tests/test_notifications_orphans.py (TC-01..05 + never-raise),
tests/test_tracker_effort_time.py (TC-06/11..15 + confirm_deploy),
tests/test_launcher.py::TestEffortStamp (TC-09/10). Доки: CLAUDE.md
(§Нотификации), docs/architecture/README.md (Notifications), CHANGELOG.md.
Refs: ORCH-087
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 10:06:17 +03:00
..
2026-06-09 00:57:08 +03:00
2026-06-08 22:00:54 +03:00
2026-06-05 17:58:00 +00:00
2026-06-05 17:50:47 +03:00
2026-06-03 22:58:18 +03:00
2026-06-05 17:50:47 +03:00
2026-06-08 10:34:33 +00:00
2026-06-08 06:41:52 +00:00
2026-06-08 06:34:37 +00:00
2026-06-07 07:46:19 +00:00
2026-06-08 08:45:31 +00:00
2026-06-07 07:46:19 +00:00
2026-06-07 14:40:06 +00:00
2026-06-06 21:07:35 +00:00
2026-06-06 21:07:35 +00:00
2026-06-08 08:45:31 +00:00
2026-06-06 21:07:35 +00:00
2026-06-06 21:07:35 +00:00
2026-06-07 22:02:45 +00:00
2026-06-05 17:50:47 +03:00
2026-06-06 20:55:25 +00:00
2026-06-07 07:46:19 +00:00
2026-06-07 16:14:45 +00:00
2026-06-09 10:06:17 +03:00
2026-06-09 01:32:53 +03:00
2026-06-03 09:53:55 +03:00
2026-06-07 22:02:45 +00:00
2026-06-08 16:30:46 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 16:30:46 +03:00
2026-06-07 16:14:45 +00:00
2026-06-08 16:30:46 +03:00
2026-06-09 10:06:17 +03:00
2026-06-05 17:58:00 +00:00
2026-06-05 17:50:47 +03:00
2026-06-08 10:34:33 +00:00
2026-06-07 22:02:45 +00:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-08 19:17:44 +03:00
2026-06-09 02:26:49 +03:00
2026-06-06 15:02:33 +00:00
2026-06-08 16:30:46 +03:00
2026-06-08 16:30:46 +03:00
2026-06-08 16:30:46 +03:00
2026-06-08 16:30:46 +03:00
2026-06-08 16:30:46 +03:00
2026-06-08 16:30:46 +03:00
2026-06-09 00:57:08 +03:00
2026-06-09 00:57:08 +03:00
2026-06-03 22:42:53 +03:00
2026-06-03 10:53:25 +03:00
2026-06-08 06:41:52 +00:00
2026-06-08 10:34:33 +00:00
2026-06-08 05:18:46 +00:00
2026-06-07 19:20:41 +00:00
2026-06-07 22:02:45 +00:00
2026-06-08 06:41:52 +00:00
2026-06-07 22:02:45 +00:00
2026-06-07 22:02:45 +00:00
2026-06-07 22:02:45 +00:00
2026-06-07 14:40:06 +00:00
2026-06-05 17:50:47 +03:00
2026-06-08 11:24:01 +00:00
2026-06-08 08:45:31 +00:00
2026-06-08 19:17:44 +03:00
2026-06-07 18:04:50 +00:00
2026-06-07 18:04:50 +00:00
2026-06-07 12:39:00 +00:00
2026-06-07 16:14:45 +00:00
2026-06-09 02:26:49 +03:00
2026-06-09 02:26:49 +03:00
2026-06-03 00:12:17 +03:00
2026-06-08 22:50:47 +03:00
2026-06-08 22:00:54 +03:00
2026-06-06 04:42:11 +00:00
2026-06-07 18:04:50 +00:00
2026-06-08 06:41:52 +00:00
2026-06-07 19:20:41 +00:00
2026-06-07 18:04:50 +00:00
2026-06-07 18:04:50 +00:00
2026-06-07 22:02:45 +00:00
2026-06-08 08:45:31 +00:00
2026-06-07 12:39:00 +00:00
2026-06-06 21:07:35 +00:00
2026-06-05 17:50:47 +03:00
2026-06-05 17:50:47 +03:00
2026-06-05 17:50:47 +03:00
2026-06-05 17:50:47 +03:00
2026-06-03 22:18:24 +03:00
2026-06-03 22:18:24 +03:00
2026-06-03 22:42:53 +03:00
2026-06-09 10:06:17 +03:00
2026-06-08 10:34:33 +00:00
2026-06-06 10:13:49 +00:00
2026-06-09 10:06:17 +03:00
2026-06-08 10:34:33 +00:00
2026-06-08 10:34:33 +00:00
2026-06-04 11:17:58 +03:00
2026-06-03 22:18:24 +03:00
2026-06-03 18:18:26 +03:00
2026-06-04 22:38:09 +03:00