Compare instants on one timeline
Normalise accepted start and stop values to comparable instants while retaining their original strings. XMLTV describes start-inclusive, stop-exclusive intervals. A programme ending at 19:00 and another starting at 19:00 are adjacent under that model.
For an invented pair spanning 18:00–19:00 and 18:45–19:15 on the same channel, the intervals overlap for fifteen minutes. That calculation identifies a review item. It does not decide which title is correct or whether either row should be deleted.
Ask why the rows coexist
Inspect source feed, programme identity and clump metadata where provided. XMLTV can represent a clump of programmes sharing a timeslot. A rule that treats every shared interval as a duplicate can destroy intentionally grouped listings.
A merged feed can also contain conflicting revisions of one schedule. Compare source priorities and update times according to the importer contract. Avoid choosing the longer title, later row or more detailed description as an accidental authority rule.
Record the resolution
A useful review row includes channel identity, normalised interval, original interval, source and the chosen action. Distinguish keeping a clump from selecting one authoritative revision or quarantining uncertain data.
After a correction, recalculate both gaps and overlaps for the affected channel interval. Removing a row can create a gap even if the overlap count falls. This is an original data-review method, not a claim about an actual broadcaster or guide.
Questions answered
Do entries touching at one ending/start instant overlap?
Under XMLTV's described interval model, adjacent entries do not overlap at that shared boundary.
Should every same-slot programme be removed as a duplicate?
No. Review intentional clumps and source context before choosing an action.
Sources & further reading
Official references for the subjects discussed. Service terms and device software can change.

