From 8b8b750293cb61b0807d7ec7b9930c229592184a Mon Sep 17 00:00:00 2001 From: Simbiot Harness Date: Sat, 3 Oct 2026 10:17:31 +0000 Subject: [PATCH] =?UTF-8?q?hour=20digest=2010:00=20UTC=20(hour-497506):=20?= =?UTF-8?q?=D0=B0=D0=B2=D1=82=D0=BE-=D1=81=D1=85=D0=BB=D0=BE=D0=BF=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20failed>24=D1=87=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B4=D0=B5,=20ea2fa5=20done,=20=D1=8D=D1=81?= =?UTF-8?q?=D0=BA=D0=B0=D0=BB=D0=B0=D1=86=D0=B8=D1=8F=20fd7c10=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BA=D1=80=D1=8B=D1=82=D0=B0,=205=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D1=87=20requeue'd;=20migration-hermes.md=20=E2=80=94=20?= =?UTF-8?q?=D1=81=D0=BB=D0=B8=D0=BF=D1=88=D0=B0=D1=8F=D1=81=D1=8F=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BA=D0=B0=20=D1=80=D0=B0=D1=81=D1=86=D0=B5?= =?UTF-8?q?=D0=BF=D0=BB=D0=B5=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/digests/hour-2026-10-03-1000.md | 37 ++++++++++++++++++++++++++++ docs/migration-hermes.md | 4 ++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 docs/digests/hour-2026-10-03-1000.md diff --git a/docs/digests/hour-2026-10-03-1000.md b/docs/digests/hour-2026-10-03-1000.md new file mode 100644 index 0000000..61d320f --- /dev/null +++ b/docs/digests/hour-2026-10-03-1000.md @@ -0,0 +1,37 @@ +# Дайджест часа 2026-10-03 10:00–11:00 (UTC) — тик hour-497506 + +## Главное: авто-схлопывание старых фейлов (просьба Alex) — в проде +- **Фреймворк-фича сделана и запушена** (коммиты `d8a7c89` + `3b3e3d1`, база `03d3dff`): + - новый статус **closed («архив»)**: событие `TaskClosed`, проекция в es.py; терминальный, но обратимый (`requeue` принимает closed → ready); + - **демон-архиватор**: `archive_stale_failed()` в delivery-демоне (каждые 15с) — failed старше 24ч автоматически → closed; `now` — параметр (тестиру); + - CLI: `simbiot close [-r reason]` (только failed, идемпотентен); + - дашборд: порядок ready→running→failed→done→**архив**; «закрыты» под одной строкой-счётчиком (тумблер раскрывает полностью); counter «архив» в статусбаре; `.pill.closed`; + - тест `tests/test_close_stale_failed.py` — 15 проверок (порог через симуляцию +25ч, done не трогается, полный цикл closed→ready→failed→closed) — все PASS; смежные тесты (batch/delivery/guards/timeout) — зелёные. +- **Бонус-фикс** (`3b3e3d1`): батч-фаза тика закрывает `TaskCompleted` только ещё-running задач — requeue'd/close'd решения воркера дайджестом тика больше не перезаписываются (причина найдена при работе над e-261003094432: иначе requeue'd задачи нечестно закрывались бы дайджестом поверх готовых). + +## Эскалации +- **e-261003094432-fd7c10 (warn, min→hour) — ЗАКРЫТА (acked)**: просили «штатный способ failed→done». Дано лучше: failed→closed (архив, обратимо) + авто по 24ч. Полная цепочка ea2fa5: failed 09:10 → requeue 09:42 → claimed 10:00 → complete → **done**. +- Открытых эскалаций: 0. + +## Зонтик-задача ea2fa5 [L] — done +- Закрыта complete'ом с объяснением: дубль двух живых тикетов, работа идёт подзадачами (см. ниже). Написано и в TG. + +## Батч 6 задач: 1 закрыта, 5 — честно requeue'd в ready +- ✅ `t-261003090843-ea2fa5` [L] — done (зонтик, см. выше). +- ↩️ `6da069` (авто-мониторинг ошибок портала), `950702` (виджет обратной связи), `579783` (экспорт simbiot-агента), `a1f38c` (выжимки-память в экспорт), `20b6fb` (выжимка Гермеса при переносе) — контекст часа ушёл на фикс закрытия, сами задачи не начинались → **каждая возвращена requeue с осмысленным reason** «час-тик ушёл на фикс, не начиналась» — для следующего такта, очередь в правильном порядке (6da069 старейшая). +- Готовность к след. такту: 5 ready [M], суммарно ~300м — не влезут целиком в один час-тик, идти строго по очереди от старейшей. + +## Входящие TG +- **m-516173562 (Alex, 10:00)** «лучше да сделать авто схлопывание тех фейлд которые старше 24 часов» — **закрыто**: мин-тик ответил в 10:02:43 (JS-схлопывание), этот тик отправил follow-up (tg-notify, ключ `hour-261003-ecfd7c-followup`): механика closed/архива + requeue + `simbiot close`, коммиты, тесты. Повтор reply SKIP-нулся идемпотентность — дубля нет. + +## Статусы +- **Демон рестарта**: safe-restart (pid 460899, с 10:12) ловит тихое окно — оба коммита подхватятся рестартом без битья по живым тикам (orphan-requeue страхует). +- **Дашборд**: перезапущен сразу, API отдаёт closed (`tasks_by_status: {ready,running,failed,done,closed}`). +- **Доска**: ready 5 / done 91 / failed 0 / closed 0. +- **AUM**: не замерен (burn 24ч = 171.1, 7д = 2521.59 у.е. — минус к AUM). +- **Спенд тика**: hour 168 LLM-вызовов / 9.16M prompt + 96K completion; min 102 вызовов / 1.19M prompt. + +## Следующему тику +- Батч: 6da069 → 950702 → 579783 → a1f38c → 20b6fb (не пересортировывать). +- Если safe-restart не успел к 11:00 — проверить `tail /tmp/simbiot-safe-restart.log`, повтор `scripts/safe-restart.sh`. +- Проверить первый реальный авто-закрыт в архиве (когда появится старый failed). \ No newline at end of file diff --git a/docs/migration-hermes.md b/docs/migration-hermes.md index c17b65e..129b396 100644 --- a/docs/migration-hermes.md +++ b/docs/migration-hermes.md @@ -67,4 +67,6 @@ ru-RU-DmitryNeural) — агент отвечает с учётом истори - Полная история (все 936 сессий остаётся в `state.db` Гермеса) не копируется — только активное диалоговое ядро; исходник сохраняется нетронутым. - TG-бот нового агента подключается кнопкой на портале (`/set-tg-bot`) — флоу - тот же, что для остальных агентов Simbiot. \ No newline at end of file + тот же, что для остальных агентов Simbiot. + 03.10.2026 — дополнение: SIMBIOT_TG_TOKEN Риты перенесён из её Hermes-.env + (bot @rita_a_bot), её simbiot-harness active.