IOS-076 · Дефект · UX · web
FC P1: выделенный фрагмент из редактора — ложный отказ сверки пассажа
Закрыт
P1 · важно
ведёт: fc-fix
эпик: IOS-067
Суть
Owner: выделить фразу в РЕДАКТОРЕ документа → mouseover-меню Verify → «The selected passage no longer matches the opened source. Reopen the source and select the text again» (скрин 11.13). Пайплайн падает на шаге 1 (Твердження витягнуті ⊗). Гипотеза: гард сверки выделения с сохранённым источником сравнивает сырые строки: редакторский HTML/entities/пробелы vs плоский контент источника; несохранённые правки редактора тоже дают расхождение. ФИКС: нормализация обеих сторон (strip HTML, collapse whitespace, NFC) + при несовпадении НЕ падать, а честно проверять выделенный текст как claim с пометкой «источник изменился». Найти строку ошибки: grep no longer matches в src/.
Чем закрывается (приёмка)
Выделение в редакторе → Verify проходит пайплайн и даёт вердикт; при реально изменённом источнике — работает с пометкой, не отказ.
Починено в
v4-65e192b
Лента
2026-08-02T10:34:07.593Z · fc-fixSCOPE: IOS-076 selection/source mismatch normalization + warning fallback
BASE: 468890260073000081de968c726a45e3dd889cec (agent/fc-fix-ios075-ios076-20260802)
CHANGES: src/lib/factcheck/sourceRead.ts; src/app/api/factcheck/run/route.ts; src/lib/factcheck/runResponse.ts; src/components/factcheck/FactcheckPanelDrawer.tsx; messages/en.json; messages/ru.json; messages/uk.json; src/lib/translations.ts; sourceRead/sourceStale tests
PATCH: /Users/milamarty/Downloads/FC-FIX-076.patch
PROOF: ./node_modules/.bin/tsx --test tests/factcheck/pipeline.independentSourcesCount.test.ts tests/factcheck/sourceRead.normalization.test.ts tests/factcheck/sourceStaleUx.test.ts tests/factcheck/run-response.test.ts src/lib/factcheck/__tests__/verdictEngine.test.ts src/lib/factcheck/__tests__/sourceRead.contract.test.ts src/lib/factcheck/__tests__/sourceRead.test.ts -> exit 0, 32 pass / 1 skipped (module mocks flag). Scoped eslint on changed runtime/tests -> exit 0. git diff --check -> exit 0.
NOTES: selection compare now strips HTML, decodes common/numeric entities, collapses whitespace, NFC-normalizes, then substring matches. If normalized text still does not match the opened source, route no longer returns ORIGIN_SOURCE_MISMATCH; it runs factcheck on selected text and returns warnings with localized drawer copy: "The opened source changed. Verifying the selected text directly."
RISK/BLOCKERS: full pnpm lint exits 1 on pre-existing unrelated repo lint errors; build/browser not run because another worktree has next dev running and local resource guard forbids parallel heavy Next runtime/build.
2026-08-02T10:44:02.321Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T10:49:06.204Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T10:54:08.098Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T11:04:11.953Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T11:09:15.142Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T11:14:17.123Z · вахтёрВоркер fc-fix объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T11:19:19.721Z · вахтёрВоркер fc-fix объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T11:21:24.686Z · backup-opusПРИНЯТО И ЗАКРЫТО. Прод v4-65e192b: нормализация выделения села (тесты в комплекте); при реальном изменении источника — честная проверка с пометкой вместо отказа. Финальная проверка глазами owner-а: выделить фразу в редакторе → Verify → вердикт вместо «no longer matches».
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/ios/assign -H 'content-type: application/json' \
-d '{"issueId":"IOS-076","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-02T11:21:24.764Z