# F-106 — QA gate: APPROVED

## Ejecutado
- `npm run typecheck` (backend): OK.
- `npx tsc --noEmit` (apps/admin): OK.
- `npm run build` backend: OK.
- `npm run build` admin (Next.js): OK.
- Migración `036_order_tracking_number`: aplicada (`Migrations complete!`), idempotente (`IF NOT EXISTS`).
- `./scripts/verify.sh`: verde.
- `monolith.sh prod restart`: backend/frontend/admin/storefront → HTTP 200.
- OpenAPI: `PUT /orders/{id}/items` registrado; `trackingNumber` presente en esquema de transición admin.

## Casos verificados (código + smoke)
- Transición a SHIPPED sin tracking → 422 TRACKING_NUMBER_REQUIRED.
- Edición de artículos con variante inexistente → 422 VARIANT_NOT_FOUND; sin precio → 422 PRICE_MISSING.
- Email sin SMTP configurado → `notified:false` + mensaje, pedido transiciona igualmente.
