Restore File
data class RestoreFile(val path: String, val toLocalPath: String, val remoteId: String? = null, val required: Boolean = true, val group: String? = null)(source)
One file to bring down. required files form the commit boundary: all of them must succeed before any optional file is attempted, and one failure fails the run. Optional files are best-effort with a per-file attempt cap and stay pending across runs.
group is an opaque key the app chooses (a record id, an album, a word). Files sharing a group are handed to RestorePlacement together and counted together in RestoreProgress; the library never interprets it. Null means the file is its own group.