WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-083 · Задача · UX · web

Три дизайна PDF-отчётов из готовых прототипов: фактчек=Сигнальное поле (довести вёрстку), DeepResearch=Редакционный реестр, Видео=Атлас доказательств

Закрыт P2 ведёт: backup-opus
Суть
## Owner 20.08 ~23:23: развести три типа отчётов по трём готовым дизайнам
Прототипы: ~/Downloads/artdir-pdf-concepts.html (Intel, арт-дир страница 02.08; лежит и на labs). Концепты: «Редакционный реестр», «Сигнальное поле», «Атлас доказательств» (+ мастер-система A).
ФАКТ от owner: для фактчека выбран «Сигнал(ьное поле)», но реально совпадает только обложка — вёрстка тела разошлась. Идёт аудит 15 улучшений (WEB-3, review).
РЕКОМЕНДОВАННАЯ РАСКЛАДКА (owner подтвердить/поменять — последняя миля):
- Фактчек = Сигнальное поле (уже выбран) → довести вёрстку тела до концепта, влить с 15 улучшениями WEB-3;
- DeepResearch = Редакционный реестр (реестр источников/цитат — родной язык исследования);
- Видео = Атлас доказательств (сцены/кадры/таймлайн как атлас улик).
ПЛАН: (1) после подтверждения — вёрстка-волна по каждому рендеру (фактчек-рендер, DR-рендер, видео-рендер ingest-pdf); (2) визуальная приёмка скринами против концепт-страницы; (3) не смешивать с WEB-036 (обрывы «…» чинятся раньше, это баг не дизайна).
Связки: WEB-3 (15 улучшений), WEB-036 (обрывы), RESEARCHFC-0378 (unified FC+DR — дизайн DR учесть там).

## 20.08 ~23:55 ПЕРВЫЙ ПРОГОН ВЁРСТКИ (волна pdfsignal): factcheck-signal.pdf 7 стр на синтетике, PNG-превью в M4 pdfsignal-preview/, патч относительно roles-src приложен. Координатор посмотрел глазами: обложка-сигнал с чипами вердиктов/счётчиками, плашки вердикта+уверенность, источники с заголовками/ссылками — близко к концепту. Отправлен owner-у на приёмку (tg msg 12501). Улучшения сверены с WEB205-AUDIT-REPORT.md (покрыто/нет — в PDFSIGNAL-REPORT.md).

## 21.08 ~00:30 OWNER-ПРИЁМКА С УСЛОВИЕМ (tg 18:59): «вёрстка хорошая, главное чтобы не обеднила функционал — не порезала что мы можем выдать». КРИТЕРИЙ ПРИЁМКИ добавлен: CONTENT-PARITY GATE — перечень ВСЕХ полей/секций текущего прод-рендера (снять с реального отчёта) против нового шаблона; каждый элемент: перенесён/сознательно убран (с причиной)/добавлен. Автотест: рендер одного и того же фактчек-JSON старым и новым шаблоном → набор отданных данных нового ⊇ старого. Без этого гейта вёрстку НЕ сажать.

## 21.08 ~00:35 УТОЧНЕНИЕ OWNER: parity-база НЕ только текущий отчёт — идёт кросс-работа аудита 15 улучшений (WEB-3/WEB205-AUDIT), и в текущем отчёте самом может не хватать вещей. ИТОГОВЫЙ КРИТЕРИЙ: базис сверки = ОБЪЕДИНЕНИЕ (все поля текущего прод-рендера) ∪ (15 улучшений аудита) ∪ (найденное в PDFSIGNAL-REPORT как не-покрытое). Новый шаблон обязан покрыть объединение или явно пометить отложенное с причиной.

## 21.08 ~04:10 OWNER-ПРИЁМКА ВСЕХ ТРЁХ ВЁРСТОК: ОК, с требованием к копирайту деградации. Технический текст (TwelveLabs timed out / VIDEO_LANE_PARTIAL / ocr failed lane_timeout) в пользовательском PDF ЗАПРЕЩЁН. Писать по-человечески, «для домохозяек», метафорой: например «Один из наших экспертов не дозвонился — линия была занята. Отчёт собран по оценкам остальных; можно перепроверить позже» + мягкая иконка. Технические коды — только в служебном блоке-сноске мелким (или вовсе в admin-виде). ПРАВИЛО НА ВСЕ ТРИ ШАБЛОНА и на UI-плашки деградации вообще (связка WEB-064-честность: факт деградации показываем ВСЕГДА, но человеческим языком). Добавить в parity/приёмочный чеклист: ни одного provider-кода/env-имени/lane-термина в пользовательском тексте.

