Feature Specification: Observability with LGTM on Compose
Feature Branch: 006-observability-lgtm-compose
Created: 2026-04-05
Status: Implemented
Input: Transition delta from 005-messaging-nats-replacement
User Storiesβ
- As a developer, I want to run TraderX plus observability locally and inspect system behavior without changing app code paths.
- As a maintainer, I want dashboards, logs, and probes provisioned automatically so every generated runtime has the same observability baseline.
- As a platform engineer, I want this to remain a non-functional state with no API/contract drift from state
005.
Functional Requirementsβ
- FR-01101: End-to-end functional behavior from state
005(trade submit, processing, realtime updates, blotters) remains unchanged. - FR-01102: No new business API endpoints are introduced by this state.
Non-Functional Requirementsβ
- NFR-01101: Compose runtime includes Grafana, Prometheus, Loki, Tempo, Promtail, OpenTelemetry Collector, and Blackbox Exporter.
- NFR-01102: Grafana starts with pre-provisioned datasources and dashboards from checked-in files.
- NFR-01103: Prometheus continuously probes key TraderX endpoints and exposes availability/latency metrics.
- NFR-01104: Container logs are collected into Loki and queryable from Grafana.
- NFR-01105: Observability stack availability endpoints are healthy before state startup is considered complete.
Success Criteriaβ
- SC-01101:
./scripts/start-state-006-observability-lgtm-compose-generated.shbrings up app + observability stack successfully. - SC-01102:
./scripts/test-state-006-observability-lgtm-compose.shvalidates observability endpoints, dashboard provisioning, and baseline functional flow. - SC-01103:
http://localhost:3000shows provisioned TraderX dashboard(s) and connected datasources.