Summary
cmd/config.go is roughly 2,134 lines and conflates three responsibilities: YAML parsing, environment-variable overrides, and default population. The interplay between these layers is hard to reason about and makes env-override bugs hard to diagnose (precedence is implicit).
This issue tracks splitting cmd/config.go so each layer is independently testable and the precedence between layers is explicit.
Acceptance Criteria
Summary
cmd/config.gois roughly 2,134 lines and conflates three responsibilities: YAML parsing, environment-variable overrides, and default population. The interplay between these layers is hard to reason about and makes env-override bugs hard to diagnose (precedence is implicit).This issue tracks splitting
cmd/config.goso each layer is independently testable and the precedence between layers is explicit.Acceptance Criteria
Load()composes the three steps and is the only public entry point.Load().Load()and in the user-facing config docs.