Traducción. Autoritativo: ../../adr/adr-013-ingestion-pipeline.md.
Decisión
POST /v1/core/track|identify|batch: autenticar → validar con Zod → rate limit en Upstash → encolar
(QueuePort) → 202 con el id del evento. p95 <100 ms. El procesador (idempotente por processed_jobs
más la idempotency_key del evento): resolución y upsert de identidad → append en la
core.tracked_events particionada → evaluación incremental de segmentos → matching del motor de
reglas → efectos → outbox. Colocalización de la región de Vercel con la de Supabase; conexiones
pooled (modo transacción); atributos calientes promovidos a columnas; predicados de clave de
partición obligatorios.
Consecuencias
- La latencia de ingesta es independiente del costo de procesamiento; contrapresión por profundidad de cola. − La lectura tras escritura es eventual (documentado: las respuestas de track son 202, no 200).