IOS-086 · Задача · UX · web
FC: маршрутизация провайдеров по типу клейма + дефолты участия
Закрыт
P1 · важно
ведёт: —
эпик: IOS-083
Суть
Полиграф Ф1 §2.2 + находка приёмки: (1) МАРШРУТИЗАЦИЯ: классификатор типа клейма (новостной/научный/исторический/числовой/цитата) тем же вызовом что извлечение; новостной → веб-провайдеры, CROSSREF ВЫКЛЮЧЕН для новостей; научный → crossref/sem_scholar. (2) ДЕФОЛТЫ УЧАСТИЯ: у аккаунта без настроек шестерёнки в прогоне участвовал ТОЛЬКО crossref, хотя запрошены были google_factcheck/google_cse/perplexity/wikipedia, серверные env-ключи стоят, wikipedia вообще keyless (пруф: run cmsbuimlc003y). Разобрать семантику: requested ∩ enabled; env-ключ должен включать провайдера для ВСЕХ пользователей, keyless — всегда доступны. (3) google_factcheck хит по базе ClaimReview = мгновенный вердикт с атрибуцией (ключ живой: earth is flat → 10 False от USA Today/AAP).
Чем закрывается (приёмка)
Плоская земля под пустой учёткой → REFUTED (google_factcheck+второй домен); новостной клейм не получает crossref-мусора; научный получает crossref.
Лента
2026-08-02T13:59:26.371Z · fc-fixImplemented IOS-086 local-only. Patch: /Users/milamarty/Downloads/FC-FIX-086.patch
Verify: /Users/milamarty/.agent_runs/IOS-086/verify.json
Scope:
- Provider participation: drawer sends requested providerIds; server runnable filtering now uses provider.isEnabled() (server env/keyless) or BYOK keys.
- Claim extraction now returns claimDetails.category in the same LLM extraction call while preserving claims:string[] compatibility.
- Routing: news/current-event claims route to web providers and exclude Crossref/SemanticScholar; scientific claims route to academic providers.
- Google Fact Check ClaimReview textualRating now creates direct marked evidence; pipeline resolves that before LLM quorum neutralization.
Checks:
- npx tsx --test src/lib/factcheck/__tests__/providerRouting.test.ts src/lib/factcheck/__tests__/providerParticipation.test.ts src/lib/factcheck/__tests__/googleClaimReviewDirectVerdict.test.ts src/lib/factcheck/providers/__tests__/googleFactCheck.test.ts src/app/api/factcheck/run/__tests__/requestPolicy.test.ts -> exit 0 (14 pass)
- targeted npx eslint on IOS-086 files -> exit 0
- cd /tmp/fcfix086-base && git apply --check /Users/milamarty/Downloads/FC-FIX-086.patch -> exit 0
- factcheck-path tsc filter produced no matches (rg exit 1 means no factcheck errors)
- pnpm type-check -> exit 2, existing broad repo TS errors outside IOS-086 paths
- pnpm lint -> exit 1, existing broad repo lint errors outside touched files
- pnpm build -> exit 1 after Next compile; postbuild failed with LIVE_SHA_SOURCE_CONFLICT (HEAD 55dd7921bdc59ad3731f06409499648a09a0d417 vs archived stamp fff06c22e961c4761972ffc9df4ee4d35760ddb9)
No push, no deploy.
2026-08-02T14:25:44.980Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T14:35:50.507Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T14:56:36.838Z · fc-fixREBАSE v2 готов поверх свежего канона serving v4-f0c9815 (/tmp/canon-f0c.tar.gz).
Patch: /Users/milamarty/Downloads/FC-FIX-086v2.patch
SHA256: 500ee71025e63cda97cdc717ea6f7aa5c6e563bac1ca8f6ba532c27fd316b98e
Verify: /Users/milamarty/.agent_runs/IOS-086/verify-v2.json
Base worktree: /Users/milamarty/Projects/fc-rebase
Base commit: a179fbf64628235e9412db602608e3f6d642efcf
Proof:
- git apply --check /Users/milamarty/Downloads/FC-FIX-086v2.patch on fresh base worktree -> exit 0
- npx tsx --test providerRouting/providerParticipation/googleClaimReviewDirectVerdict/googleFactCheck/requestPolicy -> exit 0, 12 pass
- focused eslint on 086 files -> exit 0
- integration order check: 086v2 then 088v2 -> exit 0; 088v2 then 086v2 -> exit 0
Note: f0c canon has no Wikidata provider, so 086v2 routes only canonical existing provider IDs: news/current-event -> web without Crossref/Semantic Scholar; scientific -> Crossref/Semantic Scholar. No push, no deploy.
2026-08-02T15:01:03.954Z · вахтёрВоркер fc-fix2 объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T15:06:06.614Z · вахтёрВоркер fc-fix2 объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T15:11:08.377Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:19:49.902Z · fc-fixFC-FIX-086v3 ready over canon-f0c-plus. Patch: /Users/milamarty/Downloads/FC-FIX-086v3.patch. SHA256: 73bbd598ecb2ac2e8b2ca4313dbd68901f439a2662eaa82e44da00c6b5c232d5. Base: /tmp/canon-f0c-plus.tar.gz, commit 50d5902335d77906a8dc4daf4c42c2e8c8193530. Verify: /Users/milamarty/.agent_runs/IOS-086/verify-v3.json. Checks: git apply --check exit 0; focused tsx tests 12 pass / 0 fail exit 0; focused eslint exit 0; git diff --check exit 0. No push, no deploy.
2026-08-02T15:21:13.913Z · вахтёрВоркер fc-fix2 объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 0 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T15:26:17.096Z · вахтёрВоркер fc-fix2 объявил, что работы у него нет («очередь пуста»), хотя тикет открыт. Панель шевелится 5 мин назад — то есть он ЖИВ, но НЕ РАБОТАЕТ.
2026-08-02T15:31:18.723Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:36:21.563Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:41:23.366Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:46:25.317Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:51:28.613Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T15:56:30.470Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:01:32.289Z · вахтёрВоркер fc-fix2 ЖДЁТ УЖЕ 30 мин подряд и не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:01:58.998Z · backup-opus086v3 посажен (v4-4228289), но ЖИВАЯ приёмка красная: пустая QA-учётка, клейм «Париж — столица Германии» → providersAttempted=[internal] (failed), 0 evidence, not_found. Дефолты участия (keyless=всегда, env-key=всем) НЕ работают; плюс internal не видит источник активной тетради (internalSourcesCount=0 при 1 текстовом источнике). Лог: factcheck.run.completed 16:58:36, runId cmsbzia5b000rlad638igr4pg. Плоская земля → refuted 0.98 — но это кэш известной лжи (074), живой конвейер не трогает.
2026-08-02T16:09:09.630Z · fc-fixFC-FIX-086v4 ready over /tmp/canon-4228289-plus.tar.gz (base 5c1ffe5cd3549e2e785222c371c5866b67ee55e2). Patch: /Users/milamarty/Downloads/FC-FIX-086v4.patch. SHA256: dc106644ba558df6968371e04c808ac2c0ff8c3a22fba0c45ed6104870e5caf3. Fixes red live proof cmsbzia5b000rlad638igr4pg: omitted providerIds no longer default to [internal], server builds default from enabled keyless/env-keyed providers; Internal RAG now falls back to bounded Source excerpts for fresh/unindexed notebook sources. Proof: /Users/milamarty/.agent_runs/IOS-086/verify-v4.json. Checks: git apply --check exit 0; focused IOS-086 tsx tests 13 pass / 0 fail exit 0; focused eslint exit 0; git diff --check exit 0; internalRag import smoke exit 0. No push, no deploy.
2026-08-02T16:11:36.822Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:16:39.535Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:21:42.382Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:36:47.514Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:41:50.059Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:46:52.016Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:51:55.468Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T16:56:57.242Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:01:59.268Z · вахтёрВоркер fc-fix2 объявил БЛОКЕР или ждёт сборочный слот. Жив, но не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:07:01.123Z · вахтёрВоркер fc-fix2 ЖДЁТ УЖЕ 30 мин подряд и не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:12:04.204Z · вахтёрВоркер fc-fix2 ЖДЁТ УЖЕ 35 мин подряд и не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:17:06.432Z · вахтёрВоркер fc-fix2 ЖДЁТ УЖЕ 40 мин подряд и не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:22:09.662Z · вахтёрВоркер fc-fix2 ЖДЁТ УЖЕ 45 мин подряд и не продвигается. Последняя строка: gpt-5.5 high · ~/Projects/fc-fix
2026-08-02T17:25:41.390Z · backup-opusЗАКРЫТ на v4-9775004: пустая QA-учётка, «Париж — столица Германии» → REFUTED, 14 эвиденсов, зовутся все 9 провайдеров, succeeded internal+jina+perplexity+searxng (журнал 18:24:58, durationMs 73838). Дефолты участия + маршрутизация + direct ClaimReview работают. Остатки вынесены: IOS-094 (молчаливые фейлы 4 провайдеров), IOS-095 (прогон >60с → nginx 504).
2026-08-02T17:38:31.014Z · onepage-runONEPAGE owner regression gate RED on prod serving v4-9775004. Report: /Users/milamarty/Downloads/ONEPAGE-RUN-20260802.md. Main blockers: factcheck positive and contradicted claims returned nginx 504; Deep Research documents completed with context.sourceCount=0 despite selected saved source; Web/Both Deep Research streams did not complete.
2026-08-03T00:27:33.354Z · backup-opusONEPAGE-3 контрольный: гейт GREEN полностью (v4-982bfd9) — все API-проверяемые пункты PASS, включая сохранение DR-отчёта после reload. Отчёт ONEPAGE-RUN-3.md. Эпик полигона закрыт по чек-листу owner-а.
Воркер
не проверен
fc-fix2
M4
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
ssh -t poolpooly@192.168.1.74 "ssh -t milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui attach -t fc-fix2'"
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
ssh poolpooly@192.168.1.74 "ssh milamarty@192.168.1.114 '/opt/homebrew/bin/tmux -L gui capture-pane -p -S -5000 -t fc-fix2'" | less -R
Если при входе tmux покажет «.config/tmux/tmux.conf: Permission denied» — нажми q, это косметика: каталог ~/.config на M4 принадлежит root, сессия работает. Лечится один раз с паролем на M4: sudo chown -R milamarty:staff /Users/milamarty/.config && chmod 755 /Users/milamarty/.config
Обновлён
2026-08-02T17:25:41.279Z