## 21.08 ~04:30 OWNER: финальная приёмка (пункт 5) — ТОЛЬКО на жизненных примерах: реальный ролик (видео-Атлас), реальный факт (Сигнал), реальное исследование (Реестр). Синтетика годится для итераций вёрстки, для приёмки — нет.

## 21.08 ~05:35 ВОЛНА pdffinal ГОТОВА (отчёт M4 PDFFINAL-REPORT.md): (1) человечий копирайт деградации во всех трёх шаблонах — «Один із наших експертів не додзвонився — лінія була зайнята…», тех-коды убраны из пользовательского текста; (2) ЛОКАЛИ ru/uk/en через JSON-словари для всех трёх (Signal/DR/Video), превью на трёх языках в pdffinal-preview/; (3) PARITY GATE: runner pdffinal-parity.mts → PASS по всем трём (ничего из текущих рендеров и 15 улучшений не потеряно). Owner получил uk-превью Video+Signal (tg). ОСТАЛОСЬ ДО ЗАКРЫТИЯ: посадка патчей в прод (landing30) + живой прогон на РЕАЛЬНЫХ данных (ролик/факт/исследование) и приёмка глазами — тогда доклад «ПДФ-скоуп сел целиком».

## 21.08 ~11:45 ⚠️ ЛОВУШКА ДВУХ ДЕРЕВЬЕВ (поймана координатором по вопросу owner)
Волна pdfwire сделала вшивание в дереве M4 /Volumes/M4Ext/ops/paidlegs/roles-src (коммит c64822c, 31 файл, +3740/-129: три HTML-шаблона, словари ru/uk/en, живые export-пути, smoke 41/41). НО посадка-30 собирается на A1 из voicefix-tree — ДРУГАЯ линия. В собранном артефакте landing30 (23e0b944, sha ce2f993c) PDF-вшивания НЕТ.
Прямое применение патча не проходит: git apply --check падает на трёх разошедшихся файлах (factcheck/export/route.ts, video/pipeline/run/[runId]/export/route.ts, DeepResearchModal.tsx).
ДЕЙСТВИЕ: волна pdfport на A1 переносит РУЧНЫМ слиянием в ветку pdfport от 23e0b944, со страховкой отката (старый рендер за флагом) и прогоном smoke. После неё — пересборка артефакта тридцатой, иначе посадили бы БЕЗ PDF.
УРОК В КОПИЛКУ: работа волны на другом боксе/дереве не попадает в посадку автоматически — проверять принадлежность дерева ДО планирования посадки.

## 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.

## 22.08 12:52 UTC — КАНОН ПОСЛЕ ДЕТЕКТИВА 30/31/PDF
- Историческая строка «выехало на прод 504af77f» была верна для второго cutover 30-й, но не является финальной live-приёмкой PDF. Важно: 30-я НЕ потеряна — `504af77f` является предком current `3dd52177` и candidate `da501c43` (ancestry rc=0).
- PDF port `665de7b8` и boundary split `e1653980` также предки `3dd52177`. В точном ARM64 serving-релизе физически есть compiled routes: `/api/factcheck/export`, `/api/deep-research/export`, `/api/video/pipeline/run/[runId]/export`; source archive несёт Signal/Ledger/Atlas, `exportLocale.ts`, ru/uk/en catalogs и `pdfport-smoke.ts`.
- Но эпик остаётся `in_progress`: `PDFFINAL parity PASS` был на synthetic JSON. Нет обязательной post-cutover тройки жизненных PDF (реальный факт + реальное исследование + реальный ролик) и визуальной приёмки глазами. `PDFWIRE-REPORT.md` честно оставляет остатки: 12 English presentation-model строк, потерю части transcript выше renderer, caption-only storyboard counter, REV-016 и skipped degraded fixture.
- Evidence: M4 `/Users/milamarty/work/PDFWIRE-REPORT.md` sha `7effa1b9…fb1a`; `/Users/milamarty/work/PDFFINAL-REPORT.md` sha `5519d281…e56`; A1 git ancestry/current source; Pi release `/home/pi/note-clone/releases/arm64-3dd52177-20260821T212754Z`. Следующий приёмочный гейт — именно три реальные export receipts + PDF bytes/SHA + визуальный verdict, не ещё одна synthetic preview.

