******************************************************************************* 003. Extensible Configuration Protocol ******************************************************************************* Status =============================================================================== Accepted Context =============================================================================== Applications require diverse configuration sources: TOML files, environment variables, databases, APIs, and custom formats. A framework configuration system must support TOML out-of-box while enabling integration with existing configuration infrastructure. Configuration loading involves complex requirements: hierarchical merging, template variable processing, environment overrides, and validation. Different sources need consistent behavior while supporting source-specific features. Decision =============================================================================== Implement ``AcquirerAbc`` protocol for pluggable configuration sources with default TOML implementation. All acquirers support consistent merging behavior, template variables, and environment overrides while allowing source-specific extensions. Alternatives =============================================================================== **Fixed TOML-only configuration** - Rejected: Would prevent integration with existing configuration systems - Rejected: Would limit framework adoption in environments with established patterns **Plugin architecture with discovery** - Rejected: Would add complexity without clear benefit for core use cases - Rejected: Would require dynamic loading and version management **Multiple separate configuration APIs** - Rejected: Would fragment the configuration interface and complicate usage - Rejected: Would prevent consistent behavior across configuration sources Consequences =============================================================================== **Positive** - TOML configuration works out-of-box for standard use cases - Custom configuration sources integrate cleanly with framework patterns - Consistent merging and override behavior across all sources - Framework adoption possible in environments with existing configuration systems **Negative** - Protocol implementation requires understanding of internal configuration handling - Custom acquirers must implement template variable and merging logic - Additional abstraction layer for configuration processing **Neutral** - Protocol pattern common in modern Python frameworks - Configuration extensibility expected by framework users