pub async fn execute(client: &DriveClient, plan: MovePlan) -> Vec<MoveOutcome>Expand description
Executes a MovePlan, moving every file still WouldMove.
The rest (AlreadyInFolder/Blocked/already-Failed) pass through
unchanged. A files.update failure becomes that file’s own
MoveResult::Failed — the batch continues regardless. Every outcome
— moved, blocked, already-in-folder, or failed — is logged via
request_log::record_drive_mutation from inside this function, not
the CLI layer: “every move must be logged” needs to hold for every
current and future caller, and a Blocked outcome makes no API call at
all, so this is the only place that refusal is ever recorded.