Control Plane Architecture
Purpose
How the platform is configured, governed, and changed — the control plane.
Principle
Everything is IaC. Grafana Cloud stacks, alert rules, dashboards, and access policies are
managed via Terraform; collectors via Helm. No kubectl apply for permanent resources.
Surfaces
| Surface | Managed by | Source |
| ------------------------ | ------------------------ | --------------------------- | --------------------- |
| Grafana Cloud stacks | Terraform | f-observability/ TF roots |
| Alloy collectors | Helm | values per cluster/env |
| Alert rules / SLOs | Terraform / config | Alert Rules Catalog |
| Dashboards | Terraform / provisioning | Dashboard Catalog |
| Access policies / tokens | Terraform | access-policy (glc_) |
Promotion
Dev → QA → Prod via PR plan + GitHub Environment gates.
[stub: controlplane-promotion-detail]— fill this in. Greppable doc-debt marker.
Related
Local graph
Linked from 6 notes
ADR-008: Adopt Grafana Cloud + OpenTelemetry + Alloy as the ShipSolid Observability Standard
- **Status**: Accepted - **Date**: 2026-06-09
Data Plane Architecture
How telemetry flows from source to storage — the data plane.
01 — Platform Architecture
How the platform is built — views, planes, signals, and the decision record indexes.
Platform Overview (C4 L1-L2)
The platform at a glance — C4 Level 1 (System Context) and Level 2 (Containers).
Feature Flags & Config Management
How platform feature flags and configuration are managed and rolled out.
CI/CD Pipeline Guide
How platform changes flow through CI/CD.
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.