Lifecycle needs a 'dry run' / 'read only' mode, where it will show what changes it would make but not actually make them. For this it will likely need to keep some state during the run, and assume all previous changes applied successfully.