[CL-FIX-GRID-SKIP-LOG-THROTTLE] Троттлинг повторных grid skip-WARNINGов #313

Merged
andrei merged 1 commit from feature/claude-grid-skip-log-throttle into master 2026-06-10 17:02:01 +00:00
Owner

Что сделано

  • _rebalance_skip_reason_repeats(state, symbol, reason): сравнение новой причины skip'а с сохранённой в state (last_rebalance_skip_reason) после нормализации чисел → # (exposure 83.3% vs 83.8% = то же персистентное состояние).
  • В risk-gate ветке rebalance-цикла: WARNING только при первом срабатывании/смене причины, повторы → DEBUG.

Зачем

Персистентный over-exposure блок (все 5 символов 71–83% при лимите 50%) писал ~500 строк/сутки одного и того же — топил редкие реальные ошибки в секции «Логи 24ч» (PR #310). Поведение гейта не меняется — только уровень повторного лога.

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

  • 5 новых тестов: первая причина не повтор; та же с другими цифрами — повтор; другая причина — не повтор; per-symbol изоляция; malformed state.
  • Регрессия -k "grid and (skip or rebalance or loop_helpers)" — 97 passed. ruff clean.
  • После деплоя: exposure-skip строк в log-health должно стать ≤5/сутки на символ (по числу смен причины) вместо ~100.

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

  • Если DEBUG отключён в прод-логгере — повторы исчезнут из файла совсем; приемлемо: смена причины и dashboard skip-reason (state) сохраняются.
  • Нормализация чисел может склеить две разные причины с одинаковым шаблоном — допустимо для лог-уровня (state хранит точную строку).
## Что сделано - `_rebalance_skip_reason_repeats(state, symbol, reason)`: сравнение новой причины skip'а с сохранённой в state (`last_rebalance_skip_reason`) после нормализации чисел → `#` (exposure 83.3% vs 83.8% = то же персистентное состояние). - В risk-gate ветке rebalance-цикла: WARNING только при первом срабатывании/смене причины, повторы → DEBUG. ## Зачем Персистентный over-exposure блок (все 5 символов 71–83% при лимите 50%) писал ~500 строк/сутки одного и того же — топил редкие реальные ошибки в секции «Логи 24ч» (PR #310). Поведение гейта не меняется — только уровень повторного лога. ## План тестирования - 5 новых тестов: первая причина не повтор; та же с другими цифрами — повтор; другая причина — не повтор; per-symbol изоляция; malformed state. - Регрессия `-k "grid and (skip or rebalance or loop_helpers)"` — 97 passed. ruff clean. - После деплоя: exposure-skip строк в log-health должно стать ≤5/сутки на символ (по числу смен причины) вместо ~100. ## Где могу ошибаться - Если DEBUG отключён в прод-логгере — повторы исчезнут из файла совсем; приемлемо: смена причины и dashboard skip-reason (state) сохраняются. - Нормализация чисел может склеить две разные причины с одинаковым шаблоном — допустимо для лог-уровня (state хранит точную строку).
[CL-FIX-GRID-SKIP-LOG-THROTTLE] grid skip: WARNING при смене причины, DEBUG при повторе
All checks were successful
Arnold Forgejo CI / secret-scan (pull_request) Successful in 4s
Forgejo Smoke Test / Smoke (pull_request) Successful in 2s
Arnold Forgejo CI / frontend-audit (pull_request) Successful in 15s
Arnold Forgejo CI / backend-tests (pull_request) Successful in 3m53s
b88adb19fe
Персистентный over-exposure блок писал ~40 WARNING/час на символ (5 символов
≈ 500 строк/сутки) - одна и та же причина на каждом rebalance-цикле топила
редкие реальные ошибки в log-health топе. Числа внутри причины меняются
каждый цикл (exposure 83.3% -> 83.8%), поэтому сравнение нормализует цифры
в # перед сопоставлением с сохранённой в state причиной
(_LAST_REBALANCE_SKIP_REASON_KEY уже хранится).

Тесты: 5 новых (first/same-norm/changed/per-symbol/malformed-state),
область grid skip/rebalance/loop_helpers 97 passed, ruff clean.
andrei merged commit dc0f7b8e85 into master 2026-06-10 17:02:01 +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!313
No description provided.