macOS homebrew: database system was not properly shut down; automatic recovery in progress
It looks like "brew services stop postgres" is sending a signal to shutdown, and then following up 5 seconds later with a hard-kill.  That seems like a rather hostile thing for it to do, but I have zero experience with brew.  Maybe that is configurable?

But the other question is, why does it take more than 5 seconds to shut down?  Unless you have a lot of dirty data in memory which needs to be written out, shutting down should be pretty quick.  When you tried to shutdown with the pg_ctl command, what ended up in the server log file after that attempt?  When pg_ctl reports that the shutdown failed, that just means that pg_ctl got sick of waiting for it, it doesn't mean the shutdown permanently failed (i.e. it doesn't shoot the postmaster in the head the way brew seems to).  So you can keep checking the log file even after pg_ctl reports a failure.  You can use the -t option to make pg_ctl more patient.

Also, you should turn log_checkpoints=on, and then try the pg_ctl stop -t 3600 ... again and look in the server log files.