- Widen _ASSET_PATH_RE so nested extension asset paths (now allowed by the
<path:file> route) still get Vary: Cookie stripped
- Evict _file_hashes entries on delete/move-out so the watcher's hash index
doesn't grow unbounded as hashed chunk filenames churn across rebuilds
- Extract _handle_moved to keep on_any_event under the complexity limit
- Add unit tests for both behaviors
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>