# Dynamic-proto fuzz seed corpus

Seed inputs for [`fuzz_dyn_proto.py`](../../fuzz_dyn_proto.py). Each
file is one serialised wire payload for the harness's fixed test
schema (one column of each major BigQuery → proto type mapping).

Atheris's coverage-guided mutation expands from these via libFuzzer's
sampling+mutation engine. Invoke with the directory path as a
positional argument:

```
python fuzz/fuzz_dyn_proto.py -max_total_time=60 \
    fuzz/corpus/dyn_proto
```

Seeds intentionally cover:

* `empty.bin` — zero-byte payload (exercises the default-value branch
  of every field).
* `all_default.bin` — empty-message serialisation (exercises the
  presence-tracking branches without any field present).
* `populated.bin` — every column set including repeated fields
  (exercises the full coercion pipeline).
* `long_string.bin` — a 1 KiB string column (exercises the wire-format
  length-delimited reader at non-trivial size).

Seed files are regenerated by the inline Python at the bottom of
`fuzz/corpus/sql_translator/README.md`'s sibling generation script; if
you need to refresh them, run that script. The seeds are committed
because libFuzzer reads the directory at startup and a missing
directory would prevent the harness from running.
