Just to follow-up, I figured out what was causing the shutdown issue. The process giving me shutdown issues (foo) has a dependency on a different process (bar) for which I do not control the startup/shutdown. So the config looks as follows:
check process foo
...
depends bar
Before "bar" is shutdown by a method outside of my control I issue a "monit unmonitor bar". What I was unaware of is issuing this command on the "bar" process results in it being issued internally for all other processes that are dependent on it. A minute later when I issue the "monit stop foo" command it does nothing as it no longer believes the "foo" process is running.
I would argue that in this situation monit should perform the "stop program" action for safety instead of the "unmonitor" action as "foo" shouldn't be running if "bar" isn't and monit no longer knows if "bar" is running.
So my options are to either flip the steps (stop foo, then unmonitor bar) or just remove the dependency. I'll probably go with the first option as the second could have give us some bad outcomes.
Marc