Friends, I am tentatively reporting a successful workaround. I hesitate to label it a full-blown "solution", as manual intervention is yet required, however the fix is a simple one, and so far seems to be effective and holding.
It was ultimately this statement that led me to victory. As part of my continued fiddling, I manually set an alternate MAC on the XB1X, and all now seems to be well, as well as consistently so. This has also had the follow-on effect of getting a different IP address assigned to the XB1X by the Pi-hole. For referencing purposes later, the "default" obstinate (non-working) MAC and IP for the XB1X end in --:E6 and --.93, respectively, and the alternate agreeable (working) values end in --:E4 and --.91.
In my continued atonement, I have gone ahead and "broken" said fix, then re-applied it, for the purposes of testing its validity. I have endeavored to take adequately detailed notes of the process in hopes of providing useful info to this treasured and hallowed community, and notionally other wanting passers-by.
I have also generated a debug log covering the time period of this latest "controlled testing", which should have been uploaded here:
https://tricorder.pi-hole.net/IRzj3fcR/
As for providing further, potentially valuable background information, I have created a graphic detailing the relevant portion of my network map, hopefully displayed below.
As for a textual description, the parent node of our mesh wifi network is wired directly to our modem. From there, it is wirelessly connected to a child node, to which the offending XB1X and a perfectly-behaving smart TV are directly connected. As an interesting aside, two switch hops down from the same child node is an XB1, which, in similar fashion as the smart TV, exhibits no issues with regard to network connectivity.
Now to the tinkering... Below is a somewhat detailed sequence of events, corresponding to the period "captured" in the above debug log, with local timestamps (US EST, GMT-5) interjected. Note that XB1X "indications of GOOD network connection" are evidenced by the presence of updated community and game "notifications" (a recent corporately-motivated translation for "ads") on the home screen, as well as a lack of a "Connect to XBox Network" notification. Also note that, during the periods of BAD XB1X network connection, the XB1X would still report the IP assigned by the Pi-hole (--.93) in its advanced network settings, even though network tests would fail and report "Can't get an IP address". ...and if you would be so kind as to note just one further thing, an XB1X restart (to the best of my, admittedly squishy, knowledge) is nearly equivalent to a pulling of the power cord, at least with respect to relevant cache clearing.
(failed to capture an initial timestamp - ever shall I repent my heedlessness)
- Cleared alternate MAC on XB1X, setting to default (--:E6).
- Unplugged XB1X from power.
- Unplugged child node from power.
- Flushed Pi-hole logs and network table.
- Released XB1X IP leases (--.93 and --.91) in Pi-hole.
- Restarted Pi-hole.
[1256]
- Plugged XB1X into power.
- Plugged child node into power.
- Waited for child node to report successful connection to parent.
[1302]
- Turned on XB1X, initially indicated GOOD network connection (using --:E6 MAC).
- Pi-hole indicates XB1X assigned to "default" IP (--.93).
- Ran XB1X network test, result GOOD.
[1304]
- BAD network connection indicated on XB1X.
- Ran XB1X network test, result BAD.
- Cleared alternate MAC on XB1X and restarted.
[1307]
- BAD network connection indicated on XB1X.
- Ran XB1X network test, result BAD.
- Manually set alternate MAC on XB1X (--:E4) and restarted.
[1312]
- Pi-hole indicates XB1X assigned to new IP (--:91).
- GOOD network connection indicated on XB1X.
- Ran XB1X network test, result GOOD.
- Restarted XB1X.
[1314]
- GOOD network connection indicated on XB1X.
- Ran XB1X network test, result GOOD.
I also took a look at the DHCP activity, as suggested, and below is what was returned. Non-related IPs and MACs have been redacted, and I've only left the ending values for the XB1X (seemed like an adult thing to do). Referencing the earlier network map, "XB1X-49" is the ID of the offending XB1X, and "LGwebOSTV" is the Smart TV.
Feb 23 12:49:34 dnsmasq-dhcp[22643]: DHCP, IP range 192.168.1.10 -- 192.168.1.254, lease time 1d
Feb 23 12:55:25 dnsmasq-dhcp[506]: DHCP, IP range 192.168.1.10 -- 192.168.1.254, lease time 1d
Feb 23 12:58:11 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --
Feb 23 12:58:11 dnsmasq-dhcp[506]: DHCPOFFER(eth0) -- --
Feb 23 12:58:11 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 12:58:11 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- Linksys11736
Feb 23 12:58:24 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --
Feb 23 12:58:24 dnsmasq-dhcp[506]: DHCPOFFER(eth0) -- --
Feb 23 12:58:24 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 12:58:24 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- LGwebOSTV
Feb 23 12:58:31 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 12:58:31 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 12:58:31 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) --.93 --:e6
Feb 23 12:58:31 dnsmasq-dhcp[506]: DHCPACK(eth0) --.93 --:e6 XB1X-49
Feb 23 13:03:50 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) -- --
Feb 23 13:03:50 dnsmasq-dhcp[506]: DHCPOFFER(eth0) -- --
Feb 23 13:03:50 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 13:03:50 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- Linksys11736
Feb 23 13:04:00 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 13:04:00 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- LGwebOSTV
Feb 23 13:04:13 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:04:13 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:04:16 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:04:16 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:04:20 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:04:20 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:04:28 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:04:28 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:04:44 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:04:44 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:05:17 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --.93 --:e6
Feb 23 13:05:17 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:05:17 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) --.93 --:e6
Feb 23 13:05:17 dnsmasq-dhcp[506]: DHCPACK(eth0) --.93 --:e6 XB1X-49
Feb 23 13:07:11 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:07:11 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:07:16 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:07:16 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:07:21 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:07:21 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:07:29 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:07:29 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:07:46 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:07:46 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:08:19 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e6
Feb 23 13:08:19 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.93 --:e6
Feb 23 13:08:19 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) --.93 --:e6
Feb 23 13:08:19 dnsmasq-dhcp[506]: DHCPACK(eth0) --.93 --:e6 XB1X-49
Feb 23 13:10:39 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 13:10:39 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- HS220
Feb 23 13:11:31 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e4
Feb 23 13:11:31 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.91 --:e4
Feb 23 13:11:31 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) --.91 --:e4
Feb 23 13:11:31 dnsmasq-dhcp[506]: DHCPACK(eth0) --.91 --:e4 XB1X-49
Feb 23 13:13:58 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --:e4
Feb 23 13:13:58 dnsmasq-dhcp[506]: DHCPOFFER(eth0) --.91 --:e4
Feb 23 13:13:58 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) --.91 --:e4
Feb 23 13:13:58 dnsmasq-dhcp[506]: DHCPACK(eth0) --.91 --:e4 XB1X-49
Feb 23 13:18:13 dnsmasq-dhcp[506]: not using configured address -- because it is in use by the server or relay
Feb 23 13:18:16 dnsmasq-dhcp[506]: DHCPDISCOVER(eth0) --
Feb 23 13:18:16 dnsmasq-dhcp[506]: DHCPOFFER(eth0) -- --
Feb 23 13:18:16 dnsmasq-dhcp[506]: no address range available for DHCP request via lo
Feb 23 13:27:52 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 13:27:52 dnsmasq-dhcp[506]: DHCPACK(eth0) -- -- amazon-ce7f8734c
Feb 23 13:31:39 dnsmasq-dhcp[506]: DHCPREQUEST(eth0) -- --
Feb 23 13:31:39 dnsmasq-dhcp[506]: DHCPACK(eth0) -- --
I am venturing into unknown territory at this point (I am both excited and terrified), but what stands out to me are the repeated DISCOVER and OFFER exchanges taking place with the default MAC and IP addresses (--:E6 and --.93) vs. the single exchange using the adjusted ones (--:E4 and --.91). I will take my cookie for astute observation, and leave the causal determination to those who speak fluent ethernet.
I again am undyingly appreciative of the capability and support offered here (donation incoming), and will gladly participate in further testing and troubleshooting if it may be desired and/or warranted.