)]}'
{
  "commit": "811bfabadcb1bb1a5f32b1a388d49de3595065ca",
  "tree": "df9b630eb33514d1bbe81dda75fcb6fb5731b037",
  "parents": [
    "a385e04f6ffa2652c599a254a6144666de269b8f"
  ],
  "author": {
    "name": "Yun Peng",
    "email": "pcloudy@google.com",
    "time": "Thu Oct 01 17:40:11 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Oct 01 11:40:11 2026 -0400"
  },
  "message": "Add @bazel-io review comment command to BCR PR reviewer (#2901)\n\nAdd a `@bazel-io review` comment command to the BCR PR reviewer. It runs\nthe same review as the scheduled `review_prs` job, but only for the PR\nit\u0027s commented on.\n\n`review_prs` is scheduled every 20 minutes, but GitHub doesn\u0027t honor the\nschedule: in practice it runs every 3-5 hours, even though each run\ntakes less than 2 minutes. So PRs already approved by their module\nmaintainers can wait hours to be merged. With this command, anyone can\nask the bot to review and merge a PR right away.\n\n- **Trigger:** comment exactly `@bazel-io review` on a BCR PR. It\u0027s\nhandled by the existing `handle_comment` action type, and BCR\u0027s\n`handle_comment.yml` already runs for PR comments starting with\n`@bazel-io `, so no new workflow trigger is needed.\n- **Behavior:** the bot reacts 👀, waits for running `dismiss_approvals`\nworkflow runs (like `review_prs` does), then calls `reviewPR` for the\nPR. It reacts 🚀 if the PR was merged. Otherwise it replies with the\nreason: draft PR, more than 500 changed files, no module versions\nmodified, modules still missing maintainer approval, sensitive\n`metadata.json` changes or a new module, or approved but the merge\nfailed (usually pending or failing presubmit checks).\n- **Permissions:** anyone can use the command. It doesn\u0027t loosen any\nrule: the PR is still only approved and merged when every modified\nmodule has a maintainer approval on the current head and the required\nchecks pass.\n- **Refactoring:** `reviewPR` now returns `{ merged, message }`, and\n`runHandleComment` dispatches between `@bazel-io abandon` and `@bazel-io\nreview`. The scheduled `review_prs` job ignores the return value, so its\nbehavior is unchanged.\n- **Tests:** added `index.test.js` cases for the command with a fake\noctokit (merge, missing approval, merge failure, sensitive metadata,\ndraft, and non-matching comments).\n\nCo-authored-by: Xùdōng Yáng \u003cwyverald@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0a36757faa7e215dd231a630b1ee835be837766",
      "old_mode": 33188,
      "old_path": "actions/bcr-pr-reviewer/index.js",
      "new_id": "574d602feccd26ce2507caf7461b78b2fbd8583d",
      "new_mode": 33188,
      "new_path": "actions/bcr-pr-reviewer/index.js"
    },
    {
      "type": "modify",
      "old_id": "f449154b5597ab84064e14159db9ee3c4fce38d1",
      "old_mode": 33188,
      "old_path": "actions/bcr-pr-reviewer/index.test.js",
      "new_id": "fe0ae625b01ca63a0cbb5f338e6ac00f353d0f4d",
      "new_mode": 33188,
      "new_path": "actions/bcr-pr-reviewer/index.test.js"
    }
  ]
}
