====== FR-MC-002 — Provider-Specific Extensions ======
[[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-04-multi-cloud-management:start|Go to Crucible Multi-Cloud Management Requirements]]
===== Statement =====
[[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] SHALL provide provider-specific extensions through [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugins]].
===== Derived From =====
This requirement derives from:
* Crucible System Requirements Specification, Version 1.1 Draft, Functional Requirements, FR-MC-002
The Original Requirement states:
> //The system shall support provider-specific extensions through plugins.//[[dido:02-crusible:99-annexes:annex-b:cr-001|[C1]]]
FR-MC-002:
* Replaces **The system** with the defined system name [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]]
* Changes **shall** to the established uppercase normative form **SHALL**
* Replaces the weak verb **support** with **provide**
* Uses the defined [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugin]] concept
* Preserves plugins as the source-required extension mechanism
No other substantive normalization is required.
===== Rationale =====
Providers expose capabilities, interfaces, parameters, and lifecycle operations that differ from those exposed by other Providers.
A [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugin]] allows Crucible to provide provider-specific behavior without incorporating that behavior directly into provider-independent Crucible components.
Provider-specific extensions can address:
* Provider resource types
* Provider interfaces
* Provider authentication
* Provider regions
* Provider networking
* Provider storage
* Provider machine types
* Provider-managed services
* Provider-specific deployment operations
* Provider-specific validation
* Provider-specific error handling
This requirement establishes Provider Plugins as the extension mechanism without prescribing:
* Plugin discovery
* Plugin installation
* Plugin loading
* Plugin activation
* A [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_contract|Provider Contract]]
* Version compatibility
* Plugin isolation
* Plugin signing
* Plugin substitution
* Plugin removal
* A programming language or packaging format
Separate requirements, architecture specifications, or interface definitions govern those subjects.
===== Applies To =====
This requirement applies to:
* [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]]
* Provider-specific extensions
* [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugins]]
* Provider-specific behavior
===== Verification =====
Verification confirms that:
- Provider-specific behavior is selected for testing
- The tested provider-specific behavior is provided through a [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_plugin|Provider Plugin]]
- [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] uses the Provider Plugin to provide the tested provider-specific behavior
- The observed behavior demonstrates a provider-specific extension supplied through the Provider Plugin
===== Referenced By =====
The following pages reference this requirement:
{{backlinks>.#dido:02-crusible}}
===== Implementation Status =====
Implemented and Verified
===== Requirement Status =====
Review and approve FR-MC-002 as a leaf requirement.
----
===== Issues =====
Determine whether separate requirements govern Provider Plugin discovery, installation, loading, and activation.
Determine whether separate requirements require Provider Plugins to conform to a Provider Contract.
----
===== Notes for Editors =====
This requirement page retains the stable requirement identifier ''FR-MC-002''.
This page is a leaf requirement page and omits a trailing '':start'' from its namespace.
The Statement preserves the source-required use of plugins for provider-specific extensions.
Do not generalize the extension mechanism beyond Provider Plugins without a corresponding change to the controlling requirement.
Do not add Provider Plugin discovery, installation, loading, activation, Provider Contract conformance, version compatibility, isolation, signing, substitution, or removal obligations unless the controlling requirement changes through an approved requirements process.
To reference this requirement Statement from another wiki page, insert:
{{section>dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-04-multi-cloud-management:fr-mc-002#Statement&noheader&nofooter&noeditbtn}}
----
© 2026 Dido Solutions, Inc. and Jackrabbit Consulting, Inc.