## 22.08 14:31 UTC — PDF SCOPE LEDGER — code landed, final live acceptance still open
- Exact ancestry against candidate `da501c43`: `665de7b8` (three HTML templates wired to live export paths), `e1653980` (server-side PDF renderer boundary), `e35fc984` (account language reaches video engine), `bbbc248` + `f730532` (video narrative one-pager + visible provider failure) are all ancestors, `merge-base --is-ancestor rc=0`.
- Exact routes present in current tree: `/api/factcheck/export`, `/api/deep-research/export`, `/api/video/pipeline/run/[runId]/export`. Signal/Ledger/Atlas templates and ru/uk/en catalogs are therefore in the landing-30 lineage; the work was not lost.
- This does **not** close WEB-083. `PDFFINAL parity PASS` used synthetic JSON. Required owner gate remains three post-cutover real-data exports: real fact → Signal, real research → Ledger, real video → Atlas; each needs PDF bytes+SHA, source/run identity, screenshots and visual verdict.
- Residual scope that must be reconciled before closing: WEB-205 25-defect/21-retest generator audit (including REV-016 URL scheme sanitizer); WEB-036 real ellipsis/truncation; WEB-065 live account-locale proof; WEB-043 per-provider captions; 12 English video presentation strings; transcript loss above renderer; caption-only storyboard count; skipped degraded fixture. Technical provider/lane/env codes remain forbidden in user-facing copy.
- Safe execution order: finish WEB-308/restore paid readiness; reuse existing terminal real runs where possible (no needless vendor spend); export all three; run content-parity and locale/degradation checks; inspect visually; fix findings while fresh; then close WEB-083 and only the linked tickets actually proved by receipts.
- Owner status delivered via Telegram `message_id=12780`.

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

## 23.08 — скрин-волна: поверхность экспорта PDF НЕ НАЙДЕНА из UI (NOT_FOUND)
- Скрин 06-web083-export-r2.png: спарк не нашёл кнопку/диалог экспорта по стандартному пути.
- Compiled-роуты export в артефакте есть (греп 22.08) — вероятно, вход в экспорт из другого места UI или за условием. Живой приёмке PDF нужен воркер с ручным маршрутом; тикет остаётся in_progress.

## 23.08 10:05 UTC — PDF-приёмка: экспорт РАБОТАЕТ, визуал NEEDS-FIX
- Функционально ГОДЕН: кнопка «Завантажити PDF» → /api/factcheck/export?...&format=pdf&locale=uk → HTTP 200, Content-Type application/pdf. Экспорт быстрый и бесплатный (на готовом результате). Итоговый вердикт НА ОБЛОЖКЕ: карточка «1/1 ? Не встановлено» + «0 підтверджено · 1 не встановлено · 0 спростовано».
- Артефакты: M4 ~/work/qa-screens/web083-factcheck.pdf + .txt + summary.json; скрины shots-web083/.
- NEEDS-FIX: визуальные замечания вёрстки не закрыты (детали в отчёте ~/work/WEB083-PDF-REPORT.md).
- Owner-Копилка: вкусовые моменты вынесены (не acceptance-блокер) — доложу отдельно.
- Функциональная часть закрыта; визуальный ACCEPT — за доработкой вёрстки.

## 2026-08-23 09:45 UTC — Живая PDF-приёмка (M4): NEEDS-FIX
Отчёт M4 ~/work/WEB083-PDF-REPORT.md (маркер WEB083_PDF_DONE): бесплатный fact-check PDF реально скачан (8 стр, 557КБ, sha 6c6d0de0…), функционально ок, вердикт на обложке есть. БЛОКЕРЫ визуального ACCEPT: обрывы «…» в цитатах/URL остались (стр.4-6, 14 троеточий — продолжение WEB-036/037/115), дубли карточек источника (стр.3-4), пустые нижние зоны (стр.2,7), сырой header. Вкусовые пункты вынесены в Owner-QA-копилку. Нужен фикс обрывов и повторная PDF-приёмка.


## 2026-08-23 23:55 UTC — новый живой PDF owner: каталог мусора (5 дефектов, cmt5ui8sw005zeaf0lz3c3ovx)
1) ДУБЛИ: FRG-02..07 — ШЕСТЬ копий одного и того же текста sputnik8 под разными URL (tutu/wiki/tripster/tonkosti/cometoparis) — фрагменты не дедуплицируются по содержимому (стр.6-7).
2) ЧУЖАЯ ЦИТАТА: к тверждению про Эйфелеву башню 1999 прикреплена выдержка про железнодорожный мост через Енисей (Красноярск) (стр.5) — мусорный evidence в рендере.
3) PLACEHOLDER В ПРОДЕ: «PDF-рендеру не передали картки джерел» (стр.5) — служебная строка в пользовательском отчёте.
4) СЧЁТЧИКИ ПРОТИВОРЕЧАТ: обложка «2 незалежних джерела», методология сама признаёт «запуск заявив 0 незалежних джерел, але докази зводяться до 2» + «0/2 незалежно не перевірено» рядом с «Веб-пошук повернув докази».
5) МАРКЕРЫ В ЗАГОЛОВКЕ: титул тверждения 01 отрендерен как «Эйфелева башня в Париже Джерела [1] [2]» — инлайн-маркеры протекли в заголовок (родня WEB-272, но в фактчек/PDF-пути — чат-фикс это не покрывает).
Плюс провайдер-строки: «Ваші документи — завершився помилкою» (см. WEB-334 — вероятно тот же необёрнутый платный вход рубит и приватный поиск), второй веб-провайдер «завершився помилкою».


