Background
Multiple systems in the kcenon ecosystem maintain their own Dependency Injection (DI) container implementations:
| System |
DI Implementation |
Location |
| common_system |
service_container |
include/kcenon/common/di/service_container.h |
| logger_system |
lightweight_di_container |
src/impl/di/lightweight_di_container.h |
| monitoring_system |
service_registration |
include/kcenon/monitoring/di/service_registration.h |
| database_system |
database_context |
database/integrated/core/database_coordinator.h |
The common_system::service_container is the most feature-complete implementation, providing:
- Thread-safe registration and resolution
- Service lifetimes: singleton, transient, scoped
- Circular dependency detection
- Container freezing for security
- Global singleton instance
Having multiple DI containers creates:
- Cognitive overhead — developers must learn different registration patterns per system
- Integration friction — cross-system service resolution requires adapter boilerplate
- Inconsistent lifecycle management — each container handles lifetimes differently
- Testing complexity — mock injection differs across systems
Scope
Phase 1: Audit and compatibility analysis
Phase 2: Enhance common_system service_container (if needed)
Phase 3: Migrate logger_system
Phase 4: Migrate monitoring_system
Phase 5: Migrate database_system
Acceptance Criteria
Related Files
common_system:
include/kcenon/common/di/service_container.h
include/kcenon/common/di/service_container_interface.h
logger_system:
src/impl/di/lightweight_di_container.h
monitoring_system:
include/kcenon/monitoring/di/service_registration.h
database_system:
database/integrated/core/database_coordinator.h
database/integrated/adapters/
Related Systems
kcenon/logger_system — has own lightweight DI
kcenon/monitoring_system — has own service registration
kcenon/database_system — has own database_context DI pattern
Background
Multiple systems in the kcenon ecosystem maintain their own Dependency Injection (DI) container implementations:
service_containerinclude/kcenon/common/di/service_container.hlightweight_di_containersrc/impl/di/lightweight_di_container.hservice_registrationinclude/kcenon/monitoring/di/service_registration.hdatabase_contextdatabase/integrated/core/database_coordinator.hThe
common_system::service_containeris the most feature-complete implementation, providing:Having multiple DI containers creates:
Scope
Phase 1: Audit and compatibility analysis
service_containerand system-specific containersservice_containerenhancements (if any)Phase 2: Enhance common_system service_container (if needed)
Phase 3: Migrate logger_system
lightweight_di_containerwithservice_containerregistrationPhase 4: Migrate monitoring_system
service_registrationwithservice_containerintegrationPhase 5: Migrate database_system
database_contextto useservice_containerfor backend resolutionAcceptance Criteria
common_system::service_containeris the single DI container used across all systemsRelated Files
common_system:
include/kcenon/common/di/service_container.hinclude/kcenon/common/di/service_container_interface.hlogger_system:
src/impl/di/lightweight_di_container.hmonitoring_system:
include/kcenon/monitoring/di/service_registration.hdatabase_system:
database/integrated/core/database_coordinator.hdatabase/integrated/adapters/Related Systems
kcenon/logger_system— has own lightweight DIkcenon/monitoring_system— has own service registrationkcenon/database_system— has own database_context DI pattern