I personally can't stand my git commit command to be slow or to fail.
[0]: such as https://github.com/watchexec/watchexec
That’s reversing the flow of control, but might be workable!
I don't recommend it, though, at least not on large repositories. Too much opportunity to collide with command-line jj write operations.
But that's the whole point of locally checking the code, no? Would you prefer to commit broken things, fix them and then rebase and squash each time?
I feel the same way but you can have hooks run on pre-push instead of pre-commit. This way you can freely make your commits in peace and then do your cleanup once afterwards, at push time.