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.