WEB board

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

[IOS-133] NER 40-forensics: диагностика кэпов/отбраковки per-window

Закрыт P1 · важно ведёт: backup-opus
Суть
1. Суть одной фразой: Диагностика NER в проде (IOS-133) — то же, что WEB-20.
2. Где мы сейчас (13.09.2026): тело пустое, коммитов нет; canary не запускался; NER = трата владельца.
3. Хронология: как WEB-20; 05.09 boardtriage → parked.
4. Карта документов и кода: runbook nc-ner-canary-runbook; memory nc-graph-truth-epic.
5. Остаток: владелец — решение по NER в проде; волна — canary после GO.
6. Критерий закрытия: canary-прогон с цифрами либо решение владельца.

---

## история (тело до 13.09.2026)



## 23.08 board-triage (волна btriage, отчёт BOARD-TRIAGE-REPORT.md на A1; применено координатором)
Запарковано как STALE: body/evidence пусты; старый v4-d641443 не подтверждён. Свежую NER-forensics задачу — новым тикетом.

## 2026-08-23 11:20 UTC — разбор парковки (по запросу owner): почему здесь и что известно
Линия: NER-диагностика из iOS-эпика IOS-133 (планировщик окон/форензика кэпов/type-recall/RAG-evaluator). Припарковано: NER-в-проде = owner-spend (память nc-graph-truth-epic), канарейка по ранбуку nc-ner-canary-runbook не запущена в прод-цикл. Брать только вместе с решением owner о NER-запуске; сами по себе не пустышки — это спецификации диагностики, тело = заголовок+спека в реестре IOS-133.
Починено в
v4-d641443
Лента
2026-08-11T16:26:12.875Z · backup-opus-board-sweep
Мойка 11.08, остаётся review, но принимать НЕЧЕГО: тело тикета пустое, сдачи/комментов нет, в git-истории (git log --all --grep) коммитов с этим ID не найдено. Чек-лист для приёмки: (1) ссылка на патч/отчёт/коммит сдачи; (2) прогон диагностики через admin/ner-canary (нужна авторизованная JWE-сессия @auth/core + caps-env + age-claim — см. runbook); (3) явные ожидания выхода: per-window диагностика кэпов/отбраковки (40-forensics). Если к следующей мойке артефактов не появится — возврат в todo.
2026-09-10T18:55:03.582Z · coordinator
BOARD-WASH-20260910:WAVE-3335
По поручению владельца 18:43Z назначена исполнительская волна 3335 (index), Codex gpt-5.6-luna xhigh, A1. Полная история карточки и база l115c 1ad52e16b доставлены, brief-guard и проверка Git-базы пройдены. Задача: проверить существующую сдачу, устранить остатки, передать бандл и доказательства. Финальная приёмка и посадка остаются за координатором. Ранее отложенная функция не включается; статус parked/backlog сохранён, идёт проверка технического остатка.
КАРТА ДОКУМЕНТОВ: ноут /Users/annakorin/nc-ops-scripts/board-wash-20260910/3335-wash-index-brief.md; A1 /home/wave/waves/inputs/board-wash-20260910/index-tickets.json; ожидаемый отчёт /home/wave/waves/3335WASHINDEX-REPORT.md. Правила обогащения: WEB-449.
2026-09-13T11:01:35.752Z · coordinator
[13.09 11:01Z координатор] Мойка отложенных, волна 3668. Вердикт: ЖДЁТ-ВЛАДЕЛЬЦА. Тот же корень, что WEB-20: пустое тело, canary не запускался.
2026-09-22T18:28:17.758Z · triage-m1
РЕШЕНИЕ=parked
ОСНОВАНИЕ=2026-09-22 проверка: волна 3668 (13.09) — ЖДЁТ-ВЛАДЕЛЬЦА; посадка не подтверждена (body: коммитов нет; v4-d641443 — исторический buildFixed).
ЧТО НУЖНО=разбудить когда владелец решит включать NER в проде; после GO выполнить canary по nc-ner-canary-runbook с цифрами per-window для 40-forensics.
triage-m1 4614
2026-09-22T18:47:24.677Z · coordinator
[22.09 18:47Z координатор] ## Решение владельца 22.09 18:46Z
РЕШЕНИЕ=parked → готовится ЗАПУСК канарейки NER по runbook (владелец: «по НЕР канарейку»), а не закрытие. Следующий шаг: волна с планом/стоимостью канарейки, запуск с цифрами, затем решение по каждому из 20/23/25/26.
2026-09-22T23:09:52.051Z · coordinator
[22.09 23:09Z координатор] ## 22.09 23:08Z — NER-канарейка на бою l115r (runbook 4621, три захода, откат чистый): NER доходит до сохранения и упирается в КОШЕЛЁК QA-принципала

- Заходы 1–2: 403 `origin_boundary_rejected` (WEB075 rule-10: нужен `Origin` = эффективный origin `http://nb.wool2.online` при обращении на 127.0.0.1:3010). Заход 3: HTTP 202.
- Ответ: `status=indexed`, `ner.persisted=true`, `entityCount=40` (кап 40; это прежние сущности июля), `placeCount=2` → `quality=insufficient (large_doc_recall_floor_missed: places 2 < 4)`, `freshness=stale` (отпечаток источника v3, ожидается v4), `ingest.persisted=false skippedReason=runtime-error`.
- Журнал: `[billing][billing_overdraft_blocked] userId=qa-postqa-001 channel=doc_ner model=gpt-5.4-nano: wallet admission denied: spendable after reserve -691233 micros below limit -0 (funded=never)` → `[GRAPH-0341] entity persistence FAILED reason=runtime-error "Insufficient AI funds"`.
- Вывод: конвейер NER на l115r живой (гейты, минт, маршрут, извлечение), но результат канарейки по качеству НЕ получен — QA-кошелёк в минусе (-0,69 USD, никогда не пополнялся) и не пропускает списание doc_ner. Следующий шаг: пополнить/освободить QA-кошелёк штатным инструментом и повторить (стоимость ≈ $0,004/книга при nano).
- Пороги качества (places ≥ 4) и версия отпечатка v4 — отдельные вопросы к WEB-20/23/25 после успешного прогона.
2026-09-22T23:13:29.469Z · coordinator
[22.09 23:13Z координатор] ## 22.09 23:12Z — NER-канарейка l115r ПРОШЛА (после пополнения QA-кошелька 200 кредитами через `POST /api/admin/wallet-grant`, ledger `cmudags3o000ftv8o6z37mj5a`)

