runner: exit with error count