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.
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.