Re-review of #313, round 2:
- R1: a removal on another device than its kept copy, with the same
size and mtimes within 2 s, is protected when its inode is equal or its
path within its source is the same ("May be the same file reached
through another mount or share"), in the preview and again right before
each unlink. The job holds the kept copy open during the unlink, so on
Windows deleting the kept copy itself through another path fails.
- R2: a file's spellings are found by containment: every configured,
monitored, ComfyUI-output or listed folder whose stat identity is a
folder above the file. Parent spellings of nested sources and case
variants match; favorites move under every listed root holding the
file. Lookups stay index searches.
- m1: a failed unlink's row says the links now name the kept copy.
- m2: a volume with no file ids reads "Can't confirm this is a separate
file on this drive".