[2026-09-25 15:41:48] taiga-vault: family/documents/vault-sync/2026-09-25-http402-balance-outage.md

This commit is contained in:
Taiga committed 2026-09-25 15:41:48 +00:00
1 parent 1d5408abe6
commit a0d298568c
1 file changed
+96
@@ -0,0 +1,96 @@
---
date: 2026-09-25
tags: [vault-sync, cron, incident, deepseek, provider, http402]
---
# 2026-09-25 — простой sync 4 ч 24 мин: HTTP 402 Insufficient Balance, 53 тика подряд
## Что случилось
Самый длинный на сегодня эпизод отказа провайдера LLM. Тики cron-задачи `sync-vault`
(id `29851c413903`) падали с:
```
RuntimeError: HTTP 402: Insufficient Balance (request_id: …)
```
- Первый упавший тик: `10:45:55` UTC (за 15,0 с)
- Последний упавший: `15:05:29` UTC (за 3,1 с)
- **Всего 53 failed-тика подряд**, каждый падал за 3–8 с — отказ LLM API, не git
- Дыра в `/tmp/vault-sync.log`: `10:45:59 → 15:10:34` = **264,6 мин (4 ч 24,6 мин)**
- Последний успешный тик до сбоя: `10:45:55` (лог-строки `10:45:59`, все три фазы `Pushed ✓`)
Тик `10:45:55` — пограничный: он успел отработать скрипт (10:45:59 три `Pushed ✓`), но
финальный LLM-раунд упал с 402. Начиная с `10:50:56` скрипт не запускался вообще.
## Восстановление
Баланс был пополнен (внешнее действие, не мной). Тик `15:10:29` — **completed** за 22,1 с,
первый же прогон догнал весь бэклог:
```
[2026-09-25 15:10:34] [syncthing] Pushed ✓
[main 4b56818] syncthing: personal/creative/aphorisms.md (правка с телефона, ждала ~4 ч 25 мин)
Merge made by the 'ort' strategy.
work/projects/cpm-web-extension-breakage-validation.md | 14 ++--
work/tech-design/coredata-code-defined-models.md | 79 +++++++++++++++++
Updating 9d78fa0..dec30c1 (Fast-forward)
[2026-09-25 15:10:47] [taiga-vault] Pushed ✓
[2026-09-25 15:10:49] [syncthing-out] Pushed ✓
```
Дальше каденция ровная: `15:15`, `15:20`, `15:25`, `15:30`, `15:35`, `15:40` — все
`completed`, три фазы `Pushed ✓` на каждом.
## Проверка после восстановления (2026-09-25 15:41 UTC)
```
bare 1d5408abe6cab694a53214a155b7b97559b8ffa7
/vault 1d5408abe6cab694a53214a155b7b97559b8ffa7
/obsidian-syncthing 1d5408abe6cab694a53214a155b7b97559b8ffa7
git status --porcelain → пусто (оба клона)
маркеров конфликта (^<<<<<<< / ^>>>>>>>) → 0
ошибок хука post-receive (host-путь) → 0
лога 19640 строк
```
Бэклог влит полностью, потерь нет — git-синк идемпотентен.
## Статистика окна (executions.db)
Таблица обрезается до последних ~1001 записи; окно на момент разбора:
`2026-09-22 04:20 → 2026-09-25 15:40` UTC.
| статус | всего |
|---|---|
| completed | 946 |
| failed | 54 (53 из них — 402 сегодня + 1 × 503 от 09-23 07:35) |
| running | 1 (текущий) |
## Вывод: это уже второй 402-эпизод, и он на порядок длиннее
| эпизод | тиков | длительность |
|---|---|---|
| 2026-09-21 03:55 → 04:20 | 6 | 35,3 мин |
| **2026-09-25 10:45 → 15:05** | **53** | **4 ч 24,6 мин** |
Тренд плохой: 402 — это про деньги на счёте провайдера, а не про git. Пока баланс пуст,
падают **все** prompt-задачи Hermes (включая sync-vault), потому что каждый тик требует
LLM-раунда. Сегодня четыре с половиной часа не синхронизировался телефон.
Что стоит сделать (решение владельца, я это не меняю молча):
1. **Держать запас на балансе DeepSeek / включить авто-пополнение.** Минимальное действие,
снимает 402-эпизоды целиком.
2. **Убрать LLM из петли sync:** `hermes cron edit 29851c413903 --no-agent --script <path>`.
Тогда таймауты и 402 провайдера перестанут ронять синхронизацию. Ловушка известна:
`--script` ждёт файл под `~/.hermes/scripts/`, а `/root/.hermes` в контейнере не
существует и не переживает рекреацию — нужен персистентный путь (симлинк на `/opt/data/`).
3. Альтернатива/дополнение — пин модели или провайдера (`--model` / `--provider`), чтобы
деградация одного провайдера не роняла задачу.
## Связанные заметки
- `family/documents/vault-sync/2026-09-21-http402-balance-outage.md` — первый 402-эпизод (6 тиков, 35 мин)
- `family/documents/vault-sync/2026-09-20-morning-sync-outage.md` — эпизод таймаутов провайдера (3 ч 10 мин)
- скилл `vault-sync-infrastructure` → разделы «Разрыв >30 мин» и «Возможное устранение»