# Notas sueltas / aprendizajes

> **TODO (fase 2+):** esto es un scratchpad estructurado, no un
> playbook — va creciendo con notas cortas a medida que aparecen. Las
> entradas de abajo son semillas reales extraídas de incidentes ya
> documentados; expandir cada una con más contexto en fases siguientes.

## Qué haría distinto

- **Fijar `TUNNEL_TRANSPORT_PROTOCOL=http2` desde el día uno**, no
  después de un incidente — QUIC/UDP sobre NAT doméstico fue un problema
  predecible en retrospectiva. Ver [ADR 0003](../decisiones/0003-por-que-http2-sobre-quic-tunnel.md).
- **Separar siempre "chequeo de disponibilidad" de "migraciones"** en
  init containers distintos, y que el chequeo use el mínimo de
  parámetros posible (host/puerto/usuario/db) en vez de reusar una URI
  de conexión pensada para la app. Confirmado como decisión correcta en
  el [incidente de crashloop de Medusa](../playbooks/incidente-crashloop-medusa.md).

## Gotchas de Medusa v2

- El Store API (`/store/products`, validado por `StoreGetProductsParams`,
  `.strict()`) **no acepta** `currency_code` ni `country_code` para
  resolver precios calculados — solo `region_id` explícito. Ver
  [playbook de precios](../playbooks/incidente-precios-medusa.md).
- El campo `thumbnail` de un producto **no se autocompleta** a partir
  del array `images` — hay que setearlo explícito desde el Admin si el
  frontend lo usa como imagen hero en listados.

## TODO

- Notas sobre MinIO / S3 provider.
- Notas sobre el subscriber `revalidate-storefront.ts` y sus límites.
- Qué automatizaría si volviera a montar este lab desde cero.
