That's not really how it works..
It is just a technicality, but the version numbers are based on whatever hardfork version it is in. A change to 19.5 can not be one that causes a fork from a previous version of 19. If it is a hardfork, then it will be version 0.20.0.
Whenever there is a hardfork, there is a specific point in time where all the nodes will switch if there is at least 17 'yes' votes.
If I apply hardfork 20, then I am voting 'yes' for that change. Even though I am voting yes, I am still processing blocks in 'hardfork 19' mode unless/until 17/21 witnesses accept, and the hardfork occurs at whatever time it is scheduled to happen in the code.
Thanks, does that also imply that if by the time HF "X" is scheduled to happen in code there are less than 17 witnesses signalling "yes" then the HF fails ?
correct