{"record":{"id":"e2f505731b471038","repo":"phacility/phabricator","slug":"to-render-more-than-s-levels-of-panels-nested-ins","errorCode":null,"errorMessage":"To render more than %s levels of panels nested inside other panels, purchase a subscription to %s Gold.","messagePattern":"To render more than (.+?) levels of panels nested inside other panels, purchase a subscription to (.+?) Gold\\.","errorType":"validation","errorClass":"Exception","httpStatus":500,"severity":"error","filePath":"src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php","lineNumber":424,"sourceCode":"   * Detect graph cycles in panels, and deeply nested panels.\n   *\n   * This method throws if the current rendering stack is too deep or contains\n   * a cycle. This can happen if you embed layout panels inside each other,\n   * build a big stack of panels, or embed a panel in remarkup inside another\n   * panel. Generally, all of this stuff is ridiculous and we just want to\n   * shut it down.\n   *\n   * @param PhabricatorDashboardPanel Panel being rendered.\n   * @return void\n   */\n  private function detectRenderingCycle(PhabricatorDashboardPanel $panel) {\n    if ($this->parentPanelPHIDs === null) {\n      throw new PhutilInvalidStateException('setParentPanelPHIDs');\n    }\n\n    $max_depth = 4;\n    if (count($this->parentPanelPHIDs) >= $max_depth) {\n      throw new Exception(\n        pht(\n          'To render more than %s levels of panels nested inside other '.\n          'panels, purchase a subscription to %s Gold.',\n          new PhutilNumber($max_depth),\n          PlatformSymbols::getPlatformServerName()));\n    }\n\n    if (in_array($panel->getPHID(), $this->parentPanelPHIDs)) {\n      throw new Exception(\n        pht(\n          'You awake in a twisting maze of mirrors, all alike. '.\n          'You are likely to be eaten by a graph cycle. '.\n          'Should you escape alive, you resolve to be more careful about '.\n          'putting dashboard panels inside themselves.'));\n    }\n  }\n\n  private function getContextPHID() {","sourceCodeStart":406,"sourceCodeEnd":442,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php#L406-L442","documentation":"Error \"To render more than %s levels of panels nested inside other panels, purchase a subscription to %s Gold.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php:424 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"}