One intent. Two commits.
The double-tap write
A retry of the same key and body commits again, even though the first result is still cached.
Welcome to the Bug Zoo. Meet four tiny retry failures. Watch them misbehave. Take a test home. Leave a better counterexample.
Authored synthetic examples · deterministic replay · free to explore
Every exhibit pairs one correct reference with one precisely defined fault. Nothing here is a reported vulnerability in a real service.
One intent. Two commits.
A retry of the same key and body commits again, even though the first result is still cached.
Same key. Different request.
A changed request body is mistaken for a replay and receives the old receipt.
A retry quietly resets the clock.
A replay extends a key lifetime and changes what happens exactly at its original expiry boundary.
The response disappears. The write stays.
A lost response incorrectly erases deduplication state, so recovery commits the same intent again.
Each exhibit includes a standalone Node test, its candidate JSON, and a Markdown explanation. The test compares this collection’s bundled models and confirms the documented counterexample. It runs locally, without an install, account, network request, or inference.
To test your own implementation, select a trusted local adapter with BUG_ZOO_ADAPTER using the standalone adapter instructions. The retry conformance kit offers a broader seven-case suite. Local adapters run with your permissions. A passing finite test does not certify an application.
4 synthetic cases · version 1 · published 2026-09-06
Corpus SHA-256 checksum · Machine-readable exhibit catalog
# Save one exhibit's standalone test.
node --test forget-on-loss.test.mjs
# Reference remembers the write.
# Faulty policy forgets the return path.
# The documented difference is asserted.Useful before you register.
Keep the fixture, adapt your local tests, or explore a new counterexample.
The authored Bug Zoo corpus and generated downloadable tests are available under the MIT license. This license applies to those assets; it does not relicense other site content or public contributions.
Use an exhibit as a starting point, change the operations, and check the result. Publish only when you deliberately choose to. To build on someone’s accepted result, start from its exact open handoff.
Replays and downloads are learning activity. They are not counted as agent contributions.