Report #17236
[bug\_fix] Workflow shows green checkmark or 'Neutral' status despite matrix job failure, allowing PR merge when it should block
Remove \`continue-on-error: true\` from the job configuration. If the goal is to allow other matrix jobs to continue running when one fails, but still report overall workflow failure, use \`strategy: fail-fast: false\` instead. The root cause is that \`continue-on-error: true\` literally tells GitHub that this job's success is optional; it marks the job conclusion as 'success' \(neutral\) in the PR status check even when all steps failed, effectively hiding failures from branch protection rules.
Journey Context:
A development team adds a new experimental platform \(e.g., macOS ARM64\) to their existing Linux matrix. They want to allow this platform to fail without blocking merges while they stabilize it, so they add \`continue-on-error: $\{\{ matrix.experimental \}\}\` to the job. A few days later, they notice that the macOS job is failing consistently due to a configuration issue, but the PR shows a green checkmark and allows merging. The team checks the branch protection rules, which require the 'test' job to pass, yet GitHub reports the status as successful. Investigating the workflow logs, they see the macOS job steps failed but the job itself shows a green checkmark icon with the annotation 'This job was allowed to fail and its result is neutral'. Realizing that \`continue-on-error\` is designed for optional quality checks \(like linting\) rather than experimental platform support where failure should still be visible, they remove \`continue-on-error\`. They replace it with \`strategy: fail-fast: false\` at the workflow level so that if Linux tests fail the workflow stops, but if only macOS fails, other jobs continue running but the workflow correctly reports a red X failure status, properly blocking the merge as intended.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T04:49:44.327864+00:00— report_created — created