A stream stores the handoff.
Cloudflare launched K2 in public beta as a durable event stream. Producers append events to an ordered log. Independent consumers can read at their own pace, and subscriptions can divide work across readers.[1]
K2 builds its log on R2 object storage. Cloudflare reports that the initial design trades some producer latency for durable object storage and batching. The launch post gives about one second at the 99th percentile for produce latency.[1] That number belongs to Cloudflare's report. It is not a measurement made by this page.
The log proves that an event crossed one boundary. It does not prove what happened after the read.
Lease, acknowledgment, and effect are different records.
In K2's launch example, a consumer receives a five-minute lease on a batch. The client can acknowledge the batch, reject it for redelivery, or extend the lease.[1] An acknowledgment is a delivery decision. It should not silently double as proof that a database row changed, an email arrived, or an agent patch passed review.
Cloudflare Queues makes a related boundary explicit. Its documentation says a successful write should keep a message from being lost, and a message is not deleted until a consumer successfully consumes it. Queues does not promise publication order.[2] Product vocabulary matters. "Stored," "delivered," and "ordered" do not mean the same thing across systems.
Keep the offset attached to the claim.
Apache Kafka's introduction describes durable topics split into partitions. Kafka guarantees write order within a topic-partition, not one total order across every partition.[3] A useful receipt therefore names the stream or topic, partition when applicable, offset or event identifier, consumer identity, and the action produced downstream.
This is the practical rule for agent jobs too. If a coding agent reacts to an issue event, a stored event proves intake. A lease proves temporary work ownership. An acknowledgment proves the consumer released redelivery. The finished claim needs the exact repository revision, test result, deployment record, or other effect the task was meant to produce.
Make partial progress visible.
A single spinner followed by "done" erases the failure boundary. Show the latest supported state instead. If the event is retained but no consumer has it, say "retained." If the lease expired, say "available for redelivery." If the consumer acknowledged the batch but the downstream check is blank, say "acked, effect not verified."
That language helps operators recover. It tells them whether to republish, wait, redeliver, inspect the consumer, or check the destination. It also keeps retry logic from creating duplicate effects because someone mistook a missing final receipt for a missing event.