def temporal_activity_score(candidate: dict, query_time: datetime) -> float: """ Returns 1.0 if the entity is active at query_time, 0.1 if inactive. Entities without a valid_to are assumed ongoing. """ valid_from = candidate.get("valid_from") valid_to = candidate.get("valid_to") if valid_to is not None: active = valid_from <= query_time <= valid_to else: active = valid_from <= query_time if valid_from else True return 1.0 if active else 0.1