AArnott / pr-autocomplete-app

A GitHub App that adds auto-complete functionality to pull requests similar to that found in Azure Repos.
MIT License
4 stars 0 forks source link

Block auto-complete on condition that _all_ checks have passed #27

Open AArnott opened 4 years ago

AArnott commented 4 years ago

When an auto-completing label is applied to a new PR before GitHub has added the Checks to it, the labeled notification our webhook gets indicates that mergeable_state="clean", so we may immediately merge the PR rather than waiting for Checks to be added and then complete.

This PR auto-merge'd before checks were complete: https://github.com/AArnott/pr-autocomplete-app/pull/26

AArnott commented 4 years ago

There may be a race condition here. Is a PR stable or clean as soon as it's opened but before checks are added to it? If so, how can we know when it's safe to merge?

AArnott commented 4 years ago

When #26 was labeled, the notification included mergeable_state = 'clean' even though checks hadn't completed yet:

{
  "action": "labeled",
  "number": 26,
  "pull_request": {
    "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26",
    "id": 460753323,
    "node_id": "MDExOlB1bGxSZXF1ZXN0NDYwNzUzMzIz",
    "html_url": "https://github.com/AArnott/pr-autocomplete-app/pull/26",
    "diff_url": "https://github.com/AArnott/pr-autocomplete-app/pull/26.diff",
    "patch_url": "https://github.com/AArnott/pr-autocomplete-app/pull/26.patch",
    "issue_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/26",
    "number": 26,
    "state": "open",
    "locked": false,
    "title": "Add more tests around labeling PRs",
    "user": {
      "login": "AArnott",
      "id": 3548,
      "node_id": "MDQ6VXNlcjM1NDg=",
      "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/AArnott",
      "html_url": "https://github.com/AArnott",
      "followers_url": "https://api.github.com/users/AArnott/followers",
      "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
      "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
      "organizations_url": "https://api.github.com/users/AArnott/orgs",
      "repos_url": "https://api.github.com/users/AArnott/repos",
      "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
      "received_events_url": "https://api.github.com/users/AArnott/received_events",
      "type": "User",
      "site_admin": false
    },
    "body": "",
    "created_at": "2020-08-01T03:53:36Z",
    "updated_at": "2020-08-01T03:53:41Z",
    "closed_at": null,
    "merged_at": null,
    "merge_commit_sha": "df56635fff97309c735c7ead7ea2b670436c6a83",
    "assignee": null,
    "assignees": [

    ],
    "requested_reviewers": [

    ],
    "requested_teams": [

    ],
    "labels": [
      {
        "id": 2244371834,
        "node_id": "MDU6TGFiZWwyMjQ0MzcxODM0",
        "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/labels/auto-merge",
        "name": "auto-merge",
        "color": "40c967",
        "default": false,
        "description": ""
      }
    ],
    "milestone": null,
    "draft": false,
    "commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26/commits",
    "review_comments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26/comments",
    "review_comment_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/comments{/number}",
    "comments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/26/comments",
    "statuses_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/statuses/0af6bc112907718af2b8155a21ddaf8177e9c9a4",
    "head": {
      "label": "AArnott:tests",
      "ref": "tests",
      "sha": "0af6bc112907718af2b8155a21ddaf8177e9c9a4",
      "user": {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      },
      "repo": {
        "id": 283318210,
        "node_id": "MDEwOlJlcG9zaXRvcnkyODMzMTgyMTA=",
        "name": "pr-autocomplete-app",
        "full_name": "AArnott/pr-autocomplete-app",
        "private": true,
        "owner": {
          "login": "AArnott",
          "id": 3548,
          "node_id": "MDQ6VXNlcjM1NDg=",
          "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AArnott",
          "html_url": "https://github.com/AArnott",
          "followers_url": "https://api.github.com/users/AArnott/followers",
          "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
          "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
          "organizations_url": "https://api.github.com/users/AArnott/orgs",
          "repos_url": "https://api.github.com/users/AArnott/repos",
          "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
          "received_events_url": "https://api.github.com/users/AArnott/received_events",
          "type": "User",
          "site_admin": false
        },
        "html_url": "https://github.com/AArnott/pr-autocomplete-app",
        "description": "A PR AutoComplete GitHub App",
        "fork": false,
        "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app",
        "forks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/forks",
        "keys_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/teams",
        "hooks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/hooks",
        "issue_events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/events{/number}",
        "events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/events",
        "assignees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/assignees{/user}",
        "branches_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/branches{/branch}",
        "tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/tags",
        "blobs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/languages",
        "stargazers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/stargazers",
        "contributors_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contributors",
        "subscribers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscribers",
        "subscription_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscription",
        "commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contents/{+path}",
        "compare_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/merges",
        "archive_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/downloads",
        "issues_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues{/number}",
        "pulls_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/labels{/name}",
        "releases_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/releases{/id}",
        "deployments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/deployments",
        "created_at": "2020-07-28T20:18:20Z",
        "updated_at": "2020-07-31T23:31:07Z",
        "pushed_at": "2020-08-01T03:53:37Z",
        "git_url": "git://github.com/AArnott/pr-autocomplete-app.git",
        "ssh_url": "git@github.com:AArnott/pr-autocomplete-app.git",
        "clone_url": "https://github.com/AArnott/pr-autocomplete-app.git",
        "svn_url": "https://github.com/AArnott/pr-autocomplete-app",
        "homepage": null,
        "size": 195,
        "stargazers_count": 1,
        "watchers_count": 1,
        "language": "TypeScript",
        "has_issues": true,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": true,
        "has_pages": false,
        "forks_count": 0,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 9,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "forks": 0,
        "open_issues": 9,
        "watchers": 1,
        "default_branch": "main",
        "allow_squash_merge": true,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "delete_branch_on_merge": true
      }
    },
    "base": {
      "label": "AArnott:main",
      "ref": "main",
      "sha": "3e8fe7cabce71d1f70ed4b1c01787744132c5b62",
      "user": {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      },
      "repo": {
        "id": 283318210,
        "node_id": "MDEwOlJlcG9zaXRvcnkyODMzMTgyMTA=",
        "name": "pr-autocomplete-app",
        "full_name": "AArnott/pr-autocomplete-app",
        "private": true,
        "owner": {
          "login": "AArnott",
          "id": 3548,
          "node_id": "MDQ6VXNlcjM1NDg=",
          "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AArnott",
          "html_url": "https://github.com/AArnott",
          "followers_url": "https://api.github.com/users/AArnott/followers",
          "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
          "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
          "organizations_url": "https://api.github.com/users/AArnott/orgs",
          "repos_url": "https://api.github.com/users/AArnott/repos",
          "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
          "received_events_url": "https://api.github.com/users/AArnott/received_events",
          "type": "User",
          "site_admin": false
        },
        "html_url": "https://github.com/AArnott/pr-autocomplete-app",
        "description": "A PR AutoComplete GitHub App",
        "fork": false,
        "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app",
        "forks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/forks",
        "keys_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/teams",
        "hooks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/hooks",
        "issue_events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/events{/number}",
        "events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/events",
        "assignees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/assignees{/user}",
        "branches_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/branches{/branch}",
        "tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/tags",
        "blobs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/languages",
        "stargazers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/stargazers",
        "contributors_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contributors",
        "subscribers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscribers",
        "subscription_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscription",
        "commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contents/{+path}",
        "compare_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/merges",
        "archive_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/downloads",
        "issues_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues{/number}",
        "pulls_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/labels{/name}",
        "releases_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/releases{/id}",
        "deployments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/deployments",
        "created_at": "2020-07-28T20:18:20Z",
        "updated_at": "2020-07-31T23:31:07Z",
        "pushed_at": "2020-08-01T03:53:37Z",
        "git_url": "git://github.com/AArnott/pr-autocomplete-app.git",
        "ssh_url": "git@github.com:AArnott/pr-autocomplete-app.git",
        "clone_url": "https://github.com/AArnott/pr-autocomplete-app.git",
        "svn_url": "https://github.com/AArnott/pr-autocomplete-app",
        "homepage": null,
        "size": 195,
        "stargazers_count": 1,
        "watchers_count": 1,
        "language": "TypeScript",
        "has_issues": true,
        "has_projects": true,
        "has_downloads": true,
        "has_wiki": true,
        "has_pages": false,
        "forks_count": 0,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 9,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "forks": 0,
        "open_issues": 9,
        "watchers": 1,
        "default_branch": "main",
        "allow_squash_merge": true,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "delete_branch_on_merge": true
      }
    },
    "_links": {
      "self": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26"
      },
      "html": {
        "href": "https://github.com/AArnott/pr-autocomplete-app/pull/26"
      },
      "issue": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/26"
      },
      "comments": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/26/comments"
      },
      "review_comments": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26/comments"
      },
      "review_comment": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/comments{/number}"
      },
      "commits": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls/26/commits"
      },
      "statuses": {
        "href": "https://api.github.com/repos/AArnott/pr-autocomplete-app/statuses/0af6bc112907718af2b8155a21ddaf8177e9c9a4"
      }
    },
    "author_association": "OWNER",
    "active_lock_reason": null,
    "merged": false,
    "mergeable": true,
    "rebaseable": true,
    "mergeable_state": "clean",
    "merged_by": null,
    "comments": 0,
    "review_comments": 0,
    "maintainer_can_modify": false,
    "commits": 1,
    "additions": 210,
    "deletions": 153,
    "changed_files": 2
  },
  "label": {
    "id": 2244371834,
    "node_id": "MDU6TGFiZWwyMjQ0MzcxODM0",
    "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/labels/auto-merge",
    "name": "auto-merge",
    "color": "40c967",
    "default": false,
    "description": ""
  },
  "repository": {
    "id": 283318210,
    "node_id": "MDEwOlJlcG9zaXRvcnkyODMzMTgyMTA=",
    "name": "pr-autocomplete-app",
    "full_name": "AArnott/pr-autocomplete-app",
    "private": true,
    "owner": {
      "login": "AArnott",
      "id": 3548,
      "node_id": "MDQ6VXNlcjM1NDg=",
      "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/AArnott",
      "html_url": "https://github.com/AArnott",
      "followers_url": "https://api.github.com/users/AArnott/followers",
      "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
      "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
      "organizations_url": "https://api.github.com/users/AArnott/orgs",
      "repos_url": "https://api.github.com/users/AArnott/repos",
      "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
      "received_events_url": "https://api.github.com/users/AArnott/received_events",
      "type": "User",
      "site_admin": false
    },
    "html_url": "https://github.com/AArnott/pr-autocomplete-app",
    "description": "A PR AutoComplete GitHub App",
    "fork": false,
    "url": "https://api.github.com/repos/AArnott/pr-autocomplete-app",
    "forks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/forks",
    "keys_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/teams",
    "hooks_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/hooks",
    "issue_events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/events{/number}",
    "events_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/events",
    "assignees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/assignees{/user}",
    "branches_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/branches{/branch}",
    "tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/tags",
    "blobs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/languages",
    "stargazers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/stargazers",
    "contributors_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contributors",
    "subscribers_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscribers",
    "subscription_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/subscription",
    "commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/contents/{+path}",
    "compare_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/merges",
    "archive_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/downloads",
    "issues_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/issues{/number}",
    "pulls_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/labels{/name}",
    "releases_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/releases{/id}",
    "deployments_url": "https://api.github.com/repos/AArnott/pr-autocomplete-app/deployments",
    "created_at": "2020-07-28T20:18:20Z",
    "updated_at": "2020-07-31T23:31:07Z",
    "pushed_at": "2020-08-01T03:53:37Z",
    "git_url": "git://github.com/AArnott/pr-autocomplete-app.git",
    "ssh_url": "git@github.com:AArnott/pr-autocomplete-app.git",
    "clone_url": "https://github.com/AArnott/pr-autocomplete-app.git",
    "svn_url": "https://github.com/AArnott/pr-autocomplete-app",
    "homepage": null,
    "size": 195,
    "stargazers_count": 1,
    "watchers_count": 1,
    "language": "TypeScript",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "forks_count": 0,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 9,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "forks": 0,
    "open_issues": 9,
    "watchers": 1,
    "default_branch": "main"
  },
  "sender": {
    "login": "AArnott",
    "id": 3548,
    "node_id": "MDQ6VXNlcjM1NDg=",
    "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/AArnott",
    "html_url": "https://github.com/AArnott",
    "followers_url": "https://api.github.com/users/AArnott/followers",
    "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
    "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
    "organizations_url": "https://api.github.com/users/AArnott/orgs",
    "repos_url": "https://api.github.com/users/AArnott/repos",
    "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
    "received_events_url": "https://api.github.com/users/AArnott/received_events",
    "type": "User",
    "site_admin": false
  },
  "installation": {
    "id": 10947850,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTA5NDc4NTA="
  }
}
AArnott commented 4 years ago

