engines: [postgres, mysql, mssql, mongo]
scenarios:
- id: fuzz_config_yaml
what: "the operator-authored config loader (Config::from_yaml) — engine-agnostic (one parser); a garbled/hostile file must Err, never panic"
postgres: { test: config_from_yaml }
mysql: { test: config_from_yaml }
mssql: { test: config_from_yaml }
mongo: { test: config_from_yaml }
- id: fuzz_cdc_wire_decode
what: "decoding a CDC change record off the replication wire into typed cells"
postgres: { test: pg_test_decoding }
mysql: { na: "binary binlog events are decoded by the mysql_common crate, not Rivet code — there is no Rivet-owned text/byte parser to fuzz" }
mssql: { na: "change-table rows arrive as tiberius typed ColumnData (binary protocol, driver-decoded); Rivet only maps the enum in cell_to_rivet" }
mongo: { na: "BSON change events are deserialized into typed events by the mongodb driver, not Rivet code" }
- id: fuzz_checkpoint_token_decode
what: "decoding the persisted resume/checkpoint token from an untrusted, corruptible / hand-editable file"
postgres: { na: "LSN read by panic-safe field access from the JSON (.get(\"lsn\").as_str()); no bson-backed type deserialization" }
mysql: { na: "binlog coords read by panic-safe field access (.get(\"file\") / .get(\"pos\")); no bson-backed type deserialization" }
mssql: { na: "from-LSN read by panic-safe field access; no bson-backed type deserialization" }
mongo: { test: mongo_resume_token }