Thanks for the suggestion, and taking the time to understand the problem.
File-existence/absence locks have a giant problem: The state is only very loosely tied to the creating or waiting process. i.e. the creator can die, but leave the file there. That blocks everyone else indefinitely because they can't check the creator process state file existence atomically and with certainty.
With a flock, not only can you have read and write locks (a.k.a. shared and exclusive), but having the file open is a requirement for holding the lock. So if the lock-owner ever dies, or somehow never unlocks, the lock is always released (guaranteed) when that process exits.
That's why I was thinking of doing this at the strategy-level. The play author need not ever worry about releasing the lock properly: When the specific play ends, the lock is released. When ansible exits (for any reason) the lock is released. All sections of the play are protected (fact-gathering, variable importing, pre-tasks, roles, tasks, post-tasks, and handlers.
The other choice would be to use the "block" construct, however this is much more complicated as they all get serialized together in the code, then handed off to (surprise) the strategy-handlers. At least that's my reading of the code.
Anyway, I do appreciate your reply. At the same time, I think the (otherwise) lack of replies means:
* Many don't understand the problem
* Many don't have better solutions
* Not many have encountered the problem
* There's another (existing) / better soltuon
* I'm doing something terribly wrong (design wise)
* I'm being way to perfectionistic about the solution (above)