| Next revision | Previous revision |
| dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-003:start [2026/07/15 12:46] – created nick_dido | dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-003:start [2026/07/22 10:00] (current) – [Original Requirement] nick_dido |
|---|
| ====== MO-003 ====== | ====== MO-003 — Cloud-Agnostic Deployment ====== |
| |
| [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:start|Go to C.1 Mission Objectives]] | [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:start|Go to Mission Objectives]] |
| |
| ===== Statement ===== | ===== Original Requirement ===== |
| |
| [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] SHALL deploy an [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]] to each supported [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platform]] from the same platform independent [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Description]], except for explicitly identified platform specific parameters. | > //The system SHALL provide cloud-agnostic deployment capabilities.//[[dido:02-crusible:99-annexes:annex-b:cr-002|[C2]]] |
| |
| ===== Source Statement ===== | ===== Assessment of Original Requirement ===== |
| |
| > The system SHALL provide cloud-agnostic deployment capabilities. | The Original Requirement preserves the approved mission objective but does not express independently testable normative statements. |
| | |
| ===== Source ===== | |
| | |
| Crucible System Requirements Specification, Version 1.1 Draft, Mission Objectives, MO-003. | |
| | |
| ===== Assessment ===== | |
| | |
| The source statement expresses the approved mission objective but does not define a fully testable requirement. | |
| |
| The following Specification Discipline and Authoring findings apply: | The following Specification Discipline and Authoring findings apply: |
| |
| * **The system** does not use the defined system name | * **The system** does not use the defined system name [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] |
| * **Provide** is a weak verb that does not identify the behavior [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] performs | * **Provide** is a weak verb that does not identify an observable behavior performed by Crucible |
| * **Cloud agnostic** does not identify the characteristics required for conformance | * **Cloud-agnostic** refers to [[dido:99_annexes:annex-b-terms-and-definitions:c:cloud_agnosticism|Cloud Agnosticism]], but the Original Requirement does not identify the dependencies that Crucible must limit |
| * **Deployment capabilities** does not identify the deployable artifact, deployment inputs, target platforms, or required outcome | * **Deployment capabilities** does not identify the deployable subject, deployment inputs, target [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]], or required deployment outcome |
| * The source statement does not distinguish platform independent information from platform specific information | |
| * The source statement does not define how verification determines whether cloud specific behavior has leaked into platform independent components | |
| |
| The normalized Statement replaces the weak verb with **deploy**, identifies the deployable [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]], identifies the common input, and bounds permitted platform specific variation. | [[dido:99_annexes:annex-b-terms-and-definitions:c:cloud_agnosticism|Cloud Agnosticism]] limits dependence on the proprietary interfaces, services, data formats, software development kits, and operational mechanisms of a particular Cloud Provider. |
| |
| ===== Rationale ===== | A cloud-agnostic architecture expresses common deployment capabilities through provider-independent concepts, contracts, and interfaces. Provider-specific implementations translate those capabilities into mechanisms supported by each target Deployment Platform. |
| |
| Organizations may deploy equivalent infrastructure across commercial cloud, private cloud, on premises, edge, and disconnected environments. | The Original Requirement does not identify: |
| |
| Without an explicit separation between platform independent and platform specific information, deployment logic becomes coupled to individual providers. Such coupling increases migration effort, produces inconsistent deployment behavior, and allows provider specific implementation details to spread through the core architecture. | * The Deployment Platforms across which Crucible must operate |
| | * The minimum number of Deployment Platforms required to demonstrate Cloud Agnosticism |
| | * The deployable subject |
| | * The provider-independent deployment information |
| | * The provider-specific dependencies that Crucible must limit |
| | * The boundary between provider-independent Crucible behavior and provider-specific implementation behavior |
| | * Whether the same [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Description]] applies across the target Deployment Platforms |
| | * Whether the same [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]] applies across the target Deployment Platforms |
| | * The permitted scope of provider-specific variation |
| |
| [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] addresses this problem through: | The Original Requirement therefore requires: |
| |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Descriptions]] | * Replacement of **the system** with the defined system name [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] |
| * [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baselines]] | * Replacement of **provide** with observable Crucible behavior |
| * Platform independent deployment information | * Identification of the target Deployment Platforms |
| * Explicitly identified platform specific parameters | * Identification of the provider-independent deployment information |
| * A provider abstraction | * Identification of the proprietary dependencies that Crucible must limit |
| * Provider implementations | * Definition of the boundary between provider-independent behavior and provider-specific implementation |
| * Consistent deployment results across supported [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]] | * Definition of the permitted provider-specific variation |
| | * Separation of the independently testable cloud-agnostic deployment outcomes |
| | * Confirmation that the derived requirements collectively preserve the complete intent of MO-003 |
| |
| This separation allows the same deployment intent to target multiple platforms without embedding provider specific behavior in platform independent Crucible components. | The decomposition preserves ''MO-003'' as the stable parent requirement identifier. Each proposed replacement requirement receives a lettered identifier and a separate leaf requirement page. |
| |
| ===== Applies To ===== | ===== Proposed Statements ===== |
| |
| This requirement applies to: | The Original Requirement is decomposed into the following proposed replacement requirements: |
| |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] | {{indexmenu>dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-003#1|js navbar nocookie maxjs#1 id#crucible_mo_003_requirements_nav}} |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Descriptions]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:b:baseline_composition|Baseline Composition]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baselines]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_deployment|Infrastructure Deployment]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:p:platform_independence|Platform Independence]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:p:platform_specific_parameter|Platform Specific Parameters]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_abstraction|Provider Abstraction]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:p:provider_implementation|Provider Implementations]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:connected_environment|Connected Environments]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:d:disconnected_environment|Disconnected Environments]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:a:air-gapped_environment|Air-Gapped Environments]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:ci_cd_pipeline|CI/CD Pipelines]] | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:o:operational_lifecycle|Operational Lifecycle]] | |
| |
| ===== Verification ===== | ===== Requirement Status ===== |
| |
| - Verification SHALL confirm that the same platform independent [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Description]] can identify deployments for at least two supported [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]] | <todo>Review and approve the proposed decomposition of MO-003 into independently testable cloud-agnostic deployment requirements.</todo> |
| - Verification SHALL confirm that each tested deployment uses the same [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]] | |
| - Verification SHALL confirm that differences between tested deployments are limited to explicitly identified platform specific parameters | |
| - Verification SHALL confirm that platform independent Crucible components do not contain provider specific deployment behavior | |
| - Verification SHALL confirm that each provider implementation conforms to the applicable provider contract | |
| - Verification SHALL confirm that each tested deployment produces an environment that satisfies the common acceptance criteria | |
| - Verification SHALL confirm that each tested deployment satisfies the platform specific acceptance criteria for the target [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platform]] | |
| - Verification SHALL confirm that changing the target [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platform]] does not require modification of the platform independent deployment intent | |
| |
| Verification may include: | <todo>Determine whether MO-003a through MO-003d collectively supersede MO-003.</todo> |
| |
| * Cross platform deployment tests | <todo>If MO-003a through MO-003d are accepted as the complete replacement for MO-003, mark MO-003 as superseded and preserve this page as the parent Traceability record.</todo> |
| * Provider contract tests | |
| * Provider implementation tests | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Description]] comparison | |
| * [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]] comparison | |
| * Platform specific parameter inspection | |
| * Core dependency analysis | |
| * Provider dependency analysis | |
| * Deployment result comparison | |
| * End-to-end [[dido:99_annexes:annex-b-terms-and-definitions:c:ci_cd_pipeline|CI/CD Pipeline]] tests | |
| |
| The verification record SHALL identify: | ---- |
| | ===== Issues ===== |
| |
| - The tested [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible_description|Crucible Description]] | The following unresolved issues affect the decomposition of MO-003: |
| - The tested [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_baseline|Infrastructure Baseline]] | |
| - The tested [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]] | |
| - The common platform independent information | |
| - The platform specific parameters | |
| - The applicable provider contract | |
| - The provider implementations | |
| - The common acceptance criteria | |
| - The platform specific acceptance criteria | |
| - The observed deployment results | |
| - The generated [[dido:99_annexes:annex-b-terms-and-definitions:e:evidence|Evidence]] | |
| |
| ===== Outgoing Traceability ===== | <todo>Identify the target Deployment Platforms and the minimum number of platforms required to demonstrate Cloud Agnosticism.</todo> |
| |
| This requirement is realized by: | <todo>Identify the deployable subject and the deployment outcome required on each target Deployment Platform.</todo> |
| |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-03-deployment-orchestration:start|FR-DEP-001 through FR-DEP-007]] | <todo>Define the provider-independent deployment information that Crucible uses across target Deployment Platforms.</todo> |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-04-multi-cloud-management:start|FR-MC-001 through FR-MC-005]] | |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-05-air-gap-operations:start|FR-AG-001 through FR-AG-005]] | |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-08-devsecops-integration:start|FR-DSO-001 through FR-DSO-006]] | |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-09-baseline-composition-and-workspace:start|FR-BAS-001 through FR-BAS-004]] | |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:11-interoperability-requirements:start|INT-001 through INT-007]] | |
| * [[dido:02-crusible:99-annexes:annex-c-requirements:13-key-value-proposition-requirements:kvp-006:start|KVP-006 — Enable cloud portability]] | |
| |
| The phrase **Enable cloud portability** is retained only as the title of the source requirement. The KVP-006 requirement statement should undergo the same SDA and CWE assessment because **enable** is weak. | <todo>Determine whether the same Crucible Description must apply across all target Deployment Platforms.</todo> |
| |
| This requirement also relates to: | <todo>Determine whether the same Infrastructure Baseline must apply across all target Deployment Platforms.</todo> |
| |
| * [[dido:02-crusible:05-descriptions-composition-and-baselines:start|5. Descriptions, Composition, and Baselines]] | <todo>Identify the proprietary interfaces, services, data formats, software development kits, and operational mechanisms from which Crucible must limit dependence.</todo> |
| * [[dido:02-crusible:07-infrastructure-and-deployment:start|7. Infrastructure and Deployment]] | |
| * [[dido:02-crusible:08-dependencies-and-air-gap-operations:start|8. Dependencies and Air Gap Operations]] | |
| * [[dido:02-crusible:10-reproducibility-provenance-and-traceability:start|10. Reproducibility, Provenance, and Traceability]] | |
| |
| ===== Referenced By ===== | <todo>Define the permitted scope of provider-specific implementation behavior and variation.</todo> |
| |
| The wiki Backlinks function provides the current list of pages that reference `MO-003`. | <todo>Determine whether MO-003a through MO-003d provide complete coverage of the approved intent of MO-003.</todo> |
| |
| Incoming traceability should be derived dynamically from backlinks rather than maintained as a duplicate manual list. | ---- |
| | ===== Notes for Editors ===== |
| |
| Backlinks identify incoming references but do not define the semantics of each relationship. Referencing pages should identify whether the relationship represents realization, refinement, verification, dependency, or another defined traceability relationship. | This page should retain the stable parent requirement identifier ''MO-003''. |
| |
| ===== ConOps Relationship ===== | This page is a non-leaf requirement page and retains a trailing '':start'' in its namespace. |
| | |
| The Crucible Concept of Operations describes Phase 1 as a command-line utility invoked through [[dido:99_annexes:annex-b-terms-and-definitions:c:ci_cd_pipeline|CI/CD Pipeline]] steps. | |
| | |
| The Phase 1 workflow uses declarative inputs and currently orchestrates external deployment tools. The target architecture separates platform independent Crucible behavior from provider specific behavior. | |
| | |
| The architecture uses a provider contract as the boundary between the core system and individual [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]]. Each provider implementation performs the behavior required for its target platform without introducing provider specific dependencies into platform independent core components. | |
| | |
| ===== Delivery Phase ===== | |
| | |
| Phase 1 and subsequent phases | |
| | |
| ===== Implementation Status ===== | |
| | |
| Not Assessed | |
| | |
| Implementation status requires verification across at least two supported [[dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform|Deployment Platforms]] using the same platform independent deployment intent. | |
| | |
| ===== Requirement Status ===== | |
| | |
| Draft | |
| | |
| The source System Requirements Specification identifies Version 1.1 as a draft. | |
| | |
| ---- | |
| ===== Notes for Editors ===== | |
| |
| This requirement page should retain the stable requirement identifier `MO-003`. | The child requirements are leaf requirement pages and omit a trailing '':start'' from their namespaces. |
| |
| Changes to the Statement SHALL preserve the approved intent of the source requirement. | The explicit child-page links should remain while the proposed decomposition is being developed. After the child pages have been created and finalized, the explicit links may be removed because the ''indexmenu'' displays the child requirement pages contained within the MO-003 namespace. |
| |
| Material changes should receive review and should update the related outbound traceability, verification criteria, acceptance criteria, and source records. | This page preserves: |
| |
| The Source Statement should preserve the original wording from the controlling System Requirements Specification. | * The Original Requirement |
| | * The assessment of the Original Requirement |
| | * The reason for decomposition |
| | * [[dido:99_annexes:annex-b-terms-and-definitions:t:traceability|Traceability]] to the proposed replacement requirements |
| | * The unresolved cross-cutting issues affecting the decomposition |
| | * The supersession decision |
| |
| Incoming traceability should use the wiki Backlinks function rather than a manually maintained list. | The derived requirements should distinguish provider-independent Crucible behavior from provider-specific implementation behavior. |
| |
| The shared Terms and Definitions corpus should include definitions for: | Cloud Agnosticism does not prohibit every provider-specific mechanism. Provider-specific implementations may translate provider-independent deployment information into mechanisms supported by a target Deployment Platform, provided that those mechanisms do not become required elements of the provider-independent Crucible model. |
| |
| * Cloud Agnostic | The Original Requirement should not be marked as superseded until the requirement owner: |
| * Cloud Portability | |
| * Deployment Platform | |
| * Platform Independence | |
| * Platform Independent Information | |
| * Platform Specific Information | |
| * Platform Specific Parameter | |
| * Provider Abstraction | |
| * Provider Contract | |
| * Provider Implementation | |
| * Supported Deployment Platform | |
| |
| The proposed namespaces are: | * Approves the proposed decomposition |
| | * Approves the child requirements |
| | * Identifies the target Deployment Platforms |
| | * Defines the permitted provider-specific variation |
| | * Confirms that the child requirements collectively preserve the complete approved intent of MO-003 |
| | * Confirms that no additional child requirements are required |
| |
| * `dido:99_annexes:annex-b-terms-and-definitions:c:cloud_agnostic` | After supersession, this page should remain as the parent Traceability record and should continue to preserve the Original Requirement and its assessment. |
| * `dido:99_annexes:annex-b-terms-and-definitions:c:cloud_portability` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:d:deployment_platform` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:platform_independence` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:platform_independent_information` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:platform_specific_information` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:platform_specific_parameter` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:provider_abstraction` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:provider_contract` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:p:provider_implementation` | |
| * `dido:99_annexes:annex-b-terms-and-definitions:s:supported_deployment_platform` | |
| |
| Do not rename this page once it has been cited externally unless a redirect or move plan is in place. | Material changes to the decomposition should update the child requirements, Requirement Status, Issues, and Traceability records. |
| |
| ---- | ---- |