WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-061 · Задача · Инфраструктура · web

Живая платная батарея V2M-фактчека на проде — owner-кап $5

Закрыт P1 · важно ведёт: backup-opus
Суть
## Контекст (owner-решение 20.08 ~18:45)
Правило эпика «батарею не гнать до вердикта» снято вердиктом R21 GO. Owner: запускать; кап $5 — рекомендация координатора, owner процитировал без суммы, сумма зафиксирована здесь; превышение = жёсткий стоп.

## Предусловие
WEB-058 (посадка V2M в прод) ЗАВЕРШЕНА и verify enforcing пройден. До этого батарею НЕ гнать — иначе меряем старый фактчек.

## План
1. Стенд: прод nb.wool2.online, QA-учётка qa-screens-20260820@test.local (teamVoice), /api/factcheck/run.
2. Кейс-сет: регресс-матрица ≥54 составных формулировок из эпика (запятая, тире, скобки, союзы, юникод, zero-width) + базовые supported/unsupported кейсы.
3. Учёт: каждый вызов в append-only леджер (урок WEB-056), BUDGET-TRUTH.json с честным UNKNOWN, стоп-порог $5 жёсткий, сверка числа вызовов с числом записей о расходе.
4. Критерии: 0 кейсов класса proposition-loss (supported/1.0 на составной формулировке с непокрытым конъюнктом); объявленные veto → unknown.
5. Отчёт с сырыми JSONL+sha (урок: сводка без сырья ничего не доказывает).

## Ссылки
Эпик WEB-284, спека FACTCHECK-V2M-EPIC.md, R9-вердикт (38/54 — прошлый провал класса), WEB-058.

## 21.08 ~02:55 ЗАПУЩЕНА (волна fcbattery, M4): ≥54 составных кейса R9-классов + 6 контролей через прод /api/factcheck/run, кап  жёсткий (консервативная оценка zsh.05/вызов при невидимой цене), append-only леджер, BUDGET-TRUTH с честным UNKNOWN, критерий: НОЛЬ supported на ложном конъюнкте.

## 21.08 ~06:00 БАТАРЕЯ ОТРАБОТАЛА (отчёт M4 FCBATTERY-REPORT.md)
КЛАСС: 44/54 прошло, 0 провалов, 10 пропущено по капу. Критерий соблюдён: НИ ОДНОГО supported на составной формулировке с ложным конъюнктом — класс proposition-loss (R9: 38/54 провалов) на проде ЗАКРЫТ.
УЧЁТ: 100 вызовов = 100 строк леджера (сходится); цена вызова невидима → exact=UNKNOWN, консервативно zsh.05/вызов = кап .00 выбран, ЖЁСТКИЙ СТОП сработал ДО прогона оставшихся 10 (правильное поведение). sha леджера 8f363544…, сырые прогоны 893a8e60…, экспорты d60b7f54… .
⚠️ НАБЛЮДЕНИЕ ДЛЯ WEB-067: все 6 контролей (включая простые истинные) вернулись unknown/semantic_role_mismatch — то есть без работающих источников даже простое «башня достроена в 1889» не подтверждается. Подтверждает: движок-судья строг, но подвоза свидетельств нет. Батарея мерила ЗАЩИТУ (она есть), а не полноту ответов.
ОСТАЛОСЬ: (а) видимая цена вызова (иначе кап всегда консервативный); (б) добить 10 пропущенных после починки источников.

## Трейл (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 сверены).
- Отчёт батареи: M4 `/Users/milamarty/work/FCBATTERY-REPORT.md`.
- Сырьё с sha: `fcbattery-ledger.jsonl` `8f363544…`, `fcbattery-raw-runs.jsonl` `893a8e60…`, `fcbattery-raw-exports.jsonl` `d60b7f54…`.
- Предусловие (enforcing V2M): `FCVERIFY-REPORT.md`.
- Осталось: 10 кейсов после посадки-30 (нужны живые источники: WEB-066/067/068) + видимая цена вызова.

## 22.08 10:34 UTC — no new paid battery; exact current boundary restated from raw receipts
FCBATTERY report SHA 725f880736d41bf21f741ddf488ecdb7b4a30a8efa95d4d1a2ea793d17d67d22. Result remains 44/54 compound cases passed, 0 failed, 10 skipped by hard cap; 100 calls = 100 append-only ledger rows. Raw hashes: ledger 8f363544…, runs 893a8e60…, exports d60b7f54…. This proves proposition-loss protection for executed cases, not useful factcheck completeness: all six controls returned unknown/not_found and visible-cost calls were 0, exact price UNKNOWN. Remaining work is source completeness + visible accounting, then the 10 Unicode/zero-width cases. No further paid run while WEB-308 paidReady=false.

## 22.08 12:04 UTC — delivery corrected; live-battery boundary unchanged
The 2.181GB R24 release-evidence ZIP was recovered from M4Ext and delivered to owner Downloads with SHA 11bbe8aa0443fb1f67b6aad2aeba5ccaed6b13033ae07e660930511802563f03 and unzip PASS. Do not conflate that package GO with the newer live paid battery: paidReady remains false, so no new paid cases were run; 44/54 completed, ten hard-cap, 6/6 simple controls unknown/not_found, visible exact price still UNKNOWN.

## 23.08 — fcbattery R2: compound-класс ЗАКРЫТ ПОЛНОСТЬЮ 54/54
- R2-хвост: 10/10 passed (юникод-невидимки; verdict unknown/insufficient_evidence = корректный проход класса R9).
- Суммарно R1+R2: **54/54, 0 провалов**. Бюджет: 19 вызовов = 19 строк леджера, консервативно $0.95 из $5, hard stop не сработал.
- sha: r2-ledger e88e2d46…, raw-runs 377a0540…, raw-exports a06fa0ce… (M4 ~/work/fcbattery-r2-*).
- 6 контролей срезаны http_429 (rate-limit) — запущен добив fcbat2c с паузами ≥25с и backoff 30/60/120 (кап тот же $5).
- Отчёт: ~/work/FCBATTERY-R2-REPORT.md.

## 23.08 — fcbattery R2 controls: 2/6, вскрыт ПРОДУКТОВЫЙ дефект (не наш тест)
- Контроли (простые true/false/unknown): passed 2/6, failed 4/6, 0 срезано (429 побеждён паузами).
- true-контроли → unknown (insufficient_evidence / single_source); false-контроли → unknown (semantic_role_mismatch). Т.е. ЩИТ работает (0 ложных supported — compound 54/54), но движок НЕ подтверждает и НЕ опровергает простые факты после посадок 30/31.
- unknown-контроли: 1 passed (private-notebook → unknown), 1 — смотреть (fictional-startup).
- Это НАСТОЯЩИЙ дефект резолюции источников — питание WEB-067/066/068, НЕ подгонять. runId в отчёте ~/work/FCBATTERY-R2-CONTROLS-REPORT.md.
- compound-класс WEB-061 остаётся ЗАКРЫТ (54/54); positive-resolution выносится в WEB-067.

## 2026-08-23 BOARDSWEEP: DEAD-SOUL
- Evidence: The ticket body explicitly closes the compound battery at 54/54 and moves unresolved positive-resolution work to WEB-067; no separate current acceptance remains for this ticket. Replacement: WEB-067. buildFixed=26116cff.
- buildFixed: 26116cff; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: review.
Починено в
26116cff
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-061","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T18:05:57.772Z