ADR-0004: Pulumi over Bicep for Infrastructure as Code¶
Decision
This page records a decision and its status. A Proposed decision is not binding; an Accepted decision is binding on the Factory until amended or superseded.
- Status: Accepted
- Date: 2026-01-01
- Deciders: Cloud Architect, DevOps Architect
- Tags: iac, devops, cloud
Reviewed 2026-10-09 — verified, retained
- Disposition: retain (review question R-03 closed).
- Verified: zero
.bicepfiles across the ConnectSoft repositories (depth 4); thirteenPulumi.yamlfiles; templateInfrastructureModelprojects referencePulumi.AzureNative(BaseTemplate, AgentTemplate, ApiGatewayTemplate inspected); DerechHaLev's AuthServer and Identity services carry Pulumi programs withdevandaws-devstacks. TemplateDeployment/folders hold docker-compose and Kubernetes manifests, not IaC programs. - Clarification: the Factory itself provisions nothing yet; each repository's pipeline runs its own Pulumi program. "Bicep as legacy alternative" stays as written.
- Drift for other owners: CompanyDocumentation's Factory business model still lists Bicep as a deliverable; the Factory site mentions Bicep on 60 pages, mostly in agent specifications and blueprints that list IaC options.
- Provenance:
Dateis the 2026-06-17 bulk-commit value.
Context¶
The factory provisions its own infrastructure and the infrastructure of generated runtimes, and must re-provision in a secondary region for disaster recovery. Earlier specs referenced Bicep. The team prefers IaC authored in the same language as the platform (.NET/C#), with reusable components and strong testing.
Decision¶
Use Pulumi (.NET/C#) as the primary IaC tool, executed by the DevOps / GitOps IaCProvisioningService. Bicep is treated only as a legacy alternative.
Consequences¶
Positive¶
- IaC in C#: shared types, unit-testable infrastructure, reusable components aligned with generation.
- Multi-cloud-capable and consistent with the agent-generated programming model.
Negative / trade-offs¶
- Pulumi state backend must be managed; residual Bicep references reframed as legacy.
Neutral¶
- Provisioning runs through governed pipelines with approval gates.
Alternatives considered¶
| Alternative | Why not chosen |
|---|---|
| Bicep | Azure-only DSL; not aligned with C# generation and reuse model. Retained as legacy alternative. |
| Terraform (HCL) | Separate language/toolchain; less aligned with the .NET generation model. |