# Спека — поправка аудита по факту кода (верификация маршрутов и SSRF)

## Цель

Внести в отчёт и трекер аудита поправку: три пункта, ранее помеченные как P0 «из
модели угроз, в коде не переподтверждено», проверены по реальному коду и оказались
закрытыми. Документы должны отражать факт, а не устаревшую STRIDE-карту. Правки —
только в `docs/`; код/схема/git не трогаются.

## V1 — что подтверждено фактом {#V1}

**Контракт.** По `app/routes/web.php` (актуальный код): `/api/dashboard/summary`,
`/api/managers`, `/api/lead-statuses` — под `auth:sanctum`(+`tenant`); группа
`/api/admin/*` — под middleware `saas-admin` (dev пропускает, prod fail-closed 503);
`/api/webhooks/test` — под `auth:sanctum + tenant`. По `WebhookSettingsController`:
`WebhookUrlGuard::blockReason()` вызывается на сохранении и на тесте, блокирует
cloud-metadata/loopback/RFC1918, URL обязан быть `https://`.

**Конвенция.** Закрытое в коде не остаётся в списке блокеров; переводится в
«закрыто фактом» либо в остаточный пункт (config/edge).

**Критерий.** В отчёте и трекере E9/E18/E20/SSRF помечены как закрытые/смягчённые
с указанием остатка.

## V2 — что остаётся реальным блокером {#V2}

**Контракт.** Реально открыты (подтверждено фактом): F-P1 (нет ретеншена телефонов
лидов — по модели `Deal` и схеме), pg_anonymizer (не установлен), APP_DEBUG/APP_ENV
на боевом `.env.production` (проверить). Остаточные не-блокеры: bypass-флаг и SSO
админки (config/Б-1), DNS-rebind на будущей доставке webhook (edge), rate-limit на
login (P1, проверить throttle-конфиг).

**Критерий.** Вердикт NO-GO сохраняется, но список блокеров пересобран на
подтверждённые пункты.

## V3 — где править {#V3}

**Контракт.** Поправка вносится в отчёт `docs/security/2026-06-17-go-live-security-report.md`
(блок вердикта/угроз) и в трекер `docs/security/2026-06-17-open-items.md` (строки
B3/B4/B5), аддитивно, без слома структуры.

**Критерий.** Оба файла обновлены, прежний текст не повреждён.

```verified-context-json
[
  {"id":"vc1","kind":"EXTRACTED","ref":"app/routes/web.php","anchor":"Go-live: auth:sanctum"},
  {"id":"vc2","kind":"EXTRACTED","ref":"app/app/Http/Controllers/Api/WebhookSettingsController.php","anchor":"WebhookUrlGuard::blockReason"}
]
```
