That's because your NM entry was not quite right.
It's documented
in the OCP configs, and in
the wiki 
.
----
To expand on that: both cmd_spawn and cmd_output are *already* passed to sh -c internally, so that was useless. As was redirecting the output, because it's a cmd_spawn, not a cmd_output.
Given the sh -c thing, I do recommend using cmd_spawn & exec to avoid one layer of shell wrapper (and get a mostly-useful PPID (1, because it's reparented to init) in the process, instead of a random sh process).
But, most importantly, use absolute paths. That's what was breaking OTAs. In fact, I'm not quite sure why it wasn't breaking startup, period.