Eventos

El sobre de un evento, el microlote que transporta un mensaje de difusión, y todos los tipos de evento con su canal, su etapa y su clase de entrega.

  • Disponibilidad: Planificado
  • Evidencia: Leído del código fuente
  • Referencia

El evento

JSON
{
  "id": "evt_9fK2mQ7x",
  "stream": { "organization": "team-42", "application": "app_Shop0001x", "job": "job_Prep0001x" },
  "sequence": 118,
  "type": "stage.progress",
  "time": "2026-09-19T10:15:02.250Z",
  "data": { "stage": "generate", "done": 41, "total": 96 }
}
Miembro Significado
id Identidad estable del evento. Úsala para descartar duplicados.
stream El ámbito del evento y, por lo tanto, su canal: organization siempre, application y job cuando corresponden
sequence Monótona y sin huecos por canal, a partir de 1
type Uno de los tipos de más abajo
time Cuándo se confirmó el cambio de estado
data Depende del tipo. Los eventos job.* llevan state; los stage.* llevan stage, done y total; los eventos de módulos, cache.hit y retry.scheduled llevan module, y key o attempt cuando corresponde.

Los eventos y los registros nunca contienen credenciales, tokens ni datos de otra organización.

El microlote

Un mensaje de difusión transporta un microlote:

JSON
{ "protocol": "beyond-cdn-events/1", "channel": "job:job_Prep0001x", "events": [] }

Los eventos conservan su orden dentro de un lote. Las notificaciones de progreso y de registros se agrupan durante un intervalo corto para mantener acotados el costo y la distribución; un notificador divide un lote en lugar de superar el límite de tamaño. Los eventos de la clase immediate se envían sin esperar al intervalo.

Todo evento se guarda con su secuencia sea cual sea su clase de entrega. El agrupamiento afecta cuándo te notifican, nunca lo que puedes reproducir.

El puntero

A veces un notificador no puede o no debe enviar un evento. En ese caso difunde un puntero en su lugar, con su propio nombre de evento de difusión, beyond-cdn-pointer/1:

JSON
{ "protocol": "beyond-cdn-events/1", "channel": "job:job_Prep0001x", "sequence": 131, "reason": "oversize" }
Miembro Significado
protocol beyond-cdn-events/1. El puntero es un mensaje aditivo del protocolo de eventos; el nombre del evento de difusión y la ausencia de events lo distinguen de un microlote.
channel El canal al que se refiere
sequence El canal llegó al menos a esta secuencia, y esos eventos no viajaron
reason oversize: el evento no cabe en un mensaje. stale: la notificación esperó más que la antigüedad máxima de notificación, así que un atraso cuesta un puntero por canal en lugar de una avalancha.

Un puntero no es un tipo de evento. No tiene id, ni type, ni secuencia propia, nunca se guarda y una reproducción nunca lo devuelve. Trátalo como un hueco hasta sequence y reproduce desde tu cursor. Un puntero igual o anterior a tu cursor se ignora. No se pierde nada, porque todo evento se guarda pase lo que pase con su notificación.

Tipos de evento

Un notificador nunca retrasa, agrupa ni descarta los eventos inmediatos (immediate). Los eventos agrupados (batched) pueden ir en microlotes.

Trabajos, cola y turnos

Tipo Canales Entrega
job.queued, job.running, job.waiting_turn, job.succeeded, job.failed, job.cancelled, job.limit_exceeded trabajo, aplicación Inmediata
queue.position trabajo Agrupada
turn.started, turn.ended trabajo Inmediata
retry.scheduled trabajo Inmediata

Etapas

Tipo Etapa Canales Entrega
stage.started, stage.succeeded, stage.failed cualquiera trabajo Inmediata
stage.progress cualquiera trabajo Agrupada
graph.pinned resolve trabajo, aplicación Inmediata
graph.exception resolve trabajo Inmediata
package.fetched, package.reused prepare trabajo Agrupada
package.failed prepare trabajo Inmediata
inventory.persisted analyze trabajo, aplicación Inmediata
inventory.unknown analyze trabajo Inmediata
module.queued, module.started, module.generated, cache.hit generate trabajo Agrupada
module.failed, module.limit_exceeded, diagnostics.reported generate trabajo Inmediata
closure.validated, closure.incomplete validate trabajo, aplicación Inmediata

Releases, aplicación y organización

Tipo Canales Entrega
release.ready, release.failed trabajo, aplicación Inmediata
release.candidate, release.activated, release.retired aplicación Inmediata
application.changed aplicación, organización Inmediata
domain.changed, notice.update aplicación Inmediata
plan.changed, credit.granted organización Inmediata
credit.reserved, credit.settled, credit.released organización Agrupada
usage.recorded trabajo, organización Agrupada

Registros y control

Tipo Canales Entrega Significado
log.batch trabajo Agrupada Líneas de registro saneadas: time, level, stage, message
access.revoked todos Inmediata Tu acceso al canal terminó. Consulta Revocación.
resync.required todos Inmediata Ya no puedes confiar en tu posición: carga una instantánea. Consulta Reconexión y reproducción.

Los nombres de los tipos, los estados y los códigos son identificadores y nunca se traducen. Las aplicaciones que los muestran se encargan de localizar sus explicaciones para las personas.