Synthetic source groups → UTF-8 normalization → empty-record filter → source-group split ├─ validation: reviewed source groups └─ test: held-out source groups Split purpose: evaluation only; no training split. Leakage control: related records stay in the same group. Seed/counts: must be recorded for the actual run. Validation: pending.