Here's what your code is doing:
Before rendering —> check vitality
If vitality < 1 —> goto "GameOver"
Before game over —> check vitality
Vitality is 0 —> goto "GameOver"
Before game over —> check vitality
Etc...
In fact, the only reason your browser doesn't crash is because SugarCube is trying to prevent that. Every time it tries to render the passage, though, it's told to render the passage again and it can never actually get there. This would also lock the history controls and prevent anything, including your header, from rendering.
To prevent this, you should probably use Config.navigation.override, which can be found here. You could also test the name of the rendering passage and make sure it isn't "GameOver" before sending the player there.