{"record":{"id":"5ab2dabbb004d6d0","repo":"phacility/phabricator","slug":"repository-s-has-no-active-binding-to-device","errorCode":null,"errorMessage":"Repository \"%s\" has no active binding to device \"%s\". Only actively bound devices can be promoted.","messagePattern":"Repository \"(.+?)\" has no active binding to device \"(.+?)\"\\. Only actively bound devices can be promoted\\.","errorType":"console","errorClass":"PhutilArgumentUsageException","httpStatus":null,"severity":"error","filePath":"src/applications/repository/management/PhabricatorRepositoryManagementThawWorkflow.php","lineNumber":223,"sourceCode":"        $write_lock->lock(phutil_units('5 minutes in seconds'));\n        try {\n\n          $service = $repository->loadAlmanacService();\n          if (!$service) {\n            throw new PhutilArgumentUsageException(\n              pht(\n                'Repository \"%s\" is not a cluster repository: it is not '.\n                'bound to an Almanac service.',\n                $repository->getDisplayName()));\n          }\n\n          if ($promote) {\n            // You can only promote active devices. (You may demote active or\n            // inactive devices.)\n            $bindings = $service->getActiveBindings();\n            $bindings = mpull($bindings, null, 'getDevicePHID');\n            if (empty($bindings[$device->getPHID()])) {\n              throw new PhutilArgumentUsageException(\n                pht(\n                  'Repository \"%s\" has no active binding to device \"%s\". '.\n                  'Only actively bound devices can be promoted.',\n                  $repository->getDisplayName(),\n                  $device->getName()));\n            }\n\n            $versions = PhabricatorRepositoryWorkingCopyVersion::loadVersions(\n              $repository->getPHID());\n            $versions = mpull($versions, null, 'getDevicePHID');\n\n            // Before we promote, make sure there are no outstanding versions\n            // on devices with inactive bindings. If there are, you need to\n            // demote these first.\n            $inactive = array();\n            foreach ($versions as $device_phid => $version) {\n              if (isset($bindings[$device_phid])) {\n                continue;","sourceCodeStart":205,"sourceCodeEnd":241,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/repository/management/PhabricatorRepositoryManagementThawWorkflow.php#L205-L241","documentation":"Error \"Repository \"%s\" has no active binding to device \"%s\". Only actively bound devices can be promoted.\" thrown in phacility/phabricator.","triggerScenarios":"Thrown at src/applications/repository/management/PhabricatorRepositoryManagementThawWorkflow.php:223 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"}