{"record":{"id":"06035adb6c5860dc","repo":"phacility/phabricator","slug":"you-can-not-plan-changes-to-a-draft-revision","errorCode":null,"errorMessage":"You can not plan changes to a draft revision.","messagePattern":"You can not plan changes to a draft revision\\.","errorType":"validation","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php","lineNumber":73,"sourceCode":"\n  public function applyInternalEffects($object, $value) {\n    $status_planned = DifferentialRevisionStatus::CHANGES_PLANNED;\n    $object->setModernRevisionStatus($status_planned);\n  }\n\n  protected function validateAction($object, PhabricatorUser $viewer) {\n    if ($object->isDraft()) {\n\n      // See PHI346. Until the \"Draft\" state fully unprototypes, allow drafts\n      // to be moved to \"changes planned\" via the API. This preserves the\n      // behavior of \"arc diff --plan-changes\". We still prevent this\n      // transition from the web UI.\n      // TODO: Remove this once drafts leave prototype.\n\n      $editor = $this->getEditor();\n      $type_web = PhabricatorWebContentSource::SOURCECONST;\n      if ($editor->getContentSource()->getSource() == $type_web) {\n        throw new Exception(\n          pht('You can not plan changes to a draft revision.'));\n      }\n    }\n\n    if ($object->isChangePlanned()) {\n      throw new Exception(\n        pht(\n          'You can not request review of this revision because this '.\n          'revision is already under review and the action would have '.\n          'no effect.'));\n    }\n\n    if ($object->isClosed()) {\n      throw new Exception(\n        pht(\n          'You can not plan changes to this this revision because it has '.\n          'already been closed.'));\n    }","sourceCodeStart":55,"sourceCodeEnd":91,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php#L55-L91","documentation":"Error \"You can not plan changes to a draft revision.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/differential/xaction/DifferentialRevisionPlanChangesTransaction.php:73 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}