Synthetic observations: 144; split membership only, no quality scores
row_hash: train=102; validation=23; test=19; excluded=0; train/test shared entities=9
entity_hash: train=72; validation=48; test=24; excluded=0; train/test shared entities=0
future: train=72; validation=24; test=24; excluded=24; train/test shared entities=12
unseen_future: train=36; validation=8; test=4; excluded=96; train/test shared entities=0
Temporal gaps and group isolation answer different deployment questions.
