1. Should return non-zero exit status when it encounters errors. That way it can more easily be used in regression tests. 2. Should run in the CI. 3. Should use ANSI escape sequences when reporting progress, hide at the end of the run.