Applies each cleaning operation in the correct order - Logs each step with row counts and change summaries - Returns the cleaned DataFrame and the cleaning log as a list of strings