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.