## 2026-08-24 00:05 UTC — сверка с доской (вопрос owner): мой каталог из 5 пунктов сопоставлен с эпиком [[WEB-205]] (25 дефектов GPT Pro): №1→REV-001, №4→REV-002/003, №2→REV-007, №3→REV-019-вариация, №5 — НОВЫЙ (REV-026-кандидат). Дубликаты не плодим: WEB-205 = ledger, здесь = живые приёмочные пруфы. Смежные done-тикеты WEB-61/115 (обрывы/дубли «закрыты» ранее) — символика вернулась, значит закрытие было по шаблону, а не по 21-ретесту (в WEB-205 это прямо оговорено).


## 2026-08-23 PDFPOSTQA: NEEDS-PAID — full 3-report acceptance needs paid DeepResearch/video fixtures; free factcheck export only observed.

PDFPOSTQA: бесплатные сценарии только; новые paid generation/export/import не запускались. Полный реестр и evidence: /Users/milamarty/work/PDFPOSTQA-REPORT.md; screenshots: /Users/milamarty/work/PDFPOSTQA-SHOTS/.

## 2026-08-23 BOARDSWEEP: IN_PROGRESS-LIVE
- Evidence: updatedAt=2026-08-23T13:45:01.589Z, within 24h; PDF report design acceptance remains in the active queue. No paid run started.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: in_progress.
Доказательства

[28.08 ~12:10Z Фабл] ACC083 = NO-GO с 5 блокерами, но координатор проверил на машине: **блокеры 1–2 ЛОЖНЫЕ** — отчёт автора существовал в wt-web083/WEB083-REPORT.md (волна положила внутрь дерева, а не в канон /home/ubuntu/waves/), три PDF+HTML лежат в wt-web083/WEB083-artifacts/. Урок класса «этого нет — проверь на машине», применён к самой приёмке. Отчёт скопирован в канон. Заряжена переприёмка **acc083b** (очередь 255, дерево wt-acc083b от HEAD автора, бинарный патч, sha 6cd7e0c14c703583): блокеры 3–5 (smoke-фикстуры Zq/synthetic вместо фактических, матрица мусора с TypeError, locale gate dynamicKeys 8 vs 9) подтвердить или снять + судить содержимое PDF. Отчёты: ACC083-REPORT.md, будет ACC083B-REPORT.md.

[28.08 ~13:35Z Фабл] ACC083B = **NO-GO**: блокеры 1–2 (пути) сняты как и предсказано, блокеры 3–5 ПОДТВЕРЖДЕНЫ (smoke-фикстуры Zq/synthetic вместо фактических; матрица мусора с TypeError; locale gate dynamicKeys 8 vs 9), плюс новые дефекты Atlas — отображение и семантика evidence. Заряжен **web083b** (очередь 258, дерево wt-web083b от HEAD автора sha 6cd7e0c14c703583): реальные фикстуры с путями, матрица без падений, корень locale, дефекты Atlas построчно; отчёт — В КАНОН. Отчёты: ACC083B-REPORT.md, будет WEB083B-REPORT.md.

[28.08 17:50Z Фабл] ACC083C = NO-GO: историческое закрыто (реальные фикстуры, матрица, locale), но при постраничном просмотре PDF найдены два новых вёрсточных: Atlas теряет СЦН-03 (height:1123+overflow:hidden без продолжения страниц), Ledger режет длинное слово на обложке (max-width:12ch без переноса). Заряжен web083c (очередь 267, узкий) с обязательным постраничным самопросмотром. Отчёты: ACC083C-REPORT.md, будет WEB083C-REPORT.md.

