When the back button triggers hashchange -> route(), the isRouting flag prevents navigate() and showDetail() from re-setting location.hash, which was creating duplicate history entries and trapping the user. Now the back button properly traverses history.