I guess it might depend on current (and future) strategies.
But for the time being, an host has always been elected for queuing task before on_task_start is called.
At least for the free strategy, the two followng calls come together :
self._tqm.send_callback('v2_playbook_on_task_start', task, is_conditional=False)
self._queue_task(host, task, task_vars, play_context)And it could be a good idea (option in /etc/ansible/ansible.cfg ?) to enforce that on_task_start is called before *each* call to _queue_task() if needed, whatever the strategy used.
If one prefers a single call to "on_task_start" with no host for the linear strategy (whatever the number of hosts launched) no problem, the option will deal with that too.
(by the way, the "patch" to implement the idea is not very difficult to code)
Best regards - Eric