I have sources for PlutoTV and some other IPTV services. Since those sources don't usually contain channel numbers, I have them set to "Ignore channel numbers from the m3u."
Quite frequently, I will add a channel from a source to a channel collection, and then a day or two later when the m3u source is refreshed, I find that the channel in the collection is not the channel I originally added. For example, Channel 9901, which used to be Kids Movie Club is now Pluto TV Horror. (that's an example, not an actual occurrence, but it could happen)
Also, when I go into the source, I have some channels blocked, but if I unblock them, they change to a different channel.
It seems that Channels DVR is assigning channel numbers sequentially, and when the m3u source rearranges, adds, or deletes channels, the source is not synchronized. Thus when a channel number is overlaid with a different m3u channel, my collection shows a different channel.
Am I diagnosing this correctly?
It seems that it would be better to use the channel IDs in the source, which will either be "official" IDs or (hopefully) values that are consistently generated within the source. If an entry does not have a channel ID, you might be able to use some kind of hash on the channel name or tvc-guide-title to consistently create an ID. Then, you can use the sent or generated channel ID to consistently map the channel to a channel number in the source. If the lineup changes, new channels can get new numbers rather than overwriting an existing entry. These IDs could also be used, internally, to map channels to collections.
I think channel mapping gets corrupted over time. I have more than one collection where channels appear twice in my Channels app live tv guide even though the channel occurs only once in the collection. BTW, I use Chromecast with Google TV on my TV.
I imagine that could also affect season passes when an underlying channel changes.