I've been doing some testing over the last several days and am able to reliably reproduce the problem.
As a reminder I'm running the DVR as a docker container on Unraid. I'm also running the 'CA Appdata Backup / Restore' plugin to backup the appdata for my docker containers. The plugin restarts the container after performing the backup.
If I enable the plugin for the DVR docker and schedule the backup to occur when the DVR is doing it's own backup, the next automatic guide refresh will skip the single OTA channel and the first channel in the Prime.
Here are some logs to show the sequence of events:
Works (no docker backup):
2019/04/10 03:05:15 [SYS] Created database snapshot: backup-20190410.030515
2019/04/10 03:05:15 [SYS] Removing old backup backup-20190320.030438
2019/04/10 09:36:00 [DVR] Fetching guide data for 1 stations in USA-OTA98033 @ 2019-04-10 9:30AM
2019/04/10 09:36:00 [DVR] indexed 8 airings (1 channels) [0s fetch, 0s index]
2019/04/10 09:36:00 [DVR] Fetching guide data for 50 stations in USA-WA67390-X @ 2019-04-10 9:30AM
Broken (with docker backup):
2019/04/11 03:05:44 [SYS] Starting Channels DVR v2019.03.18.2111 (linux-x86_64 pid:8) in /channels-dvr/data
2019/04/11 03:05:45 [HDR] Found 2 devices
2019/04/11 03:05:45 [SYS] Started HTTP Server
2019/04/11 03:05:48 [DVR] Recording engine started in /shares/DVR
2019/04/11 03:05:48 [SYS] Bonjour service running for dvr-9eb332265b68.local. [192.168.86.9]
2019/04/11 03:05:48 [SYS] Created database snapshot: backup-20190411.030548
2019/04/11 03:05:48 [SYS] Removing old backup backup-20190320.221519
2019/04/11 03:05:58 [IDX] Pruned 25 expired airings from USA-OTA98033 in 29.384833ms.
2019/04/11 03:05:59 [IDX] Pruned 884 expired airings from USA-WA67390-X in 571.484136ms.
2019/04/11 09:35:00 [DVR] Fetching guide data for 49 stations in USA-WA67390-X @ 2019-04-11 9:30AM