====== FR-CFG-002 — Infrastructure as Code ====== [[dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-01-configuration-management:start|Go to Crucible Configuration Management Requirements]] ===== Statement ===== [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] SHALL represent each [[dido:99_annexes:annex-b-terms-and-definitions:i:iac]] as a machine-readable, [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|version-controlled]] [[dido:99_annexes:annex-b-terms-and-definitions:a:artifact|Artifact]]. ===== Source Statement ===== > The system SHALL support Infrastructure-as-Code methodologies. ===== Source ===== Crucible System Requirements Specification, Version 1.1 Draft, Functional Requirements, Configuration Management, FR-CFG-002. ===== Assessment ===== The source statement expresses the approved functional intent but does not provide all information required for deterministic verification. The following Specification Discipline and Authoring findings apply: * **The system** does not use the defined system name * **Support** is a weak verb that does not identify the behavior [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] performs * **Infrastructure-as-Code** does not identify the infrastructure information represented as code * **Methodologies** does not identify the required representation or observable result * The source statement does not identify whether the infrastructure representation must be machine-readable * The source statement does not identify whether the representation must be controlled through [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|Version Control]] * The source statement does not distinguish artifact representation from revision-history preservation The normalized Statement: * Replaces **The system** with the defined system name * Replaces **support** with the direct behavior **represent** * Identifies the [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_configuration|Infrastructure Configuration]] as the represented information * Identifies a machine-readable [[dido:99_annexes:annex-b-terms-and-definitions:a:artifact|Artifact]] as the required representation * Requires the Artifact to remain under [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|Version Control]] This requirement governs the representation and control of the Infrastructure Configuration Artifact. ''FR-CFG-005'' separately governs preservation of configuration revisions and the relationships among successive revisions. ===== Rationale ===== [[dido:99_annexes:annex-b-terms-and-definitions:i:iac|Infrastructure as Code]] applies software configuration management practices to infrastructure definitions. An [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_configuration|Infrastructure Configuration]] that exists only as an informal document, manually executed procedure, or untracked script cannot serve as a consistently processable and controlled infrastructure definition. A machine-readable representation allows an authorized tool or workflow to process the Infrastructure Configuration without manual transcription. [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|Version Control]] places the Infrastructure Configuration Artifact under controlled revision management. The machine-readable, version-controlled representation provides a foundation for separately defined behaviors such as: * Configuration reuse * Configuration inheritance * Configuration revision preservation * Configuration comparison * Infrastructure deployment * Environment reconstruction This representation contributes to: * Consistent automated processing * Controlled configuration change * Configuration reuse * [[dido:99_annexes:annex-b-terms-and-definitions:r:reproducibility|Reproducibility]] * [[dido:99_annexes:annex-b-terms-and-definitions:p:provenance|Provenance]] * [[dido:99_annexes:annex-b-terms-and-definitions:t:traceability|Traceability]] ===== Applies To ===== This requirement applies to: * [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] * [[dido:99_annexes:annex-b-terms-and-definitions:i:iac|Infrastructure as Code]] * [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_configuration|Infrastructure Configurations]] * [[dido:99_annexes:annex-b-terms-and-definitions:a:artifact|Artifacts]] * Machine-readable representations * [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|Version Control]] ===== Verification ===== - Verification SHALL confirm that each tested [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_configuration|Infrastructure Configuration]] exists as an identifiable [[dido:99_annexes:annex-b-terms-and-definitions:a:artifact|Artifact]] - Verification SHALL confirm that each tested Infrastructure Configuration Artifact uses a machine-readable representation - Verification SHALL confirm that an authorized tool can parse the machine-readable representation without manual transcription - Verification SHALL confirm that each tested Infrastructure Configuration Artifact is maintained under the applicable [[dido:99_annexes:annex-b-terms-and-definitions:v:version_control|Version Control]] system - Verification SHALL confirm that the Version Control system assigns an identifiable revision to the tested Infrastructure Configuration Artifact - Verification SHALL confirm that an authorized user or process can retrieve the identified revision Verification may include: * Artifact inspection * Machine-readable format inspection * Automated parsing tests * Version Control repository inspection * Revision identification tests * Revision retrieval tests The verification record SHALL identify: - The tested Infrastructure Configuration - The corresponding Artifact - The machine-readable representation - The tool used to parse the representation - The parsing result - The applicable Version Control system - The tested revision identifier - The revision retrieval result - The observed results - The generated [[dido:99_annexes:annex-b-terms-and-definitions:e:evidence|Evidence]] ===== Outgoing Traceability ===== This requirement refines: * [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-001:start|MO-001 — Repeatable, Compliant, and Secure Infrastructure Environments]] * [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-002:start|MO-002 — Reduced Platform Deployment Timelines]] * [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-003:start|MO-003 — Platform Independent Deployment]] * [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-005:start|MO-005 — Reusable and Version-Controlled Infrastructure]] * [[dido:02-crusible:99-annexes:annex-c-requirements:01-mission-objectives:mo-006:start|MO-006 — Infrastructure Lifecycle Management]] This requirement operates within the conditions established by: * [[dido:02-crusible:99-annexes:annex-c-requirements:02-operational-requirements:or-001:start|OR-001 — Operational Roles]] * [[dido:02-crusible:99-annexes:annex-c-requirements:02-operational-requirements:or-002:start|OR-002 — Deployment Environments]] * [[dido:02-crusible:99-annexes:annex-c-requirements:02-operational-requirements:or-003:start|OR-003 — Classified and Unclassified Environments]] * [[dido:02-crusible:99-annexes:annex-c-requirements:02-operational-requirements:or-004:start|OR-004 — Concurrent Environment Management]] * [[dido:02-crusible:99-annexes:annex-c-requirements:02-operational-requirements:or-005:start|OR-005 — Distributed Environment Management]] This requirement also relates to: * [[dido:02-crusible:05-descriptions-composition-and-baselines:start|5. Descriptions, Composition, and Baselines]] * [[dido:02-crusible:07-infrastructure-and-deployment:start|7. Infrastructure and Deployment]] * [[dido:02-crusible:10-reproducibility-provenance-and-traceability:start|10. Reproducibility, Provenance, and Traceability]] ===== Referenced By ===== The wiki Backlinks function provides the current list of pages that reference ''FR-CFG-002''. Incoming traceability should be derived dynamically from backlinks rather than maintained as a duplicate manual list. 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. ===== ConOps Relationship ===== 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 machine-readable, version-controlled Infrastructure Configuration Artifacts as controlled inputs for activities such as: * Selecting an identified configuration revision * Composing selected [[dido:99_annexes:annex-b-terms-and-definitions:b:baseline|Baselines]] * Building [[dido:99_annexes:annex-b-terms-and-definitions:m:machine_image|Machine Images]] * Preparing deployment inputs * Performing [[dido:99_annexes:annex-b-terms-and-definitions:i:infrastructure_deployment|Infrastructure Deployment]] The machine-readable representation allows automated processing. Version Control provides controlled identification and retrieval of the Artifact revision used by the workflow. ===== Delivery Phase ===== Implemented and Verified ===== Implementation Status ===== Not Assessed Implementation status requires verification that [[dido:99_annexes:annex-b-terms-and-definitions:c:crucible|Crucible]] represents each Infrastructure Configuration as a machine-readable, version-controlled Artifact. ===== 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 ''FR-CFG-002''. Changes to the Statement SHALL preserve the approved intent of the source requirement. Material changes should receive review and should update the related outbound traceability, verification criteria, and source records. The Source Statement should preserve the original wording from the controlling System Requirements Specification. Verification criteria should test only the Artifact representation, machine readability, and Version Control behavior defined by the Statement. Revision-content preservation and relationships among successive revisions belong to ''FR-CFG-005'' and should not be duplicated as normative behavior on this page. Incoming traceability should use the wiki Backlinks function rather than a manually maintained list. To reference this requirement Statement from another wiki page, insert: {{section>dido:02-crusible:99-annexes:annex-c-requirements:03-functional-requirements:03-01-configuration-management:fr-cfg-002#Statement&noheader&nofooter&noeditbtn}} Do not rename this page after an external citation unless a redirect or move plan is in place. ---- © 2026 Dido Solutions, Inc. and Jackrabbit Consulting, Inc.