refactor: migrate from env var sprawl to YAML config files (CRAIG pattern)
Canopy uses CANOPY_{SERVICE}__{SETTING} env vars (20+ per service) parsed by the config crate. This creates sprawl across docker-compose.yml and .env.example with no schema validation.
Propose migrating to YAML config files (like CRAIG) with env var overrides:
- config/{service}.yaml as base config per service
- config/dev.yaml / config/prod.yaml for environment overrides
- Env vars still override YAML for Docker/K8s deployments
- Struct-backed schema validation catches typos at load time
- The config crate already supports this layered approach
Needs an ADR documenting the decision and a migration plan for all 19 services.
Ref: CRAIG uses this pattern successfully with config.yaml + CLI args + env overrides.