You do not put scripts here directly, they are supposed to come bundled with an Artifact.
The difference between the directories, is that one type of script (namely all having the Artifact prefix), are installed and run only during an update, and afterwards removed.
non-Artifact scripts (such as Idle_Enter etc), stay persistent on the device after the update.
Yes, then you do need to provide it with every Artifact you deploy.
No, the states that have script hooks can be seen here
But the intuition behind the decision to provide Artifact* script only with artifacts is still unclear.
What if I want to implement something similar to dbus-notification (notify custom components about current installation state ) ?
So in current situation I can put Download_Leave script in persistent storage, but ArtifactInstall_Enter and ArtifactCommit_Leave scripts, for example, should always be provided with each artifact. That is not critical, but pretty annoying. It is obvious that they also can be stored in persistent