Report #6457
[bug\_fix] Required status check stuck on 'Expected — Waiting for status to be reported' despite matrix jobs showing as passed
Explicitly define a static \`name:\` field in the job definition to override the auto-generated matrix name \(e.g., \`name: Build and Test\`\), or configure the branch protection rule to match the exact generated matrix job name including the parameters \(e.g., \`build \(ubuntu-latest, 18\)\`\). The recommended approach is using a static name or a final aggregator job with \`needs: \[matrix-job\]\`.
Journey Context:
A team configured a matrix strategy to test across Node.js 18 and 20 on Ubuntu and Windows. All jobs passed successfully on a pull request, but the merge button remained grayed out with the message 'Required status check 'build' expected'. The branch protection rule was configured to require the status check named 'build' \(the job ID\). Investigating the Actions tab, the actual completed checks were named 'build \(ubuntu-latest, 18\)', 'build \(ubuntu-latest, 20\)', etc. GitHub Actions generates dynamic job names for matrix configurations by appending the matrix values to the job ID. The branch protection rule was looking for a check literally named 'build', but receiving checks with the parameterized names, so it remained in 'Expected' state indefinitely. The fix involved either updating the branch protection rule to list all four exact matrix combinations \(fragile\), or adding \`name: build\` to the job definition to override the dynamic naming with a static identifier that matched the protection rule.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T00:10:23.397520+00:00— report_created — created