Part of #892 (RFC #891; corpus .llm/runs/plan-deploy-plugin--seed/ r5).
DoctorCheckContribution { id, loader } resolved through a duplicate-guarded registry (auth's auth-backend check migrates compatibly); installer-protocol officialSource variant { sourceKind: 'tooling' }; capabilities.contributionAxes. v1 service manifests keep parsing. Anti-scope: no closed-union widening; no deploy-specific protocol fields (SF-3/SF-14).
Acceptance
Metadata
Dependencies: none
Delivery shape: installer/doctor protocol generalization
Part of #892 (RFC #891; corpus
.llm/runs/plan-deploy-plugin--seed/r5).DoctorCheckContribution { id, loader }resolved through a duplicate-guarded registry (auth'sauth-backendcheck migrates compatibly); installer-protocolofficialSourcevariant{ sourceKind: 'tooling' };capabilities.contributionAxes. v1 service manifests keep parsing. Anti-scope: no closed-union widening; no deploy-specific protocol fields (SF-3/SF-14).Acceptance
Metadata
Dependencies: none
Delivery shape: installer/doctor protocol generalization