See dev-docs/design/handle-progress.md. One generic type reused across
every operation (T = OperationOutcome for copy/move/compress,
SyncOutcome for sync) rather than a handle type per operation.
Aggregate result of running an ExecutionPlan. Replaces a bare
Result<(), Error> because ErrorStrategy::ContinueAndCollect can
finish with a mix of successes and failures that a single Result
can’t represent. See dev-docs/design/batching-engine.md, “outcome.rs”.
See dev-docs/design/handle-progress.md. Discrete per-entry events rather
than a cumulative snapshot; EntryFailed carries only the Entry,
not the Error — Error isn’t Clone (it wraps std::io::Error),
and the failure detail is already available from the operation’s
final OperationOutcome.failed once the handle resolves.