OpenWRT suddenly started advertising local (fe80:*) address instead of public address

I have a WAN interface with a /48 routed prefix (HE tunnelbroker) and a LAN interface which is supposed to delegate /64 prefixes to connected devices.

This has worked fine so far but all of a sudden it's stopped working. Specifically (on the device connected via LAN):

ping6 2606:4700:4700::1111
ping6: UDP connect: No route to host

...

ping6 2606:4700:4700::1111%en5
PING6(56=40+8+8 bytes) [redacted: my public IP] --> 2606:4700:4700::1111
16 bytes from 2606:4700:4700::1111, icmp_seq=1 hlim=59 time=2.703 ms

i.e. I can access the Internet but my device does not create the correct route for doing so.

This is confirmed with netstat -rn which shows a route created as follows:

Internet6:
Destination                             Gateway                                 Flags               Netif Expire
default                                 fe80::[redacted, link-local IP of router's LAN interface]%en5           UGcIg                 en5

I have IPv6 connectivity from within the router, and as the ping shows, I also have IPv6 connectivity from my device except it doesn't have the correct route created.

Any ideas?

Edit: after reading the relevant RFC it seems that advertising a link-local address is indeed the correct behavior. Unfortunately, this leaves me even more confused as to why this isn't working.

Resolved: disconnecting from WiFi (different zone) fixes this problem. Not exactly sure why. As far as I know there are no IPv6 routers on my WiFi.