Here are the steps that got me from Ventura to Monterey:
• Create a bootable install USB for the macOS level to downgrade to
Apple didn’t make this easy. Here are some important references:
Create a bootable installer for macOS - Apple Support Creating a bootable install drive
How to reinstall macOS - Apple Support How to reinstall macOS
Note that searching for “macOS Monterey” in App Store doesn’t work so use this link to get to the macOS download: How to download macOS - Apple Support
• Make sure there’s a recent TM backup using the macOS version I’m downgrading to.
• Verify that TM backup can be read
Run Migration Assistant and see if it lists the backups on the TM backup drive
• Do an Erase All Content and Settings
On Ventura this is in the sysprefs->General->Transfer or Reset panel. On Monterey it in sysprefs preferences.
Erase your Mac and reset it to factory settings - Apple Support
• Boot off of the bootable install USB drive
See: Mac startup key combinations - Apple Support for boot option key combos.
• Install the downgrade version of macOS
• When that’s done, boot normally, login and run Migration Assistant and restore the more recent TM backup for the level of macOS installed
Note, after I did the Migration Assistant restore from my TM backup I found a number of things were not set up as they were when I did the TM backup. In particular, all of the folders I was sharing, including a folder used by the TM Server, were no longer shared. There were other issues as well.
• Note, all this can take a long time (5+ hours, or longer, like 20 hours if restoring from a TM server)
• When everything looks good running the downgraded macOS, delete the “Install Monterey” app (or whatever the downgrade version of macOS is) in /Applications to save around 13GB of storage.
In general, Apple could/should make rolling back a major macOS update much easier and reliable. Apple should do something similar to what Solaris (Unix OS) provides for installing OS updates. Solaris supports a feature called Boot Environments which allows the system to run normally off of one BE while installing a OS update into a new BE. When the install is done, the system is booted using the new BE and if the update broke something the system can be rebooted using the previous BE which does not contain the OS upgrade. So simple.