{"record":{"id":"41f1d7e896528f88","repo":"phacility/phabricator","slug":"reviewer-s-is-not-a-valid-reviewer-which-you-ha","errorCode":null,"errorMessage":"Reviewer \"%s\" is not a valid reviewer which you have authority to accept on behalf of.","messagePattern":"Reviewer \"(.+?)\" is not a valid reviewer which you have authority to accept on behalf of\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php","lineNumber":209,"sourceCode":"  }\n\n  protected function validateOptionValue($object, $actor, array $value) {\n    if (!$value) {\n      throw new Exception(\n        pht(\n          'When accepting a revision, you must accept on behalf of at '.\n          'least one reviewer.'));\n    }\n\n    // NOTE: We're including reviewers who have already been accepted in this\n    // check. Legitimate users may race one another to accept on behalf of\n    // packages. If we get a form submission which includes a reviewer which\n    // someone has already accepted, that's fine. See T12757.\n\n    list($options) = $this->getActionOptions($actor, $object, true);\n    foreach ($value as $phid) {\n      if (!isset($options[$phid])) {\n        throw new Exception(\n          pht(\n            'Reviewer \"%s\" is not a valid reviewer which you have authority '.\n            'to accept on behalf of.',\n            $phid));\n      }\n    }\n  }\n\n  public function getTitle() {\n    $new = $this->getNewValue();\n    if (is_array($new) && $new) {\n      return pht(\n        '%s accepted this revision as %s reviewer(s): %s.',\n        $this->renderAuthor(),\n        phutil_count($new),\n        $this->renderHandleList($new));\n    } else {\n      return pht(","sourceCodeStart":191,"sourceCodeEnd":227,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php#L191-L227","documentation":"Authority check inside DifferentialRevisionAcceptTransaction::validateOptionValue: a reviewer PHID in the submitted 'accept on behalf of' list is not in the set of valid options returned by getActionOptions for the actor. This means the named reviewer either is not a reviewer on the revision or is one the acting user has no authority to accept for (not themselves, not a package/project they are a member of). The check deliberately tolerates already-accepted reviewers to avoid races (T12757), so this failure is purely about missing authority or stale reviewer lists.","triggerScenarios":"Thrown at src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php:209 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Reload the revision page so the accept form is rebuilt with the current reviewer list, then resubmit","Accept only on behalf of yourself or packages/projects where you are a member with authority","If a reviewer was removed from the revision after the form was loaded, drop that reviewer from the selection and retry"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","contentChangedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}