Part of #892 (RFC #891; corpus .llm/runs/plan-deploy-plugin--seed/ r5).
createDeployTargetRegistry(entries = []) in core: registry port, key/error types, DeployTargetCollisionError (duplicate rejection is NEW — the shipped registry is register-or-replace), composition-root-only replaceForCompatibility for the W1 shim. DEFAULT_DEPLOY_TARGETS is deleted as a core concept; defaults stay in the CLI composition root. Anti-scope: core never imports an adapter (SF-1/SF-13).
Acceptance
Metadata
Dependencies: DPB-1
Delivery shape: registry extraction + NEW rejection behavior
Part of #892 (RFC #891; corpus
.llm/runs/plan-deploy-plugin--seed/r5).createDeployTargetRegistry(entries = [])in core: registry port, key/error types,DeployTargetCollisionError(duplicate rejection is NEW — the shipped registry is register-or-replace), composition-root-onlyreplaceForCompatibilityfor the W1 shim.DEFAULT_DEPLOY_TARGETSis deleted as a core concept; defaults stay in the CLI composition root. Anti-scope: core never imports an adapter (SF-1/SF-13).Acceptance
e2e:cligreen via the compat composition rootMetadata
Dependencies: DPB-1
Delivery shape: registry extraction + NEW rejection behavior