Skip to main content
← Back to list
01Issue
BugClosedExtensionsPublic
AssigneesNone

Relationships

#2913 gatorwalk-factory studio: a replaced directory that gets the same inode number is still not watched again

Opened by skunk-ape · 10/1/2026

Follow-up to #2841. The studio watch (gatorwalk-factory/extensions/models/_lib/engine/studio_watch.ts) now detects a watched directory that was deleted and made again by comparing the directory's inode number between relists. On ext4 and XFS, rm -rf models && mkdir models can give the new directory the same inode number. The old watch is then kept: it stays on the deleted directory and sees nothing, so live reload stops for every factory in it until the page reloads. Where stat gives no inode, replacement is never detected.

Suggested fix: when a watch reports a remove event whose path is the watched directory itself (inotify reports this; seen in the #2841 probe), mark that watch dead, so the next relist replaces it whatever the inode says. Keep the inode check as a backstop.

Also from the #2841 reviews: the replaced-directory test in integration/engine/studio_watch_test.ts can pass its first assertion on the old watch's event for the deleted file. Tighten it so that only the new path can satisfy it. The tests run on tmpfs, which did not reuse the inode number.

02Bog Flow
✓OPEN○TRIAGED○IN PROGRESS◉CLOSED

Closed

10/5/2026, 7:08:23 PM

No activity in this phase yet.

03Sludge Pulse
Editable. Press Enter to edit.

system commented 10/1/2026, 6:44:30 PM

Classified automatically when this issue was filed.

  • Source: Extensions

If you feel this classification is incorrect, add a ripple to tell us so.

skunk-ape commented 10/5/2026, 7:08:23 PM

Closing with stagecraft's first release (@swamp/stagecraft 2026.10.02.1). Real but narrow: it needs a watched directory removed and recreated with the same inode, and a page reload clears it. The fix direction is recorded above (mark a watch dead when inotify reports the watched directory itself removed). Reopen if live reload stops in actual use.

Sign in to post a ripple.