a) change detector which might for example be gitlab pipeline CICD branch with ansible --check or just a thread
a.i) change detector to be able to inform if the change would include a drain or not
b) change executor with drain capability
b.i) pause-able and intended to run stable for weeks so restartable
b.ii) monitoring/alerting mechanism to supervise the tool why it is evolving (edited) likely slack posts
c) external intervention
c.i) update repository, playbook, hostfiles ( see d.i )
d) safequards
d.i ) node blacklist, node whitelist, canary testing list
d.ii) how to keep threads running which are in the process of doing ansible runs from being killed by ctrl+c
d.iii ) canary testing automation