Yes, unstructured. Every script is its own special snowflake that does things a bit differently.
There’s no guarantee of the verbs that the script implements. start, stop and restart are common, but the implementation is up to each individual script. I’m most familiar with Debian where some service (but not all) implemented it with start-stop-daemon, but other distros and OSes handled it differently.
Basic, commonly needed functionality, like restarting a crashed service after waiting for some delay, need to be implemented per app.
When sysvinit was widespread, there was a reason a lot of people used systems line supervisord to deploy services, rather than dealing with sysvinit scripts. It was a pain.
Systemd units were a logical progression from supervisord services.







Musicbrainz is fine; it’s just Lidarr’s usage of it that’s a problem. Lidarr uses its own mirror of Musicbrainz, plus its own custom search code, and it’s not as reliable.
Other apps that use Musicbrainz data, like Beets and Picard, don’t have the same issues that Lidarr has.