Both jobs were continue-on-error: true at the job level, so a failing
pytest run reported success. They are the only two jobs in the workflow
tree that do this.
Verified green before removing the flag: the last 30 completed runs of
each workflow on master (90 matrix jobs each, ubuntu/windows/macos) have
zero failing steps.
Also sets fail-fast: false so one OS failing no longer cancels the other
two matrix legs' results.