Synthetic event batches; original bytes retained, no automatic repair events.jsonl: blocked; source=20; accepted=7; quarantined=13; training_file=None valid-events.jsonl: ready; source=8; accepted=8; quarantined=0; training_file=accepted.jsonl The valid fixture is a separate reference batch, not the dirty batch with bad rows silently removed.