As per docs (https://rivet.dev/docs/actors/queues/), messages are removed from queue storage when they are received, not when they are completed. This poses a problem when the actor crashes immediately after receiving an event and crashing before it could complete the next step inside a workflow. complete() provides request/reply semantics but truly durability and replayability need ack/nack otherwise durability claim of using workflows is also incorrect.
As per docs (https://rivet.dev/docs/actors/queues/), messages are removed from queue storage when they are received, not when they are completed. This poses a problem when the actor crashes immediately after receiving an event and crashing before it could complete the next step inside a workflow. complete() provides request/reply semantics but truly durability and replayability need ack/nack otherwise durability claim of using workflows is also incorrect.