Skip to main content
Estado: Propuesto · Refs: DEC-D7, DEC-B8
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).