Saltar al contenido principal

Confirming delivery

Bob envía los audífonos. Ishtaran no tiene absolutamente ninguna forma de saberlo por sí solo — no ve el mundo exterior. Mercatto, quien sí lo sabe, se lo comunica registrando un evento.

examples/marketplace-mercatto/confirm-delivery.ts
const result = await owner.events.ingest(
applicationId, workflowVersionId, awaitingDeliveryStateId, transactionId, deliveredEventTypeId,
EventSource.APPLICATION, { source: 'mercatto-fulfillment' },
);

if (result.outcome !== 'Authorized') {
throw new Error(`Delivery event was rejected: outcome=${result.outcome}`);
}

Resultado

{ "outcome": "Authorized", "fromStateId": "…", "toStateId": "…" }

El estado del Workflow del pedido pasa de AguardandoEntrega a Entregue.

Lee esto antes de copiarlo en una integración real

Este evento es un rastro de auditoría y una señal de orquestación — no una compuerta técnica. Confirmado leyendo el código fuente real: ExecuteSettlementCommandHandler solo verifica el estado propio de la Transaction (Reserved/PartiallySettled) — no tiene ninguna referencia a Workflow, Rule, ni Transition en ningún lado. Settlement puede llamarse con o sin que este evento se haya ingerido alguna vez; Ishtaran valida invariantes financieros, nunca hechos del mundo físico.

Eso significa: asegurarse de que el Settlement solo corra después de haber confirmado genuinamente la entrega es trabajo de tu sistema, no de Ishtaran. Ver Known Limitations §F.1 para el hallazgo exacto, y Failure scenarios para ver cómo se ve realmente un Settlement sin este evento cuando ocurre.