| метрика | значение |
|---|---|
| HTTP / ok | 200 / true |
| entities (было) | **53** (40) |
| places (порог 4) | **6** |
| quality | sufficient (minEntities 20, minPlaces 4) |
| freshness | fresh, fingerprint v4 (было stale v3) |
| coverage | covered; 6/6 окон, 36 000 знаков = 16,8 % текста (214 632), budgetDegradation none |
| parsed → verified | 99 → 53 (droppedBySalience 44, byQuote 0, byName 0, supplemental 16) |
| по типам (extracted/verified/final) | person 58/49/41; place 9/2/6 (+6 supplemental); organization 3/2/2; product 2/1/1; concept 20/1/1; event 4/0/0; other 3/0/2 |
| entityCoverage | 3,7 % уникальных слов (170/4534); bands beginning 3,0 % / middle 3,5 % / end 2,2 % |
| каппы | DB+env: budget 0.05, windows 6, maxEntities 40 (диагностика показала maxEntitiesPerSource=60 — проверить, откуда 60) |

- Наблюдения для WEB-20 (coverage planner): 6 окон покрывают 16,8 %; bands измерены. WEB-25 (type recall): events 0/4 и concepts 1/20 срезаны salience — кандидаты на per-type пороги. WEB-23 (40-forensics): кап 40 в июле → сейчас final 53 при maxEntitiesPerSource=60.
- Откат чистый: SystemSetting восстановлены (ENABLE_DOC_NER=true, 4 ключа удалены), `.env.local` восстановлен, обе копии перезапущены. Лог `/root/ner-canary-l115r-20260922T231159Z.log`, ответ `/root/ner-canary-l115r-war-and-peace-*.response.json`.
2026-09-23T12:50:49.566Z · triage-neo
РЕШЕНИЕ=in_progress
ОСНОВАНИЕ=2026-09-22, волна 4621: канарейка NER на l115r прошла, final 53 при старом cap 40, coverage 6/6; линия l115r, свежая работа есть.
ЧТО НУЖНО=разобрать расхождение cap 40 и maxEntitiesPerSource 60 и зафиксировать 40-forensics критерий; triage-neo 4713
2026-09-23T16:42:22.900Z · coordinator
[23.09 16:42Z координатор] ## 4768 (M1, Luna) — в работе: планировщик окон с offsets/coverage%/band и явной деградацией к start/middle/end (WEB-20) + per-window forensics отбраковки и единый потолок сущностей вместо «cap 40 vs maxEntitiesPerSource 60» (WEB-23); тесты на числах канарейки 4621 (6 окон, 16,8 %, 53/40).
2026-09-23T17:05:07.347Z · coordinator
[23.09 17:05Z координатор] ## 4768 (M1, Luna) — GO: диагностика NER на каждое окно — `offsetStart/offsetEnd/chars/coveragePct/band` + per-window forensics `candidates/accepted/rejected` с причинами (dedupe/typeFilter/confidence/cap); при нехватке бюджета — явная деградация к start/middle/end (`degradedTo=bands`); единый источник правды потолка — `DOC_NER_MAX_ENTITIES_PER_SOURCE` (диагностика печатает `capSource/capValue/truncatedBy`); «cap 40» из канарейки — показание прибора/тестовый override, литерала 40 в коде NER нет. Тесты на числах канарейки 4621 (214 632 знака, 6 окон = 16,8 %, 53 при cap 40 → rejected.cap=13) 3/3; область 94/94; typecheck 0. Патчи (2) наложены на A2, ветка `l115s-web20-web23-ner-diag`. Статус → в ревью; в сводное дерево после ревью.
2026-09-25T08:42:07.270Z · coordinator
[25.09 08:42Z координатор] # Ready board comment — WEB-23

2026-09-25 — POST-QA all9 `879094713e`: **CLOSE**.

Per-window cap forensics теперь видны: runtime diagnostics вокруг `src/lib/intelligence/autoTagService.ts:955+`, regression `src/lib/intelligence/__tests__/autoTagService.test.ts:471` доказывает 53→40 и rejected=13. Коммит `86502b521`; compliant-runner NER report: 56/56 pass. Наш Vitest config отфильтровал эти пути (RC=1/0 collected), журнал и точная команда — в `tests.md`.

Старая v4 карточка была parked; live canary/owner spend — отдельный остаток, не code gap. Новый агент: WEB-449 → этот комментарий → cap test/diagnostic; бой и секреты не трогать.


Проверка координатора (09:5xZ, all9 879094713e, M1): перезапуск тестов 4982 правильным раннером (node --import tsx --test, Node 22): тесты тикета на all9 зелёные (4982 гонял vitest, который их не собирает). CLOSE подтверждён.
Воркер
не проверен 3335-wash-index A1 движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-25T08:42:42.614Z