1bfbe19f5f
Two stacked Windows-only failures in FileSyncManager.sync_back: 1. The staging tar was a NamedTemporaryFile held open while the backend's bulk_download_fn reopened the same path for writing — PermissionError on Windows (exclusive handle). mkstemp + close + unlink in finally instead. 2. Staged member keys came from os.path.relpath and mapping parents from Path(remote).parent — both stringify with backslashes on Windows, so no staged file ever matched its POSIX remote key and every edit was skipped as "no host mapping". Keys are now built with as_posix(); parents with posixpath.dirname; the inferred host path is joined with the host's Path. (cherry picked from commit e8cab109db, re-applied on the current file)