WEB-073 · Задача · Инфраструктура · web
[GATE-5] Route passport: вернуть 100% (сейчас 498/500, rc=1) + привязка к прод-артефакту
Закрыт
P1 · важно
ведёт: backup-opus
Суть
Дрейф после baseline 496/496: в дереве 500 роутов, в паспорте 498; неклассифицированы /api/cron/spend-reconcile и /api/factcheck/v2m-runtime-identity; route-passport-check.mjs rc=1; 61 UNPROTECTED остаются. ОСТАЛОСЬ: классифицировать 2 новых роута, прогнать checker до rc=0, ревизия 61 UNPROTECTED (кажд. — осознанный public или закрыть), CI-гейт на неклассифицированное, привязка паспорта к serving-SHA. Код — landing30.
Эпик: WEB-282. Норматив: PROD-MIGRATION-PLAN-R4.md §7. Аудит-срез: M4 MIGAUDIT-REPORT.md (20.08). Owner 20.08: «по гейтам дожимайте все до конца».
## 23.08 — вошёл в посадку, ждёт живой приёмки [эпик WEB-314]
- Груз в проде: НЕ ПОДТВЕРЖДЕНО в serving — l30gates/gates256: первым шагом проверить присутствие в 26116cff (merge-base+греп); артефакт a3c1c9d6…b595; paidReady=true.
- Метод приёмки: passport-прогон 500/500 rc=0 против serving-артефакта.
- Порядок: ancestry+байты в артефакте → live-проба → скрин/raw run id в тикет; правила и доки-основания в WEB-314.
## 23.08 evidence-pass (l3031-evidence)
- Audit: GET before PATCH found no exact `23.08 evidence-pass` section; existing body was preserved unchanged and this is the single appended section.
- Ancestry: `git merge-base --is-ancestor 9094f535 504af77f` rc=0; `git merge-base --is-ancestor 6f619c7a 26116cff` rc=0; exact source=`26116cff032ad8f015e1e2d9cba302e1e8f7ec27`.
- Bytes: exact-tree passport script `node scripts/ci/route-passport-check.mjs` => `route passport check passed: 516 routes covered (app-router 515, pages-router 1).` rc=0. Raw: `web073-route-passport-r2.txt`, SHA-256=`7f6386d7169f84e4dffa537a4b2c97d6abb3b8bc82e13ce3b49ebd9e98207c22`; source/ancestry manifest SHA-256=`5fd780dc8d9f4823ea318dfcbac27c76a8333d75e0a68a084073e4add1946db2`.
- Live: per brief, no invented live route version; passport script was run against exact source. No production mutation.
- Verdict proposal: ACCEPT_READY.
## 2026-08-23 10:56 UTC — живая проверка serving (M4): NEEDS-FIX
Отчёт M4 ~/work/WEB7374-PROOF-REPORT.md (маркер WEB7374_PROOF_DONE), пробы против v4-26116cff (за минуты до посадки 32): требуемый route /api/factcheck/v2m-runtime-identity в serving отсутствует — авторизованный GET даёт 404 NOT_FOUND (негатив: без сессии 401 AUTH_REQUIRED — периметр жив, но роута нет). 500/500 route-passport выполнить не из чего: /live-sha.json с сессией 404. Для закрытия: включить роут в serving-артефакт + опубликовать build-bound passport-манифест. NB: перепроверить против нового v4-4482925 — возможно роут приехал с посадкой 32.
## 2026-08-23 11:35 UTC — re-probe против v4-4482925: 404 сохраняется
M4 (l32accept): одиночный авторизованный GET /api/factcheck/v2m-runtime-identity → 404 {"code":"NOT_FOUND"} и на новой сборке. Роут так и не приехал в serving — нужен деплой роута (кандидат посадки 33) + build-bound passport-манифест.
## 2026-08-23 BOARDSWEEP: IN_PROGRESS-LIVE
- Evidence: updatedAt=2026-08-23T10:12:32.490Z, within 24h; body has current route-passport gate work. No status change.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: in_progress.
Доказательства
[2026-08-25 ~18:30] WEB073_DONE — route passport 100% (ветка web073-route-passport @ 87a4d5a от линии посадки 51 c68f701). На c68f701 discovery нашёл 519 маршрутов, passport содержал 516 (не 2, а 3 непокрытых live routes — новые route-файлы добавлены в serving tree без passport-записей). Добавлены записи в docs/PASSPORT/ROUTE-PASSPORT.json; сигнатуры/discovery не менялись. Чекер node scripts/ci/route-passport-check.mjs: 519/519 (app-router 518, pages 1) rc=0. CI-гейт негативы route-passport-gate.test.ts 11/11 (новый route без записи / удалённый / stale evidence / receipt mismatch → отказ). GATE-5: привязка к serving artifact подтверждена (source c68f7017, l48-salvage, linux-arm64). Оговорка: полный test:migration-gates не критерий (13 baseline env-провалов в worktree — нет next/@auth/tsx). ГОТОВ К ПОСАДКЕ (docs/passport, не задевает activation-манифест → аттестация как посадка 51 + новый artifactSha/sourceCommit). Батч со следующей посадкой. Родня: [[WEB-282]] миграция GATE-5.
[2026-08-25 ~07:30] 🛬 ПОСАДКА 52 СЕЛА (v4-446bcbf) — route passport 519/519 В ПРОДЕ. paidReady=true, attestation.ok, src 446bcbf. Аттестация С ПЕРВОЙ попытки (рецепт отработан: manifest 36d060fa build-захват + estimator/price d962fb63 source, preimage 999Б). Автодокладка в сейф (keep-3: снята посадка 49). → done.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-073","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-25T06:27:17.770Z