- Phase 3: rsync with --itemize-changes captured, parsed into change list - Phase 4: per-file zstd deltas written to DELTAS/tmp/N/files/ - Phase 5: manifest.json written, atomic rename tmp/N → N - Phase 6: PEND promoted to PREV via rm+rename - Dry-run prints all steps without executing