This happened again, this time to https://github.com/AArnott/Nerdbank.Streams/pull/220. The notification similarly claimed the PR was "clean" but the checks hadn't run yet:

{
  "action": "labeled",
  "number": 220,
  "pull_request": {
    "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220",
    "id": 462810303,
    "node_id": "MDExOlB1bGxSZXF1ZXN0NDYyODEwMzAz",
    "html_url": "https://github.com/AArnott/Nerdbank.Streams/pull/220",
    "diff_url": "https://github.com/AArnott/Nerdbank.Streams/pull/220.diff",
    "patch_url": "https://github.com/AArnott/Nerdbank.Streams/pull/220.patch",
    "issue_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/220",
    "number": 220,
    "state": "open",
    "locked": false,
    "title": "Update dependencies",
    "user": {
      "login": "AArnott",
      "id": 3548,
      "node_id": "MDQ6VXNlcjM1NDg=",
      "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/AArnott",
      "html_url": "https://github.com/AArnott",
      "followers_url": "https://api.github.com/users/AArnott/followers",
      "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
      "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
      "organizations_url": "https://api.github.com/users/AArnott/orgs",
      "repos_url": "https://api.github.com/users/AArnott/repos",
      "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
      "received_events_url": "https://api.github.com/users/AArnott/received_events",
      "type": "User",
      "site_admin": false
    },
    "body": "",
    "created_at": "2020-08-04T14:39:14Z",
    "updated_at": "2020-08-04T14:39:21Z",
    "closed_at": null,
    "merged_at": null,
    "merge_commit_sha": "23a817611b793314e78a9050d358cea98fcda92f",
    "assignee": {
      "login": "AArnott",
      "id": 3548,
      "node_id": "MDQ6VXNlcjM1NDg=",
      "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/AArnott",
      "html_url": "https://github.com/AArnott",
      "followers_url": "https://api.github.com/users/AArnott/followers",
      "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
      "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
      "organizations_url": "https://api.github.com/users/AArnott/orgs",
      "repos_url": "https://api.github.com/users/AArnott/repos",
      "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
      "received_events_url": "https://api.github.com/users/AArnott/received_events",
      "type": "User",
      "site_admin": false
    },
    "assignees": [
      {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      }
    ],
    "requested_reviewers": [

    ],
    "requested_teams": [

    ],
    "labels": [
      {
        "id": 2248803519,
        "node_id": "MDU6TGFiZWwyMjQ4ODAzNTE5",
        "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/labels/auto-merge",
        "name": "auto-merge",
        "color": "0e8a16",
        "default": false,
        "description": "Auto-completes a PR when reviews and checks pass"
      }
    ],
    "milestone": {
      "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/milestones/7",
      "html_url": "https://github.com/AArnott/Nerdbank.Streams/milestone/7",
      "labels_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/milestones/7/labels",
      "id": 5396227,
      "node_id": "MDk6TWlsZXN0b25lNTM5NjIyNw==",
      "number": 7,
      "title": "v2.6",
      "description": "",
      "creator": {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      },
      "open_issues": 1,
      "closed_issues": 12,
      "state": "open",
      "created_at": "2020-05-08T03:42:00Z",
      "updated_at": "2020-08-04T14:39:14Z",
      "due_on": null,
      "closed_at": null
    },
    "draft": false,
    "commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220/commits",
    "review_comments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220/comments",
    "review_comment_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/comments{/number}",
    "comments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/220/comments",
    "statuses_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/statuses/5f1a2a2b0243f047537bf5af874a445ec9530c03",
    "head": {
      "label": "AArnott:npmUpdates",
      "ref": "npmUpdates",
      "sha": "5f1a2a2b0243f047537bf5af874a445ec9530c03",
      "user": {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      },
      "repo": {
        "id": 43795655,
        "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==",
        "name": "Nerdbank.Streams",
        "full_name": "AArnott/Nerdbank.Streams",
        "private": false,
        "owner": {
          "login": "AArnott",
          "id": 3548,
          "node_id": "MDQ6VXNlcjM1NDg=",
          "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AArnott",
          "html_url": "https://github.com/AArnott",
          "followers_url": "https://api.github.com/users/AArnott/followers",
          "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
          "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
          "organizations_url": "https://api.github.com/users/AArnott/orgs",
          "repos_url": "https://api.github.com/users/AArnott/repos",
          "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
          "received_events_url": "https://api.github.com/users/AArnott/received_events",
          "type": "User",
          "site_admin": false
        },
        "html_url": "https://github.com/AArnott/Nerdbank.Streams",
        "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing",
        "fork": false,
        "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams",
        "forks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/forks",
        "keys_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/teams",
        "hooks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/hooks",
        "issue_events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/events{/number}",
        "events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/events",
        "assignees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/assignees{/user}",
        "branches_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/branches{/branch}",
        "tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/tags",
        "blobs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/languages",
        "stargazers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/stargazers",
        "contributors_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contributors",
        "subscribers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscribers",
        "subscription_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscription",
        "commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contents/{+path}",
        "compare_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/merges",
        "archive_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/downloads",
        "issues_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues{/number}",
        "pulls_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/labels{/name}",
        "releases_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/releases{/id}",
        "deployments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/deployments",
        "created_at": "2015-10-07T04:48:20Z",
        "updated_at": "2020-08-04T14:33:12Z",
        "pushed_at": "2020-08-04T14:39:15Z",
        "git_url": "git://github.com/AArnott/Nerdbank.Streams.git",
        "ssh_url": "git@github.com:AArnott/Nerdbank.Streams.git",
        "clone_url": "https://github.com/AArnott/Nerdbank.Streams.git",
        "svn_url": "https://github.com/AArnott/Nerdbank.Streams",
        "homepage": "",
        "size": 1381,
        "stargazers_count": 175,
        "watchers_count": 175,
        "language": "C#",
        "has_issues": true,
        "has_projects": false,
        "has_downloads": true,
        "has_wiki": false,
        "has_pages": false,
        "forks_count": 26,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 11,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "forks": 26,
        "open_issues": 11,
        "watchers": 175,
        "default_branch": "master",
        "allow_squash_merge": false,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "delete_branch_on_merge": true
      }
    },
    "base": {
      "label": "AArnott:master",
      "ref": "master",
      "sha": "643b0f722a97e54b165e2258758fccab1724da3d",
      "user": {
        "login": "AArnott",
        "id": 3548,
        "node_id": "MDQ6VXNlcjM1NDg=",
        "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AArnott",
        "html_url": "https://github.com/AArnott",
        "followers_url": "https://api.github.com/users/AArnott/followers",
        "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
        "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
        "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
        "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
        "organizations_url": "https://api.github.com/users/AArnott/orgs",
        "repos_url": "https://api.github.com/users/AArnott/repos",
        "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
        "received_events_url": "https://api.github.com/users/AArnott/received_events",
        "type": "User",
        "site_admin": false
      },
      "repo": {
        "id": 43795655,
        "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==",
        "name": "Nerdbank.Streams",
        "full_name": "AArnott/Nerdbank.Streams",
        "private": false,
        "owner": {
          "login": "AArnott",
          "id": 3548,
          "node_id": "MDQ6VXNlcjM1NDg=",
          "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/AArnott",
          "html_url": "https://github.com/AArnott",
          "followers_url": "https://api.github.com/users/AArnott/followers",
          "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
          "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
          "organizations_url": "https://api.github.com/users/AArnott/orgs",
          "repos_url": "https://api.github.com/users/AArnott/repos",
          "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
          "received_events_url": "https://api.github.com/users/AArnott/received_events",
          "type": "User",
          "site_admin": false
        },
        "html_url": "https://github.com/AArnott/Nerdbank.Streams",
        "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing",
        "fork": false,
        "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams",
        "forks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/forks",
        "keys_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/keys{/key_id}",
        "collaborators_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/collaborators{/collaborator}",
        "teams_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/teams",
        "hooks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/hooks",
        "issue_events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/events{/number}",
        "events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/events",
        "assignees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/assignees{/user}",
        "branches_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/branches{/branch}",
        "tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/tags",
        "blobs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/blobs{/sha}",
        "git_tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/tags{/sha}",
        "git_refs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/refs{/sha}",
        "trees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/trees{/sha}",
        "statuses_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/statuses/{sha}",
        "languages_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/languages",
        "stargazers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/stargazers",
        "contributors_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contributors",
        "subscribers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscribers",
        "subscription_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscription",
        "commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/commits{/sha}",
        "git_commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/commits{/sha}",
        "comments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/comments{/number}",
        "issue_comment_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/comments{/number}",
        "contents_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contents/{+path}",
        "compare_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/compare/{base}...{head}",
        "merges_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/merges",
        "archive_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/{archive_format}{/ref}",
        "downloads_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/downloads",
        "issues_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues{/number}",
        "pulls_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls{/number}",
        "milestones_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/milestones{/number}",
        "notifications_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/notifications{?since,all,participating}",
        "labels_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/labels{/name}",
        "releases_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/releases{/id}",
        "deployments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/deployments",
        "created_at": "2015-10-07T04:48:20Z",
        "updated_at": "2020-08-04T14:33:12Z",
        "pushed_at": "2020-08-04T14:39:15Z",
        "git_url": "git://github.com/AArnott/Nerdbank.Streams.git",
        "ssh_url": "git@github.com:AArnott/Nerdbank.Streams.git",
        "clone_url": "https://github.com/AArnott/Nerdbank.Streams.git",
        "svn_url": "https://github.com/AArnott/Nerdbank.Streams",
        "homepage": "",
        "size": 1381,
        "stargazers_count": 175,
        "watchers_count": 175,
        "language": "C#",
        "has_issues": true,
        "has_projects": false,
        "has_downloads": true,
        "has_wiki": false,
        "has_pages": false,
        "forks_count": 26,
        "mirror_url": null,
        "archived": false,
        "disabled": false,
        "open_issues_count": 11,
        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZTEz"
        },
        "forks": 26,
        "open_issues": 11,
        "watchers": 175,
        "default_branch": "master",
        "allow_squash_merge": false,
        "allow_merge_commit": true,
        "allow_rebase_merge": true,
        "delete_branch_on_merge": true
      }
    },
    "_links": {
      "self": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220"
      },
      "html": {
        "href": "https://github.com/AArnott/Nerdbank.Streams/pull/220"
      },
      "issue": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/220"
      },
      "comments": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/220/comments"
      },
      "review_comments": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220/comments"
      },
      "review_comment": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/comments{/number}"
      },
      "commits": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls/220/commits"
      },
      "statuses": {
        "href": "https://api.github.com/repos/AArnott/Nerdbank.Streams/statuses/5f1a2a2b0243f047537bf5af874a445ec9530c03"
      }
    },
    "author_association": "OWNER",
    "active_lock_reason": null,
    "merged": false,
    "mergeable": true,
    "rebaseable": true,
    "mergeable_state": "clean",
    "merged_by": null,
    "comments": 0,
    "review_comments": 0,
    "maintainer_can_modify": false,
    "commits": 2,
    "additions": 198,
    "deletions": 144,
    "changed_files": 2
  },
  "label": {
    "id": 2248803519,
    "node_id": "MDU6TGFiZWwyMjQ4ODAzNTE5",
    "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/labels/auto-merge",
    "name": "auto-merge",
    "color": "0e8a16",
    "default": false,
    "description": "Auto-completes a PR when reviews and checks pass"
  },
  "repository": {
    "id": 43795655,
    "node_id": "MDEwOlJlcG9zaXRvcnk0Mzc5NTY1NQ==",
    "name": "Nerdbank.Streams",
    "full_name": "AArnott/Nerdbank.Streams",
    "private": false,
    "owner": {
      "login": "AArnott",
      "id": 3548,
      "node_id": "MDQ6VXNlcjM1NDg=",
      "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/AArnott",
      "html_url": "https://github.com/AArnott",
      "followers_url": "https://api.github.com/users/AArnott/followers",
      "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
      "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
      "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
      "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
      "organizations_url": "https://api.github.com/users/AArnott/orgs",
      "repos_url": "https://api.github.com/users/AArnott/repos",
      "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
      "received_events_url": "https://api.github.com/users/AArnott/received_events",
      "type": "User",
      "site_admin": false
    },
    "html_url": "https://github.com/AArnott/Nerdbank.Streams",
    "description": "Specialized .NET Streams and pipes for full duplex in-proc communication, web sockets, and multiplexing",
    "fork": false,
    "url": "https://api.github.com/repos/AArnott/Nerdbank.Streams",
    "forks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/forks",
    "keys_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/keys{/key_id}",
    "collaborators_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/collaborators{/collaborator}",
    "teams_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/teams",
    "hooks_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/hooks",
    "issue_events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/events{/number}",
    "events_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/events",
    "assignees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/assignees{/user}",
    "branches_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/branches{/branch}",
    "tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/tags",
    "blobs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/blobs{/sha}",
    "git_tags_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/tags{/sha}",
    "git_refs_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/refs{/sha}",
    "trees_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/trees{/sha}",
    "statuses_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/statuses/{sha}",
    "languages_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/languages",
    "stargazers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/stargazers",
    "contributors_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contributors",
    "subscribers_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscribers",
    "subscription_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/subscription",
    "commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/commits{/sha}",
    "git_commits_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/git/commits{/sha}",
    "comments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/comments{/number}",
    "issue_comment_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues/comments{/number}",
    "contents_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/contents/{+path}",
    "compare_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/compare/{base}...{head}",
    "merges_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/merges",
    "archive_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/{archive_format}{/ref}",
    "downloads_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/downloads",
    "issues_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/issues{/number}",
    "pulls_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/pulls{/number}",
    "milestones_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/milestones{/number}",
    "notifications_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/notifications{?since,all,participating}",
    "labels_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/labels{/name}",
    "releases_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/releases{/id}",
    "deployments_url": "https://api.github.com/repos/AArnott/Nerdbank.Streams/deployments",
    "created_at": "2015-10-07T04:48:20Z",
    "updated_at": "2020-08-04T14:33:12Z",
    "pushed_at": "2020-08-04T14:39:15Z",
    "git_url": "git://github.com/AArnott/Nerdbank.Streams.git",
    "ssh_url": "git@github.com:AArnott/Nerdbank.Streams.git",
    "clone_url": "https://github.com/AArnott/Nerdbank.Streams.git",
    "svn_url": "https://github.com/AArnott/Nerdbank.Streams",
    "homepage": "",
    "size": 1381,
    "stargazers_count": 175,
    "watchers_count": 175,
    "language": "C#",
    "has_issues": true,
    "has_projects": false,
    "has_downloads": true,
    "has_wiki": false,
    "has_pages": false,
    "forks_count": 26,
    "mirror_url": null,
    "archived": false,
    "disabled": false,
    "open_issues_count": 11,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "forks": 26,
    "open_issues": 11,
    "watchers": 175,
    "default_branch": "master"
  },
  "sender": {
    "login": "AArnott",
    "id": 3548,
    "node_id": "MDQ6VXNlcjM1NDg=",
    "avatar_url": "https://avatars2.githubusercontent.com/u/3548?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/AArnott",
    "html_url": "https://github.com/AArnott",
    "followers_url": "https://api.github.com/users/AArnott/followers",
    "following_url": "https://api.github.com/users/AArnott/following{/other_user}",
    "gists_url": "https://api.github.com/users/AArnott/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/AArnott/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/AArnott/subscriptions",
    "organizations_url": "https://api.github.com/users/AArnott/orgs",
    "repos_url": "https://api.github.com/users/AArnott/repos",
    "events_url": "https://api.github.com/users/AArnott/events{/privacy}",
    "received_events_url": "https://api.github.com/users/AArnott/received_events",
    "type": "User",
    "site_admin": false
  },
  "installation": {
    "id": 10947850,
    "node_id": "MDIzOkludGVncmF0aW9uSW5zdGFsbGF0aW9uMTA5NDc4NTA="
  }
}
AArnott commented 4 years ago

