Synthetic user-return cohort; features use arrival time, labels use readiness time
2026-01-11T12:00:00Z: eligible=2; excluded=4; reasons={"label_missing": 1, "label_pending": 2, "prediction_in_future": 1}
2026-01-15T12:00:00Z: eligible=5; excluded=1; reasons={"label_missing": 1}
user-01-day-08: known-before-prediction=1; retrospective-event-only=2
user-02-day-08: known-before-prediction=1; retrospective-event-only=2
Original feature IDs unchanged when more labels become ready: True
Pending or missing labels are excluded, never converted to negative outcomes.
