# CVE Replay Corpus
Each subdirectory is one captcha / WAF bypass disclosure that
captchaforge claims to handle. Tests assert captchaforge actually
solves the disclosed scenario, a regression here breaks the
disclosure-coverage contract.
## Layout
```
cve-corpus/
CVE-YYYY-NNNNN/
README.md # disclosure summary + affected vendor + advisory link
page.html # frozen captured page for replay
expected.json # ExpectedOutcome the chain must produce
solver.txt # which captchaforge solver must win
```
The integration test `tests/cve_replay.rs` walks this directory and
asserts:
1. Every CVE has the required four files.
2. Detection on `page.html` returns the kind declared in
`expected.json["kind"]`.
3. When the test environment has network + the relevant vendor key,
the live solve produces `expected.json["outcome"] == "advanced"`.
## Adding a CVE
1. Get the public advisory + capture the offending page.
2. Run `python3 tools/pcap2fixture/convert.py --out-mode cve` (TODO).
3. Hand-write `expected.json` and `solver.txt`.
4. Commit. CI now replays it forever.
## Current status
Empty as of 0.2.31, disclosures land incrementally. The directory
exists so `tests/cve_replay.rs` has a registry it can walk.