Runs the pipeline. A run that stops on an error still writes report.html,
carrying the diagnosis and every output produced before the failure, and then
re-raises the original error unchanged so the exit status and the message a
caller sees are what they would have been.
