[CL-FIX-BLOCKED-LOG-THROTTLE] Троттлинг повторных blocked-логов AI-gate #311

Merged
andrei merged 1 commit from feature/claude-blocked-log-throttle into master 2026-06-10 15:41:15 +00:00
Owner

Что сделано

  • _audit_preflight_block возвращает bool — записано ли событие (первое в dedup-окне) или это повтор.
  • Caller AI-gate блока: WARNING только при первом срабатывании в окне ARNOLD_BLOCKED_SIGNAL_DEDUP_TTL_SEC (1800s), повторы → DEBUG.
  • Внутренний dedup-лог «Dedup blocked signal audit» INFO → DEBUG.

Зачем

Один кешированный verdict AI-gate (block-cache TTL 300s) писал 8–12 строк/мин (~500/час) одного и того же текста — топил редкие реальные ошибки в новой секции «Логи 24ч» дневного отчёта (PR #310). LLM-вызовы при этом НЕ спамились (кеш работает) — проблема только в логах.

План тестирования

  • 4 новых теста: первый блок → True; повтор в TTL → False; повтор логируется DEBUG (caplog); пустой reason → False.
  • Регрессия области -k "executor or blocked or preflight" — 516 passed. ruff clean.
  • Остальные 8 callsites игнорируют возврат — совместимость проверена grep'ом.
  • После деплоя: частота AI signal gate blocked в pm2-логе должна упасть с ~10/мин до ~2/час на сигнал.

Где могу ошибаться

  • DEBUG-уровень в prod-конфиге логгера может быть полностью отключён — тогда повторы исчезнут из файла совсем; приемлемо, т.к. первый блок окна + DB-аудит остаются.
  • Если notifications/DB-аудит внутри упадёт, функция всё равно вернёт True (событие «обработано») — поведение прежнее, WARNING о сбое сохраняется.
## Что сделано - `_audit_preflight_block` возвращает `bool` — записано ли событие (первое в dedup-окне) или это повтор. - Caller AI-gate блока: WARNING только при первом срабатывании в окне `ARNOLD_BLOCKED_SIGNAL_DEDUP_TTL_SEC` (1800s), повторы → DEBUG. - Внутренний dedup-лог «Dedup blocked signal audit» INFO → DEBUG. ## Зачем Один кешированный verdict AI-gate (block-cache TTL 300s) писал 8–12 строк/мин (~500/час) одного и того же текста — топил редкие реальные ошибки в новой секции «Логи 24ч» дневного отчёта (PR #310). LLM-вызовы при этом НЕ спамились (кеш работает) — проблема только в логах. ## План тестирования - 4 новых теста: первый блок → True; повтор в TTL → False; повтор логируется DEBUG (caplog); пустой reason → False. - Регрессия области `-k "executor or blocked or preflight"` — 516 passed. ruff clean. - Остальные 8 callsites игнорируют возврат — совместимость проверена grep'ом. - После деплоя: частота `AI signal gate blocked` в pm2-логе должна упасть с ~10/мин до ~2/час на сигнал. ## Где могу ошибаться - DEBUG-уровень в prod-конфиге логгера может быть полностью отключён — тогда повторы исчезнут из файла совсем; приемлемо, т.к. первый блок окна + DB-аудит остаются. - Если notifications/DB-аудит внутри упадёт, функция всё равно вернёт True (событие «обработано») — поведение прежнее, WARNING о сбое сохраняется.
[CL-FIX-BLOCKED-LOG-THROTTLE] AI-gate blocked: WARNING только на первое срабатывание в dedup-окне
All checks were successful
Arnold Forgejo CI / secret-scan (pull_request) Successful in 3s
Forgejo Smoke Test / Smoke (pull_request) Successful in 1s
Arnold Forgejo CI / frontend-audit (pull_request) Successful in 34s
Arnold Forgejo CI / backend-tests (pull_request) Successful in 4m3s
3b4ca6089c
Один и тот же кешированный verdict AI-gate (GATE_BLOCK_CACHE_TTL 300s) писал
8-12 строк/мин (~500/час): WARNING до dedup-проверки + INFO из самого
dedup-пути на каждом scan-цикле. Это топило редкие реальные ошибки в новой
log-health секции дневного отчёта.

_audit_preflight_block теперь возвращает bool (записано/повтор): caller
логирует WARNING только при первом срабатывании в окне
ARNOLD_BLOCKED_SIGNAL_DEDUP_TTL_SEC (1800s), повторы - DEBUG; внутренний
dedup-лог INFO -> DEBUG. Остальные callsites возврат игнорируют - совместимо.

Тесты: 4 новых (recorded/repeat/debug-level/empty-reason), область
executor+blocked+preflight 516 passed, ruff clean.
andrei merged commit 231b0ce104 into master 2026-06-10 15:41:15 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
europa-tech-srl/arnold-trader-app!311
No description provided.