Cache has no namespace or orbital position, just "uniqueEPGKey" from sid, tsid, and onid. If it matches between any type of T/S/C, then it rely's on the cache source type. These are priority checks performed before overwriting any current cached data.
Cache also has a type to check against where the epg came from, this is eg. if(source > type):
Code:
https://github.com/OpenPLi/enigma2/blob/3664db5f91860c05a80962ec9127f885daecd515/lib/dvb/epgcache.cpp#L40
The only epg with a lower write priority than opentv at the moment is EPG_IMPORT, but you may notice epg from this EPG_IMPORT sets a do not update from eit flag on its uniqueEPGKey's.
Code:
https://github.com/OpenPLi/enigma2/blob/103d129496df5b236473dc134d2554ba45456f9c/lib/dvb/epgcache.h#L249
Based on same uniqueEPGKey from different epg sources:
EIT schedule would overwrite FREESAT_SCHEDULE
FREESAT_SCHEDULE_OTHER would overwrite VIRGIN_SCHEDULE
OPENTV would not overwrite any of the above..