WEB-442 · Задача · — · web
ЛИНИЯ: contentHash — источник истины пары content+hash (устройство после трёх кругов)
Закрыт
P2
ведёт: —
Доказательства
[29.08 19:35Z] DOCSTORES4 сдан (183d85ac): NULL-инвариант пары (ENABLE ALWAYS) + план нарушителей. → ACCDOCSTORES4 (queue/667, verifier ACCDOCSTORES3 as-is + replica/restore на NULL). Последний узкий блокер линии.
[29.08 20:00Z] ACCDOCSTORES4 GO — ЛИНИЯ ЗАКРЫТА (финальный коммит 2ee022ca от 183d85ac): NULL-инвариант принят на реальном PG, verifier ACCDOCSTORES3 зелёный, replica/restore/оба направления INSERT/hash-only UPDATE отвергаются верно, счётчик нарушений 0. Кандидат посадки l71. Для WEB-093: пере-приёмка hardening разблокирована.
[30.08 06:20Z посадка l71 — две живые находки линии] (1) SQL-копия hashContent в backfill web093 была КВАДРАТИЧНОЙ (substr(value,i,1) по UTF-8 = O(i)) — час CPU и прогноз «дни» на 4 копиях «Войны и мира»; переписана линейным байтовым курсором (эквивалентность доказана, 3.3М за 2.4с), коммит 4a6b7ae5. Класс тот же, что WEB-438. (2) Уловка-22: план очистки сирот docstores4 блокируется pair-guard-ом docstores3 («hash не меняется без content») — исполнено административно (DISABLE TRIGGER на 1 txn, 15 строк, ENABLE ALWAYS); в l72 guard должен разрешать переход пары к NULL/NULL.
[30.08 07:00Z] 🛬 ПОСАЖЕН В l71 (артефакт ad094b26, commit 4a6b7ae5, посадка 30.08 00:53Z, обе службы, paidReady enforce_ready). Полный журнал посадки с 5 находками стражей — WEB-320 [30.08]. Пара content+hash под охраной на проде (5 миграций применены, включая линейный backfill). Ревизия (contentRevision) от коллизий FNV32 едет с линией WEB-447 в l72/l73.
Лента
2026-09-02T00:18:47.095Z · Fable[02.09 00:25Z Фабл, закрытие хвостов эпиков] Сверка на A2/nc-build: 4a6b7ae5 (посадка l71) — предок прод-релиза l85 (8a2ac255). Пара content+hash под охраной на проде; единственный хвост (contentRevision против коллизий FNV32) ведётся в WEB-447 (INDEXTAIL7). Закрываю как посаженное.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-442","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-02T00:18:47.115Z