{"record":{"id":"ff689bc3f30a9b01","repo":"phacility/phabricator","slug":"you-awake-in-a-twisting-maze-of-mirrors-all-alike","errorCode":null,"errorMessage":"You awake in a twisting maze of mirrors, all alike. You are likely to be eaten by a graph cycle. Should you escape alive, you resolve to be more careful about putting dashboard panels inside themselves.","messagePattern":"You awake in a twisting maze of mirrors, all alike\\. You are likely to be eaten by a graph cycle\\. Should you escape alive, you resolve to be more careful about putting dashboard panels inside themselves\\.","errorType":"validation","errorClass":"Exception","httpStatus":500,"severity":"error","filePath":"src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php","lineNumber":433,"sourceCode":"   * @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() {\n    $context = $this->getContextObject();\n\n    if ($context) {\n      return $context->getPHID();\n    }\n\n    return null;\n  }\n","sourceCodeStart":415,"sourceCodeEnd":451,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php#L415-L451","documentation":"Error \"You awake in a twisting maze of mirrors, all alike. You are likely to be eaten by a graph cycle. Should you escape alive, you resolve to be more careful about putting dashboard panels inside themselves.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/dashboard/engine/PhabricatorDashboardPanelRenderingEngine.php:433 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"}