{"record":{"id":"af4b0685860b4609","repo":"phacility/phabricator","slug":"specified-blueprint-s-is-not-capable-of-satisfy","errorCode":null,"errorMessage":"Specified blueprint \"%s\" is not capable of satisfying the configured lease.","messagePattern":"Specified blueprint \"(.+?)\" is not capable of satisfying the configured lease\\.","errorType":"console","errorClass":"PhutilArgumentUsageException","httpStatus":null,"severity":"error","filePath":"src/applications/drydock/management/DrydockManagementLeaseWorkflow.php","lineNumber":350,"sourceCode":"      ->withDisabled(false)\n      ->execute();\n\n    if (!$blueprints) {\n      throw new PhutilArgumentUsageException(\n        pht(\n          'No enabled blueprints exist with a blueprint class that can '.\n          'plausibly allocate resources to satisfy the requested lease.'));\n    }\n\n    $phids = mpull($blueprints, 'getPHID');\n\n    if ($filter_blueprints) {\n      $allowed_map = array_fuse($phids);\n      $filter_map = mpull($filter_blueprints, null, 'getPHID');\n\n      foreach ($filter_map as $filter_phid => $blueprint) {\n        if (!isset($allowed_map[$filter_phid])) {\n          throw new PhutilArgumentUsageException(\n            pht(\n              'Specified blueprint \"%s\" is not capable of satisfying the '.\n              'configured lease.',\n              $blueprint->getBlueprintName()));\n        }\n      }\n\n      $phids = mpull($filter_blueprints, 'getPHID');\n    }\n\n    return $phids;\n  }\n\n}\n","sourceCodeStart":332,"sourceCodeEnd":365,"githubUrl":"https://github.com/phacility/phabricator/blob/5720a38cfe95b00ca4be5016dd0d2f3195f4fa04/src/applications/drydock/management/DrydockManagementLeaseWorkflow.php#L332-L365","documentation":"A PhutilArgumentUsageException from `bin/drydock lease --blueprint`: the explicit blueprint filter includes a blueprint whose class is not among the classes that could plausibly allocate the requested lease (the allowed set computed from getAllForAllocatingLease plus enabled blueprints). Typically the resource type and the filtered blueprint disagree — e.g. requesting --type host while filtering to a working-copy blueprint.","triggerScenarios":"`bin/drydock lease --type working-copy --blueprint <host-blueprint-id>`: the host blueprint's PHID is absent from $allowed_map, so the workflow rejects the combination before leasing.","commonSituations":"Copy-pasting a blueprint ID from documentation for a different resource type; renaming resource types in scripts while the blueprint filter still targets the old pairing; multiple blueprints of different classes with similar names.","solutions":["Match the filter to the type: use a blueprint whose implementation class provides the resource type you pass to --type.","Or drop --blueprint entirely and let Drydock choose among all capable blueprints.","Verify the pairing by opening the blueprint and checking its type/implementation matches --type."],"exampleFix":"# before\nbin/drydock lease --type working-copy --blueprint 3   # 3 is a 'host' blueprint\n\n# after\nbin/drydock lease --type working-copy --blueprint 7   # 7 is a 'working-copy' blueprint\n# or simply\nbin/drydock lease --type working-copy","handlingStrategy":"validation","validationCode":"// compute the allowed set, then intersect with the requested filter\n$impls = DrydockBlueprintImplementation::getAllForAllocatingLease($probe);\n$allowed = id(new DrydockBlueprintQuery())\n  ->setViewer($viewer)\n  ->withBlueprintClasses(array_keys($impls))\n  ->withDisabled(false)\n  ->execute();\n$allowed_phids = array_fuse(mpull($allowed, 'getPHID'));\nforeach ($filter_phids as $phid) {\n  if (!isset($allowed_phids[$phid])) {\n    throw new InvalidArgumentException(\n      'Filtered blueprint cannot serve this resource type.');\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pair --blueprint filters with the matching --type; update both together when automation changes.","Prefer omitting --blueprint unless you specifically need to pin allocation — unfiltered leases let Drydock choose a capable blueprint."],"tags":["drydock","phabricator","cli","blueprint","capability","mismatch"],"backgroundTag":"incompatible-provider","analyzedSha":"5720a38cfe95b00ca4be5016dd0d2f3195f4fa04","analyzedAt":"2026-08-21T05:07:25.672Z","schemaVersion":2},"datasetVersion":"2026-08-21T11:28:35.574Z"}