Compares the index against the complete date range spanning its first and last timestamp – the same completeness notion as spotforecast2_safe.preprocessing.curate_data.basic_ts_checks, which raises on an incomplete index; this function reports the gaps instead so callers can repair them. The expected spacing is the most common step between consecutive timestamps, so the function works for hourly as well as 15-minute ENTSO-E data.
list[tuple[pd.Timestamp, pd.Timestamp]]: One (first_missing, last_missing) pair per contiguous gap, both bounds inclusive. Empty list when the index is complete.