chore(mera-public): isolation guard + favicon + Caddy handle (#2631) #2644

Merged
bot-backend merged 1 commit from fix/mera-public-isolation-guard into main 2026-08-05 06:20:41 +00:00
Collaborator

Summary

#2631: заявленная утечка /api/v1/me с публичного лэндинга — в текущем коде не воспроизводится. Аудит: next build + standalone-сервер + разбор app-build-manifest → chunk-split #2545 (GuardedRoute за next/dynamic) чист, ни один чанк публичного роута не содержит /api/v1/me. Live-проверка meraocenka.ru: во всех 12 чанках лэндинга строки нет. Репорт issue почти наверняка ловил stale-образ (rapid-merge trap, задокументирован в .claude/rules/tradein.md).

Чтобы инвариант не отрегрессил молча — выполняем DoD:

  • scripts/check-mera-public-isolation.mjs — source-level guard: BFS по статическим import'ам от корневого layout + mera-public/**; фейлится с цепочкой импортов, если достигнут useMe/lib/api/lib/sessionId/isPathAllowed/GuardedRoute (вне dynamic). Zero deps. Проверен инъекцией нарушения (поймал Faq.tsx → lib/useMe.ts, затем реверт).
  • CI: blocking-шаг в frontend-checks (ci-tradein.yml).
  • favicon.ico (мульти-размер, брендовые токены) + Caddy handle /favicon.ico в периметре meraocenka.ru (allowlist-404 резал его до Next; rewrite на basePath-путь в стиле корневого handle).

Test plan

  • type-check / lint / build чисто; guard проходит на чистом дереве, фейлится на инъекции
  • live: 12/12 чанков без /api/v1/me
  • post-deploy: curl -I https://meraocenka.ru/favicon.ico → 200; smoke-mera-perimeter зелёный (allowlist не расширен сверх favicon)

Refs #2631

## Summary **#2631**: заявленная утечка `/api/v1/me` с публичного лэндинга — **в текущем коде не воспроизводится**. Аудит: `next build` + standalone-сервер + разбор `app-build-manifest` → chunk-split #2545 (`GuardedRoute` за `next/dynamic`) чист, ни один чанк публичного роута не содержит `/api/v1/me`. **Live-проверка meraocenka.ru: во всех 12 чанках лэндинга строки нет.** Репорт issue почти наверняка ловил stale-образ (rapid-merge trap, задокументирован в `.claude/rules/tradein.md`). Чтобы инвариант не отрегрессил молча — выполняем DoD: - **`scripts/check-mera-public-isolation.mjs`** — source-level guard: BFS по статическим import'ам от корневого layout + `mera-public/**`; фейлится с цепочкой импортов, если достигнут `useMe`/`lib/api`/`lib/sessionId`/`isPathAllowed`/`GuardedRoute` (вне dynamic). Zero deps. **Проверен инъекцией нарушения** (поймал `Faq.tsx → lib/useMe.ts`, затем реверт). - **CI**: blocking-шаг в `frontend-checks` (ci-tradein.yml). - **favicon.ico** (мульти-размер, брендовые токены) + **Caddy `handle /favicon.ico`** в периметре meraocenka.ru (allowlist-404 резал его до Next; rewrite на basePath-путь в стиле корневого handle). ## Test plan - [x] type-check / lint / build чисто; guard проходит на чистом дереве, фейлится на инъекции - [x] live: 12/12 чанков без `/api/v1/me` - [ ] post-deploy: `curl -I https://meraocenka.ru/favicon.ico` → 200; smoke-mera-perimeter зелёный (allowlist не расширен сверх favicon) Refs #2631
bot-backend added 1 commit 2026-08-05 06:10:23 +00:00
chore(mera-public): isolation guard + favicon + Caddy handle (#2631)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Successful in 1m15s
CI Trade-In / backend-tests (pull_request) Successful in 2m51s
deff85d8b6
Аудит заявленной утечки /api/v1/me: в текущем исходнике не воспроизводится —
next build + standalone-сервер + разбор app-build-manifest показали, что
chunk-split #2545 (GuardedRoute за next/dynamic) чист, ни один чанк
публичного роута не содержит /api/v1/me. Live-проверка meraocenka.ru
подтверждает: во всех 12 чанках лэндинга строки нет. Репорт issue почти
наверняка ловил stale-образ (rapid-merge trap, .claude/rules/tradein.md).

Чтобы инвариант не отрегрессил молча — source-level guard
(scripts/check-mera-public-isolation.mjs, BFS по статическим import'ам от
корневого layout + mera-public; dynamic import не следуем — семантика
webpack-чанков; проверен инъекцией нарушения) + шаг в CI frontend-checks.

favicon.ico (мульти-размер, брендовые токены) + Caddy handle /favicon.ico
в периметре meraocenka.ru (allowlist-404 резал его до Next).

Refs #2631
bot-backend merged commit 8e909faca8 into main 2026-08-05 06:20:41 +00:00
bot-backend deleted branch fix/mera-public-isolation-guard 2026-08-05 06:20:41 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2644
No description provided.