Platform
The platform pillar is
currently centered on Terraform workload roots under c-platform/01-terraform-samples/, consumed by
the
observability pillar
through configuration rather than code imports.
Layout
modules/azure/for reusable Azure modulesmodules/grafana/for shared Grafana-related Terraform modulesmodules/shared/for shared naming, tags, and resource-group helpersworkloads/<workload>/for Terraform rootsworkloads/<workload>/vars/<env>.tfvarsfor environment values
Working Model
Run Terraform through the Makefile:
cd c-platform/01-terraform-samples
make plan WORKLOAD=azure-vm-cluster ENV=dev
make apply WORKLOAD=azure-vm-cluster ENV=dev
Backends are workload-specific, but the contract is standardized: every workload root must carry
backends/{dev,qa,prod}.tfbackend plus vars/{dev,qa,prod}.tfvars.
For credentialed CI validation, use .github/workflows/c00-terraform-live-validation.yml. That
workflow builds a matrix from workloads/registry.json, verifies the required secrets for each
workload type, checks that the Terraform Cloud workspace exists, and then runs a real
init + validate + plan through the shared reusable Terraform workflow.
Related Docs
c-platform/README.mdc-platform/01-terraform-samples/README.md- standards/naming-conventions.md
Local graph
Linked from 3 notes
Architecture Overview
The ShipSolid Platform Engineering Lab demonstrates enterprise-grade cloud-native patterns through a
Observability Overview
The observability pillar combines Alloy collector examples with a Terraform-managed Grafana Cloud
The Pillar Model
The monorepo is organized into nine alphabetically-prefixed pillars, each representing a distinct
Related notes
Signal Forge ADR-005: Separate collector configmaps per deployment mode
Keeps cloud and local Alloy collector configs in separate files rather than one conditional configmap, so each mode's exporters stay explicit and uncoupled.
Signal Forge ADR-003: Span metrics generated before tail sampling
Places the spanmetrics connector ahead of tail_sampling so RED metrics reflect all traffic instead of only the ~25% of traces that survive sampling.
Signal Forge ADR-002: SpanLink for async RabbitMQ propagation (not parent-child)
Uses a SpanLink, not a parent-child span relationship, to connect RabbitMQ consumer spans back to the producer span across async, retry-prone delivery.
Architecture Overview
Signal Forge's topology, service communication, trace propagation, and per-signal pipeline flow across local and Grafana Cloud deployment modes.