Skip to content

fix(github): preserve status channel identity - #101

Open
Kewe63 wants to merge 2 commits into
typesafe-ai:mainfrom
Kewe63:fix/status-channel-collision
Open

Kewe63 wants to merge 2 commits into
typesafe-ai:mainfrom
Kewe63:fix/status-channel-collision

Conversation

@Kewe63

@Kewe63 Kewe63 commented Sep 19, 2026 •

Copy link
Copy Markdown

Fixes #98

Functional change

GithubStatusMonitor.wait_for_statuses previously flattened commit statuses and check runs into a single map keyed only by display name. If both GitHub API channels reported a check with the same name, the check run overwrote the commit status and the expected checks were deduplicated.

A failed commit status named build could therefore be hidden by a successful check run named build, causing the monitor to report success after observing only one effective check.

This change preserves the GitHub API channel as part of each check's identity. A same-named commit status and check run are now tracked independently, and a failure in either channel prevents success.

Behavior and output

  • The public checks and check_runs inputs remain unchanged.
  • Every requested item in both channels must reach a successful terminal state.
  • Same-named checks no longer overwrite or deduplicate each other.
  • Progress, timeout, and failure output uses channel-qualified labels such as status: build and check run: build.
  • Legacy string keys remain supported by the internal watcher and rendering helpers.

Implementation

  • Introduce a channel-qualified Check identity.
  • Preserve that identity while polling statuses and check runs.
  • Carry the identity through watcher state, transitions, errors, and rendering.
  • Add public wait_for_statuses regressions covering same-named failures and successful checks in both channels.

Verification

  • PYTHONPATH=github/src pytest -q github/tests — 55 passed after merging current main
  • ruff check github/src github/tests — passed
  • ruff format --check github/src github/tests — passed

@danielgafni

Copy link
Copy Markdown
Contributor

Sorry I was mass-closing PRs!

Please rewrite the PR description to address the functional change.

@danielgafni danielgafni reopened this Sep 25, 2026
@Kewe63

Kewe63 commented Sep 25, 2026

Copy link
Copy Markdown
Author

Updated the PR description to explicitly document the functional change and preserved behavior. I also merged the latest main; all CI checks are passing now.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Same-named commit statuses and check runs can make wait_for_statuses false-pass

2 participants