# Bug Zoo v1

Four tiny retry failures to replay, reuse as regression tests, and reduce into sharper counterexamples.

Authored synthetic exhibits for Retry Proof v1. These are not observed vendor bugs, outside contributions, concurrency tests, or a certification of an implementation.

## Downloads

- [Catalog](https://boner.pics/bug-zoo/catalog.json)
- [Complete corpus](https://boner.pics/bug-zoo/corpus.json) and [SHA-256 checksum](https://boner.pics/bug-zoo/corpus.sha256)
- [The double-tap write](https://boner.pics/bug-zoo/duplicate-write.md): [standalone test](https://boner.pics/bug-zoo/duplicate-write.test.mjs), [candidate JSON](https://boner.pics/bug-zoo/duplicate-write.json)
- [The identity mix-up](https://boner.pics/bug-zoo/body-blind.md): [standalone test](https://boner.pics/bug-zoo/body-blind.test.mjs), [candidate JSON](https://boner.pics/bug-zoo/body-blind.json)
- [The moving deadline](https://boner.pics/bug-zoo/sliding-expiry.md): [standalone test](https://boner.pics/bug-zoo/sliding-expiry.test.mjs), [candidate JSON](https://boner.pics/bug-zoo/sliding-expiry.json)
- [The vanished acknowledgment](https://boner.pics/bug-zoo/forget-on-loss.md): [standalone test](https://boner.pics/bug-zoo/forget-on-loss.test.mjs), [candidate JSON](https://boner.pics/bug-zoo/forget-on-loss.json)

## Run a standalone test

Use Node.js 24 or later. Each downloaded test contains the finite contract, embedded reference model, and hand-specified golden traces. Download and inspect a file before executing it. No dependency installation is required.

```sh
node --test duplicate-write.test.mjs
```

By default, the two bundled self-tests run and the adapter test is explicitly skipped. This checks the fixture, not your implementation. No network requests, writes to the site, registration, inference, tracking, or automatic publication occur in the default test. Node's runner exits nonzero when a test fails.

## Check your own trusted local adapter

Choose a trusted local .mjs, .js or .cjs file exporting either a default object or named reset() and step(operation, { signal }) functions. reset({ signal }) clears all modeled state before the case. step returns exactly { status, receipt, committedWrites }; promises are supported. Lost responses return null status and receipt after modeled execution. The committed write count must be independently measured by your adapter, not copied from the expected trace.

POSIX shells:

```sh
BUG_ZOO_ADAPTER=./trusted-local-adapter.mjs node --test duplicate-write.test.mjs
```

PowerShell:

```powershell
$env:BUG_ZOO_ADAPTER = './trusted-local-adapter.mjs'
node --test duplicate-write.test.mjs
Remove-Item Env:BUG_ZOO_ADAPTER
```

Only a selected local file path is accepted; URLs and network-share paths are rejected. The runner performs one reset and the exact exhibit sequence in a Worker with a 3000 ms wall deadline including import. Each method receives a cancellation signal. Invalid observations, mismatches, import failures and timeouts fail the test; raw adapter logs and exception details are suppressed.

The Worker is not a sandbox. Your selected adapter executes with your local permissions and can perform whatever operations its code contains. Use a local test implementation and synthetic inputs. The generated runner does not upload results. Passing this finite sequential example is not a proof about concurrency, crashes, distributed transactions, arbitrary inputs, or a real vendor API.

## Reduce a failure

Each authored exhibit contains at least one removable operation. Delete an operation while preserving the other fields, timestamps and order; keep a visible difference between the reference and named faulty model. [Open Bug Zoo](https://boner.pics/bug-zoo/) for a visual replay, then follow an exhibit contribution link to edit and check a reduction locally in the workbench. Candidate JSON contains { artifact, parentHash: null }: an authored exhibit is not a published receipt. Importing or loading a candidate never publishes it. Any deliberate publication uses the existing workbench, exact checks, saved recovery state and explicit operator/publication consent.

## Version and reuse

Version 1 was published on 2026-09-06. corpus.sha256 hashes the exact UTF-8 bytes of corpus.json, including its final newline; catalog.json repeats that digest. Fixed metadata and fixed construction order make regeneration deterministic.

[MIT license](https://boner.pics/bug-zoo/LICENSE.txt). This license covers only the authored Bug Zoo dataset, its generated downloadable tests (including their embedded reference implementation), and their accompanying documentation in this directory. It does not license the rest of the site or repository, third-party references, or user contributions.

## Runtime references

- [Node.js test runner](https://nodejs.org/docs/latest-v24.x/api/test.html)
- [Node.js Worker threads](https://nodejs.org/docs/latest-v24.x/api/worker_threads.html)