[28.08 WEB083F СДАН — NEW-01/02/03 закрыты]
Автор web083f (дерево /home/ubuntu/waves/wt-web083b, отчёт /home/ubuntu/waves/WEB083F-REPORT.md): закрыты NEW-01/02/03; состояния error/empty/success не менялись; PDF перегенерированы и просмотрены постранично (Signal 13 стр., Ledger 8, Atlas 7); приёмочный прогон 95 тестов — 94 passed, 0 failed, 1 skipped; матрица мусора 11/11, URL 9/9; next build не запускался, прод не трогался.
Статус: ждёт зарядки приёмки (следующая в очереди после текущих четырёх на A1).

[28.08 ~19:05Z ACC083G: NO-GO — заявленное закрытие NEW-02 не подтвердилось]
Отчёт: /home/ubuntu/waves/ACC083G-REPORT.md. Приёмщик смотрел PDF ГЛАЗАМИ постранично, а не по логам.
P1 БЛОКЕР: NEW-02 не закрыт. В сгенерированном Atlas фраза «Международной космической станции» встречается ДВАЖДЫ в summary и дважды на физической странице 2: одна копия в основном тексте, вторая — в key point «Финальный акцент». Заявление автора о единственном вхождении опровергнуто.
P2: на странице 3 Atlas заголовок «Scene passports» и верх следующей рамки прижаты к нижнему краю — заголовок отрывается от своего содержимого (сиротская строка). Текст не обрезан.
Круг починки запущен: WEB083G (очередь 289, база l65) — устранить дублирование НА УРОВНЕ УСТРОЙСТВА (общая точка для основного текста и key points, а не заплатка в одном пути), правило «заголовок держится со своим блоком», перегенерация всех трёх PDF с постраничным разбором, объяснение 1 skipped теста, негативный тест на возврат дублирования.

[28.08 ~19:50Z WEB083G сдан с самооценкой GO — приёмка ACC083H заряжена]
Автор заявил закрытие P1 (двойное вхождение фразы в Atlas: summary и страница 2, основной текст + key point «Финальный акцент») и P2 (сиротский заголовок «Scene passports» на странице 3).
Приёмка ACC083H (очередь 302, база l65) обязана смотреть PDF ГЛАЗАМИ: перегенерировать все три (Signal/Ledger/Atlas), разобрать постранично через pdftotext -layout и pdftoppm, привести фактические выдержки, посчитать вхождения числами было/стало, проверить что дублирование устранено НА УРОВНЕ УСТРОЙСТВА (общая точка для основного текста и key points, не заплатка в одном пути), поискать НОВЫЕ сироты на других документах после правила переноса, прогнать регресс 95 тестов + мусор 11/11 + URL 9/9, проверить объяснение 1 skipped теста и сделать свой негативный тест.

[28.08 ~20:12Z ★ ACC083H_VERDICT=GO — линия PDF ЗАКРЫТА]
Отчёт: /home/ubuntu/waves/ACC083H-REPORT.md. Проверялась работа web083g на базе l65.
Закрыты обе находки прошлого круга: P1 (двойное вхождение фразы «Международной космической станции» в summary и на странице 2 Atlas — основной текст плюс key point «Финальный акцент») и P2 (сиротский заголовок «Scene passports» у нижнего края страницы 3).
Приёмка смотрела PDF ГЛАЗАМИ постранично, как требовалось: перегенерация всех трёх (Signal/Ledger/Atlas), разбор через pdftotext -layout и pdftoppm, счёт вхождений числами, проверка что дублирование устранено на уровне устройства (общая точка для основного текста и key points), поиск новых сирот на других документах, регресс и свой негативный тест.
СТАТУС: готово к посадке l66.
Лента
2026-08-23T08:45:45.475Z · codex-web083-pdf
WEB083_PDF_DONE

LIVE PDF acceptance 2026-08-23: surface found via Додатково → Перевірка фактів; ready result journal has Завантажити PDF and /api/factcheck/export?runId=cmt5jf70c001r443znyek7lvx&format=pdf&locale=uk. One free PDF export only; paid deep-research/video exports not run. HTTP 200, 8-page A4, 557077 bytes, sha256 6c6d0de00b965aaea73c9471eaa66db285bb88244ecfde497838affe690aef24. Cover has final verdict: 1/1 ? Не встановлено; 0 supported / 1 unknown / 0 refuted. Overall visual verdict: NEEDS-FIX: PDF text has 14 × … and 2 × ... cutoffs; pages 3–4 show repeated source cards/quotes and pages 2/7 have large empty lower zones. Report: /Users/milamarty/work/WEB083-PDF-REPORT.md. Screens: /Users/milamarty/work/qa-screens/shots-web083/.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-083","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-28T21:29:30.883Z