Skip to content

[bug] Match GitHub required-check conclusions for skipped, neutral, and startup failure #16

@coygeek

Description

@coygeek

[bug] Match GitHub required-check conclusions for skipped, neutral, and startup failure

Summary

DeployBot's check-state reducer does not match GitHub's required-status-check semantics. It only treats SUCCESS as passing, treats every other non-failure as pending, and does not include STARTUP_FAILURE in its failure set.

GitHub's required-check documentation says successful required check statuses are success, skipped, and neutral. GitHub's GraphQL schema also exposes STARTUP_FAILURE as a check conclusion, which is a terminal failure state, not an in-progress state.

Evidence

Impact

Pull requests can be stuck forever when a required GitHub check legitimately completes as skipped or neutral. Conversely, a check run that ends with STARTUP_FAILURE is reported as pending, which hides a terminal failure and produces misleading queue status.

This makes DeployBot disagree with GitHub's own mergeability model, so the queue can either wait unnecessarily or fail late with unclear diagnostics.

Proposed fix

  • Treat SUCCESS, SKIPPED, and NEUTRAL as passing terminal states for required-check evaluation.
  • Add STARTUP_FAILURE to the terminal failed-state set.
  • Add regression coverage for:
    • SKIPPED required check is passed.
    • NEUTRAL required check is passed.
    • STARTUP_FAILURE required check is failed.
  • Update the existing skipped-check test that currently encodes the wrong behavior.

Verification

  • python3 -m pytest tests/test_cli.py -q
  • python3 -m pytest -q

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions