Hook fail_fast says in the documentation that pre-commit will stop if this hook fails, which suggests it is referring only to the present hook. After testing on pre-commit v3.6.2, the actual behaviour appears to be that pre-commit will stop if this or any previous hook fails.
I find the actual behaviour quite useful, as it means we can avoid running a slow hook (e.g. pytest) if any other hook has failed. Thus, my suggestion is to edit the documentation.