Since we're covering other I/O, we could also require purity (i.e. no other writes or other destructive operations aside from writing to stdout, stderr and the exit code).