router.replace/push restores stale hash from initial URL on dynamic param routes
Direct entry to a dynamic param route with a URL hash seeds the segment cache with a hashful canonical URL. Subsequent hashless router.replace/push calls then rebuild the target URL by appending an empty hash to the poisoned canonical URL, causing the browser to incorrectly retain the original hash. This breaks closing modals or any hash-keyed UI on deep links.
