WEB board

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

P2 [роли]: C3 цепочки — claim_judge_receipt_hashed отсутствует, statistics-chain пустой

Закрыт P2 ведёт: —
Суть
C3-1: цитаты есть (16) но !weeks_18_19 !reason_maintenance !claim_judge_receipt_hashed; C3-3: cites=0, judge не applied. Судья цепочек не даёт хешированный receipt. Прогон: M4 /Volumes/M4Ext/ops/paidlegs/web293-full-20260825T151110Z (battery.log, battery-all.json, traces/). Контекст: WEB-293 корень (stale bundle) закрыт, скор 42/50.
Доказательства
📎 Трейл: тот же прогон, C3-1 cites=16 но !weeks_18_19 !claim_judge_receipt_hashed; C3-3 cites=0 !claim_judge_applied. Судья цепочек без хешированного receipt.
[25.08 ~16:48Z] → in_progress: волна web366 на A1 (worktree wt-web366 от a453b16=посадка 55, codex luna xhigh, бриф /home/ubuntu/waves/WEB366-BRIEF.md → отчёт WEB366-REPORT.md, маркер WEB366_DONE). Проверки без платных вызовов (моки), полная батарея — отдельным прогоном на M4.
[25.08 ~17:25Z] → review: волна web366 сдала. Коммит bbb53be (wt-web366 от a453b16). Корень: judge-trace жил только на ПЕРВОЙ evidence-строке; путь cites=0 выходил ДО судьи; cache/direct-provider выходы — тихий null. Фикс: quorum-путь зовёт судью и при пустом evidence (skipReason no_evidence, без платного вызова); явные trace-reasons вместо тихих скипов; canonical SHA-256 receipt из claim-level trace (без operational timestamps/request-id) → claim_judge_receipt_hashed; nullable-колонки judgeTrace+claimJudgeReceiptHashed для случаев без evidence-строк. МИГРАЦИЯ: 20260825160000_web366_claim_judge_receipt — АДДИТИВНАЯ (2 nullable колонки, применение на прод в рамках посадки). Тесты 21+4 mock pass. Отчёт WEB366-REPORT.md.
[25.08 ~17:55Z] ПРИЁМКА NOGO (accept36x) → in_progress. Миграция PASS (строго аддитивна), hash стабилен fresh/stored — но B1: normalizeClaim() НЕ копирует claim_judge_receipt_hashed (тип объявляет, объект не переносит) → клиент получает undefined, класс «код есть, продукт не получает»; B2: legacy stored без receipt — null без машинно-читаемой причины (нет receiptMissingReason). Ремонт: web366b.
[25.08 ~18:00Z] → review (2й заход): web366b, коммит 3304126. Закрыты оба NOGO приёмки: B1 normalizeClaim() теперь переносит claim_judge_receipt_hashed + claimJudgeSkipReason + judgeTrace в debug; B2 отсутствие receipt = машинная причина (claim_judge_receipt_missing для fresh, legacy_stored_claim_without_judge_receipt для legacy) — не немой null. Тесты границы нормализации + legacy. Репро приёмщика скопирован (не тронут оригинал). Re-accept кластером.
[25.08 ~18:40Z] ✅ ПРИЁМКА GO (reaccept36x, sol, не автор): REACCEPT36X_366_GO. Каждый прошлый NOGO-факт закрыт с трассировкой до production route + независимый негатив (не только авторский тест). Готов к посадке 56.
Починено в
web366@3304126
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-366","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-25T18:39:54.835Z