# Runbook деплоя F-1 (CVE vendor-апдейт на прод)

F-1 (14 CVE на 9 пакетах) запатчен локально (`composer.lock`: laravel v13.15.0,
guzzlehttp/psr7 2.11.0, symfony 7.4-патченые), но прод крутит уязвимые версии (vendor не
пересобран). Прод-паритет app-кода с локальным main подтверждён хешами → деплой узкий:
обновить зависимости на проде. Деплой необратим и идёт в терминале владельца (ssh
liderra-prod) — нужен самодостаточный runbook с pre-flight, бэкапом и откатом.

## Цель

Создать `.md`-runbook, по которому владелец в своём терминале безопасно выкатит
CVE-патч зависимостей на боевой liderra.ru: pre-flight проверки, бэкап для отката,
обновление vendor, smoke-проверка, откат при сбое. Документ; код/прод не трогаются самим
написанием.

## D1. Содержание runbook {#D1}

Runbook содержит секции: (1) pre-flight — здоровье прода (диск, службы), текущие версии
пакетов на проде, фиксация точки отката; (2) бэкап — сохранить `vendor/` и `composer.lock`
прода; (3) доставка — синхронизировать пропатченный `composer.lock` на прод; (4)
обновление — `composer install --no-dev --optimize-autoloader` на проде; (5) smoke —
`composer audit` чисто + `artisan about`/ключевые маршруты + очередь/логи; (6) откат —
восстановить `vendor/`+`composer.lock` из бэкапа. Все команды — через `ssh liderra-prod`,
с путём прод-приложения и пользователем www-data.

## D2. Критерий приёмки {#D2}

Runbook самодостаточен и исполним в терминале владельца без доимпровизации: каждая
команда явная (ssh-обёртка, путь, пользователь), есть точка отката ДО изменений и
проверяемый признак успеха (`composer audit` без advisories на проде). Деплой остаётся
gated: явный «деплоим» + прогон проверок — это исполняет владелец, не Claude.

```verified-context-json
[
  {
    "id": "f1-cve-ref",
    "kind": "EXTRACTED",
    "ref": "docs/superpowers/audits/2026-06-15-portal-tech-audit-findings.md",
    "anchor": "composer update"
  }
]
```
