Skip to content

Epic: Cross-Module Circular Dependency Resolution #232

Description

@kcenon

Summary

Resolve circular dependency risks across the unified_system ecosystem by consolidating shared interfaces in common_system and enforcing one-way dependency flows between core modules.

5W1H Specification

  • Who: Core systems maintainers (common, thread, logger, network, monitoring, messaging)
  • What: Consolidate transport/monitoring interfaces in common_system + enforce unidirectional dependencies
  • Where: common_system (foundation) + all dependent core system repos
  • When: Target v0.4.0.0 release cycle
  • Why: Prevent compile-time circular dependencies, simplify build configuration, enable isolated module testing
  • How:
    1. Add unified interfaces (IHttpClient, IUdpClient, IMetricCollector) to common_system
    2. Migrate bidirectional integrations to interface-based decoupling
    3. Enforce single-direction dependencies where bidirectional is unavoidable

Background Analysis

Per CROSS_MODULE_INTEGRATION.md, two circular dependency patterns require resolution:

Pattern Risk Level Current Status
logger_system ↔ thread_system MODERATE Both directions optional but can conflict
network_system ↔ monitoring_system LOW HTTP transport done, UDP/gRPC pending

Scope

  • In: Interface consolidation, conditional compilation cleanup, build order documentation
  • Out: Functional changes to existing APIs, new feature development

Implementation Order (Priority)

Priority 1: Foundation (CRITICAL) - Blocks all other work

Issue Repository Description Status
#233 common_system Add unified transport interfaces (IHttpClient, IUdpClient) ✅ Done
#234 common_system Add unified monitoring interfaces (IMetricCollector) ✅ Done

Priority 2: Network/Monitoring Integration (HIGH)

Issue Repository Description Status Blocked By
kcenon/monitoring_system#273 monitoring_system Implement network_system transport integration 🔴 Open #233
kcenon/network_system#342 network_system Decouple monitoring via EventBus pattern 🔴 Open #234

Priority 3: Logger/Thread Integration (HIGH)

Issue Repository Description Status
kcenon/logger_system#252 logger_system Resolve bidirectional thread_system dependency 🔴 Open
kcenon/thread_system#336 thread_system Resolve bidirectional logger_system dependency 🔴 Open

Priority 4: Downstream Hardening (MEDIUM)

Issue Repository Description Status
kcenon/messaging_system#190 messaging_system Strengthen conditional compilation guards 🔴 Open

Priority 5: Documentation (LOW)

Issue Repository Description Status
kcenon/container_system#182 container_system Document minimal dependency architecture 🔴 Open
kcenon/database_system#279 database_system Document adapter pattern best practices 🔴 Open

Child Issues Summary

Priority Repository Issue Title
1 common_system #233 deps: Add unified transport interfaces (IHttpClient, IUdpClient)
1 common_system #234 deps: Add unified metric collection interface (IMetricCollector)
2 monitoring_system #273 deps: Implement UDP and gRPC transport using common_system interfaces
2 network_system #342 deps: Decouple monitoring integration via EventBus pattern
3 logger_system #252 deps: Resolve bidirectional thread_system dependency risk
3 thread_system #336 deps: Resolve bidirectional logger_system dependency risk
4 messaging_system #190 deps: Strengthen optional dependency guards and fallback implementations
5 container_system #182 docs: Document minimal dependency architecture as reference pattern
5 database_system #279 docs: Document adapter pattern best practices for dependency management

Dependency Graph

                    ┌─────────────────────────────────────┐
                    │         Priority 1: Foundation       │
                    │                                      │
                    │   #233 Transport    #234 Monitoring  │
                    │   Interfaces        Interfaces       │
                    └─────────┬───────────────┬───────────┘
                              │               │
              ┌───────────────┼───────────────┼───────────────┐
              │               │               │               │
              ▼               ▼               ▼               ▼
    ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   ┌─────────────┐
    │monitoring#273│   │network#342  │   │logger#252   │   │thread#336   │
    │(Priority 2)  │   │(Priority 2) │   │(Priority 3) │   │(Priority 3) │
    └─────────────┘   └─────────────┘   └─────────────┘   └─────────────┘
              │               │               │               │
              └───────────────┴───────┬───────┴───────────────┘
                                      │
                                      ▼
                          ┌───────────────────┐
                          │  messaging#190    │
                          │  (Priority 4)     │
                          └───────────────────┘
                                      │
                                      ▼
                    ┌─────────────────────────────────────┐
                    │         Priority 5: Documentation    │
                    │                                      │
                    │  container#182      database#279     │
                    └─────────────────────────────────────┘

Acceptance Criteria

  • common_system provides IHttpClient, IUdpClient, IMetricCollector interfaces
  • No module has bidirectional compile-time dependencies
  • All modules can build in isolation with minimal preset
  • CI includes circular dependency detection script
  • Build order documented in top-level CMakeLists.txt

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureArchitectural changes and designepicEpic issue tracking multiple sub-taskspriority:highHigh priority issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions