WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-066 · Дефект · billing · web

P1: spend-accounting health режет живые платные источники: Perplexity отказ «accounting is being repaired», openrouter 503 accounting_unhealthy

Закрыт P1 · важно ведёт: backup-opus
Суть
## Найдено 20.08 ~22:40 двумя независимыми пробами на прод v4-bb1186a
1) Живой фактчек-прогон cmt1u2bx401dx144pp8s5xa9b (волна fcsources): источник Perplexity упал с «AI spending accounting is being repaired, so new paid requests are refused».
2) Ранее web060-проба: model openrouter:openai/gpt-5.4-mini → 503 accounting_unhealthy (billing.status=degraded).
Похоже, здоровье учёта (accounting health gate) на проде числится «в ремонте» и фейл-клоузит все openrouter/perplexity пути — ЧАСТЬ платной поверхности жива (прямые gpt-5.4-* работают), часть молча зарезана. Внутренний RAG в том же прогоне упал «retry limit» — проверить, не тот же ли корень.
Проверить: состояние accounting-health на проде (что его пометило degraded, с какого времени), связь с WEB-056/спенд-каналами, и починить или честно показать в UI. Отчёт: M4 FCSOURCES-REPORT.md.

## Трейл (21.08)
- Ветка посадки-30: `landing30` (worktree A1 /home/ubuntu/waves/wt-landing30, от serving f1e49bca), слито 6 веток / 88 файлов, проверка дубликатов ключей в словарях: 0.
- Живой статус смены: `~/Downloads/OPS-STATUS-LIVE.md` (ноутбук) + копии на M1 `~/livepush/` и M4 `/Users/milamarty/work/`.
- Паспорт проекта: https://bugs.wool2.online/passport (обновлён 21.08: serving arm64-f1e49bca, статы из свежей ветки, дельты в stats-history.json).
- Леджер ревизора: `/Volumes/M4Ext/ops/reviser-ledger/` (пакеты + аудит-бандлы, sha сверены).
- Первичная улика: живой фактчек-прогон `cmt1u2bx401dx144pp8s5xa9b` (волна fcsources, отчёт M4 `FCSOURCES-REPORT.md`) — Perplexity отбит «accounting is being repaired»; ранее openrouter → 503 accounting_unhealthy (WEB060-DIAGNOSIS).
- Характеризация механизма: ветка `fcchannels`, коммит `6cb53f11` (DB-free тесты асимметрии).
- Фикс: ветка `l30fcsrc`, коммит `5f633502` (незаряженный шлюз перестаёт быть вечной 503).
- Отчёт волны: A1 `~/waves/L30FCSRC-REPORT.md`.

## 21.08 — ВЫЕХАЛО НА ПРОД
**Посадка 30 состоялась 21.08 03:53 IST.** serving = `v4-504af77f`, релиз `arm64-504af77f-20260821T025311Z`, артефакт sha `a0afc41415db60377aeb4cf399d91b98a4c407217fc8839b0b1369a2542af362`, аттестация v18. Проверено после переключения: `active`, `NRestarts=0`, `paidReady=true`, `posture=enforce_ready`, `mode=enforce`, `failures=[]`, фатальных строк boot-контракта **0**, секрет сторожа файл≡процесс (`cbabe4a2b16008e3`), nft переприменены, канон проштампован (`CANON.json: serving=504af77f marker=v4-504af77f`).
Проверка байтов релиза и живая проба выполнены после переключения; подробный трейл посадки — в WEB-282.

## 23.08 — вошёл в посадку, ждёт живой приёмки [эпик WEB-314]
- Груз в проде: 504af77f (посадка 30, 21.08 03:53 UTC; предок serving 26116cff); артефакт a3c1c9d6…b595; paidReady=true.
- Метод приёмки: API-прогон: платные источники не режутся accounting_unhealthy; контроли fcbattery R2.
- Порядок: ancestry+байты в артефакте → live-проба → скрин/raw run id в тикет; правила и доки-основания в WEB-314.

## 23.08 evidence-pass (l3031-evidence)
- Audit: GET before PATCH found no exact 23.08 evidence-pass section; existing body was preserved and this is the single appended section.
- Ancestry: git merge-base --is-ancestor 5f633502 504af77f rc=0; git merge-base --is-ancestor 504af77f 26116cff rc=0; exact source=26116cff032ad8f015e1e2d9cba302e1e8f7ec27.
- Bytes: exact source auto-provisions missing SpendGate rows OPEN and keeps accounting refusals explicit/provider-bound; source/ancestry SHA-256=5fd780dc8d9f4823ea318dfcbac27c76a8333d75e0a68a084073e4add1946db2.
- Live: no authenticated QA session: callback HTTP 302, session=null. Existing unauth factcheck raw web066-068-factcheck-noauth.json SHA-256=75a331048686effaa6574609aeee8b0079b0350ca3d57fea608ac865507a3372 is not a paid-source acceptance. No factcheck runId claimed; no paid calls were made.
- Verdict proposal: NEEDS_LIVE_HAND.

## 23.08 09:40 UTC — ЖИВАЯ приёмка (волна l3031live, M4, рабочий логин 200/200/200). ACCEPT: factcheck runId cmt5jf70c001r443znyek7lvx, evidenceCount=8, providers perplexity+wikipedia, export succeeded=[perplexity,wikipedia] — accounting guard НЕ режет платный Perplexity. Закрыт живьём.
Починено в
504af77f
Лента
2026-08-23T08:30:21.767Z · codex-l3031-live
L3031 LIVE ACCEPT: runId cmt5jf70c001r443znyek7lvx, HTTP 200/200, evidenceCount=8, succeeded providers perplexity,wikipedia; платный источник не отрезан. Raw: qa-screens/l3031-web066-068-sources.json. Предлагаемый статус: готов к done.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-066","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T08:32:56.160Z