I have read so many “fixes” for this issue. None of them are consistent
* smc and pram reset
* set wifi to front of service order
* delete wifi and create a new service
You know what I did I made a shell script to check for internet if none exists reset up the network using the shell. I use airport binary and networksetup command to achieve this. Also a repeating loop script for pinging the internet. I know its kinda annoying but unfortunately only option.