* fix(vfs): warn when the inotify watch limit leaves folders unwatched
When watch() hits the OS watch limit mid-tree (inotify ENOSPC/EMFILE), the affected directories were silently never watched: the project stayed stale with no hint. Record the failure on DirState and surface it through the new Watcher::unwatched_reason() — the host emits the 'sync may be slow' warning once the project opens and once on the first event batch after a late failure (deferred walk / update_watches).
Fixes#1915
* fix(vfs): latch the startup watch-limit warning so batches don't repeat it