Here's my network topology:
rb1 (hap ac2, router, no wifi) <--eth--> rb2 (hap ac, wifi ap only) <--wifi--> masterbedroom (hap ac, wifi ap only)
And here is the utter junk I keep getting with my Pixel 3 Android 10 phone trying to roam from rb2 to masterbedroom (notice you don't see any log entries from rb2):
Jan 14 20:22:24 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:22:24 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:22:24 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:22:24 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:22:39 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:39 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:39 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:22:39 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:22:39 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:22:39 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:22:39 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:22:39 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:22:42 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:42 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:42 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:22:42 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:22:42 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -44
Jan 14 20:22:42 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -44
Jan 14 20:22:42 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:22:42 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:22:45 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:45 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:45 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:22:45 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:22:45 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:22:45 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:22:45 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:22:45 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:22:56 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:56 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:57 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:22:57 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:22:57 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:22:57 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:22:57 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:22:57 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:22:59 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:22:59 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:23:00 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:23:00 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:23:00 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:23:00 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:23:02 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:23:02 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:23:04 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:23:04 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:23:05 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:23:05 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:23:05 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:23:05 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -43
Jan 14 20:23:10 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:23:10 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
Jan 14 20:23:13 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:23:13 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: disconnected, received deauth: sending station leaving (3)
Jan 14 20:26:27 <daemon.err> rb2 rb2 login failure for user admin from 172.16.42.102 via web
Jan 14 20:26:28 <daemon.info> rb2 rb2 user yottabit logged in from 172.16.42.102 via web
Jan 14 20:26:46 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D attempts to associate
Jan 14 20:26:46 <daemon.debug> masterbedroom masterbedroom debug: wlan2-ap: 3C:28:6D:0A:B2:1D not in local ACL, by default accept
Jan 14 20:26:46 <daemon.info> masterbedroom masterbedroom 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:26:46 <daemon.info> masterbedroom masterbedroom debug: 3C:28:6D:0A:B2:1D@wlan2-ap: connected, signal strength -42
Jan 14 20:26:46 <daemon.info> rb1 rb1 dhcp1 deassigned 172.16.42.68 from 3C:28:6D:0A:B2:1D
Jan 14 20:26:46 <daemon.info> rb2 rb2 3C:28:6D:0A:B2:1D@wlan2-5G: disconnected, received deauth: class 3 frame received (7)
Jan 14 20:26:46 <daemon.info> rb2 rb2 debug: 3C:28:6D:0A:B2:1D@wlan2-5G: disconnected, received deauth: class 3 frame received (7)
Jan 14 20:26:46 <daemon.info> rb1 rb1 dhcp1 assigned 172.16.42.68 to 3C:28:6D:0A:B2:1D
This goes on for ~5 minutes until the phone finally joins the masterbedroom AP. Absolute nightmare.
It looks like the phone isn't properly leaving the rb2 AP first, and eventually it times out, and only at that point can it successfully connect to masterbedroom. I assume this is something in Router OS trying to be "too" smart, but I still don't know how it would work. The DHCP server won't know because it will always see the same MAC, and that MAC is not connected to the local device, but through an ethernet cable (it doesn't know if it's on the first hop, rb2, or the second hop, masterbedroom). Now rb2 may be the problem. It may think the MAC is still connected on its local AP interface directly, and throw a fit when it sees the MAC try to come from a station-bridge MAC. I assume rb2 is blocking the MAC and causing the problem.