Confirming delivery
Bob envia os fones de ouvido. A Ishtaran não tem absolutamente nenhuma forma de saber disso sozinha — ela não vê o mundo exterior. A Mercatto, que sabe disso, avisa registrando um 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": "…" }
O estado do Workflow do pedido passa de AguardandoEntrega para Entregue.
Leia isto antes de copiar para uma integração real
Esse evento é uma trilha de auditoria e um sinal de orquestração — não um portão técnico.
Confirmado lendo o código-fonte real: ExecuteSettlementCommandHandler verifica apenas o próprio
status da Transaction (Reserved/PartiallySettled) — ele não tem nenhuma referência a Workflow,
Rule, ou Transition em lugar nenhum. O Settlement pode ser chamado com
ou sem esse evento jamais ter sido registrado; a Ishtaran valida invariantes financeiros, nunca
fatos do mundo físico.
Isso significa: garantir que o Settlement só rode depois que você realmente confirmou a entrega é responsabilidade do seu sistema, não da Ishtaran. Veja Known Limitations §F.1 para o achado exato, e Failure scenarios para como é, na prática, um Settlement sem esse evento.