One thing I'm 99.9% sure of is that the very first option in my custom config file is always ignored. I just ran a couple more tests that included blowing away the program data. If my custom config file looks like lubyou's snippet above, the minion never tries to check in and I can confirm that the result of a salt-call --local config.get master is 'salt', which doesn't exist in my lab.
When I put another "master" line in the custom config file at the bottom, everything works as expected. It's like it's blind to whatever option is first. I saw something similar when I was only specifying the custom grain and autosign_grains options. The custom grain wasn't being set because it was the first line of that custom config file.
The master doesn't get updated if it is the first line in the custom config file https://saltstackcommunity.slack.com/archives/C7U9FLK8S/p1642716696033900?thread_ts=1642655076.027600&cid=C7U9FLK8S