phacility/phabricator · error · PhutilArgumentUsageException
Blueprint "%s" could not be loaded. Try a blueprint ID or PH
Error message
Blueprint "%s" could not be loaded. Try a blueprint ID or PHID.
What it means
A PhutilArgumentUsageException from `bin/drydock lease --blueprint <identifier>` when an identifier cannot be resolved by DrydockBlueprintQuery::withIdentifiers(). Acceptable identifiers are numeric blueprint IDs or blueprint PHIDs; anything else (name, class, callsign) fails here. It can also fire when the blueprint exists but is not visible to the management workflow's viewer.
Source
Thrown at src/applications/drydock/management/DrydockManagementLeaseWorkflow.php:286
}
}
private function getBlueprintFilterMap(array $identifiers) {
$viewer = $this->getViewer();
$query = id(new DrydockBlueprintQuery())
->setViewer($viewer)
->withIdentifiers($identifiers);
$blueprints = $query->execute();
$blueprints = mpull($blueprints, null, 'getPHID');
$map = $query->getIdentifierMap();
$seen = array();
foreach ($identifiers as $identifier) {
if (!isset($map[$identifier])) {
throw new PhutilArgumentUsageException(
pht(
'Blueprint "%s" could not be loaded. Try a blueprint ID or '.
'PHID.',
$identifier));
}
$blueprint = $map[$identifier];
$blueprint_phid = $blueprint->getPHID();
if (isset($seen[$blueprint_phid])) {
throw new PhutilArgumentUsageException(
pht(
'Blueprint "%s" is specified more than once (as "%s" and "%s").',
$blueprint->getBlueprintName(),
$seen[$blueprint_phid],
$identifier));
}
View on GitHub (pinned to 5720a38cfe)
Solutions
- Open the Drydock Blueprints console and use the numeric ID from the URL (e.g. /drydock/blueprint/view/3/ → 3) or the PHID.
- If it should exist, verify the blueprint was not deleted or disabled-out of visibility and re-run.
- Pass each identifier exactly once and in full (see the duplicate check in error 556).
Example fix
# before bin/drydock lease --type host --blueprint my-host-blueprint # after bin/drydock lease --type host --blueprint 3 # or bin/drydock lease --type host --blueprint PHID-DRYB-xxxxxxxx
Defensive patterns
Strategy: validation
Validate before calling
$query = id(new DrydockBlueprintQuery())
->setViewer($viewer)
->withIdentifiers($identifiers);
$blueprints = $query->execute();
$map = $query->getIdentifierMap();
foreach ($identifiers as $identifier) {
if (!isset($map[$identifier])) {
throw new InvalidArgumentException(
"Unresolvable blueprint identifier: {$identifier}");
}
} Prevention
- Use numeric blueprint IDs taken directly from the blueprint URL, or full PHIDs copied verbatim.
- Blueprints are not addressable by name — do not reuse repository-callsign habits here.
When it happens
Trigger: `bin/drydock lease --type host --blueprint my-host-blueprint` (a name instead of ID/PHID), or `--blueprint 99` where blueprint 99 does not exist or is invisible.
Common situations: Assuming blueprints are addressable by name like repositories are by callsign; stale IDs after blueprints were deleted; copy-pasting the blueprint PHID with a typo or truncation.
Related errors
- Unable to load lease with ID "%s"!
- Blueprint "%s" is specified more than once (as "%s" and "%s"
- No known blueprint class can ever allocate the specified lea
- No enabled blueprints exist with a blueprint class that can
- Specified blueprint "%s" is not capable of satisfying the co
AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21).
Data as JSON: /api/errors/b797f0536fb8b69a.
Report an issue: GitHub.