I sent the GitHub folks an email asking for their advice.

AArnott commented 4 years ago

I think one minimal way we could solve it is to assume that checks exist and to not complete before the check_run result comes after a PR opens or is synchronized. If there were no branch checks, auto-complete becomes much less interesting anyway since folks are likely able to simply complete the PR without waiting and therefore don't need auto-approval.

Another workaround is that branch protection policies can be applied to forbid PRs merging before certain checks complete.

AArnott commented 4 years ago

I got this from GitHub support. It sounds like there may be a way to at least partly resolve this:

Hi Andrew,

Thanks for pointing this out! I did inquire internally about this and I'm afraid there is no way to be 100% sure if the branches are not protected branches .

However, there are two cases i.e Statuses , and Checks . For statuses , there's no way to know this for sure since statuses are created only by integrators. For checks , you could fetch the list of check suites for the commit. If a repository has a GitHub App installed and that App requested permissions for Checks , then we assume that the App will create checks and for each commit, GitHub creates a new Check suite in a pending state. Then the integrator creates check runs for that check suite. So, fetching the list of check suites should give you the checks that are expected on a commit.

Note that both the API and UI will show you the same information (via the Checks API in the API) and both the API and UI allow you to merge a PR if it doesn't have protected branches, regardless of checks.

Let me know if this helps!

Regards Peter