- graph.json: Canonical dependency graph (10 crates, 16 edges, 76 files) - graph.summary.md: One-page overview with fan-in/fan-out rankings - sccs.md: Strongly Connected Components analysis (no cycles) - layers.observed.md: 5-layer architecture diagram - hotspots.md: Coupling hotspots (g3-config, g3-cli) - limitations.md: Extraction limitations and validity conditions
2.2 KiB
2.2 KiB
Strongly Connected Components Analysis
Summary
No cycles detected in the crate-level dependency graph.
The G3 workspace exhibits a clean DAG (Directed Acyclic Graph) structure at the crate level.
Analysis Method
Cycle detection performed via manual topological sort verification of the 16 internal dependency edges.
Topological Order (Valid)
The following topological ordering confirms acyclicity:
- g3-config (leaf)
- g3-execution (leaf)
- g3-computer-control (leaf)
- g3-providers (leaf)
- g3-core (depends on 1-4)
- g3-ensembles (depends on 1, 5)
- g3-planner (depends on 1, 4, 5)
- g3-cli (depends on 1, 4, 5, 6, 7)
- g3 (depends on 4, 8)
- g3-console (standalone)
Potential Coupling Concerns
While no cycles exist, the following patterns warrant attention:
Diamond Dependencies
g3-cli ──────────────────────────────┐
│ │
├── g3-core ── g3-config ◄─────────┤
│ │
├── g3-planner ── g3-config ◄──────┤
│ │
└── g3-ensembles ── g3-config ◄────┘
g3-config is reached via multiple paths from g3-cli. This is not a cycle but indicates g3-config is a shared foundation.
Similar Diamond for g3-core
g3-cli ──────────────────────────────┐
│ │
├── g3-core ◄──────────────────────┤
│ │
├── g3-planner ── g3-core ◄────────┤
│ │
└── g3-ensembles ── g3-core ◄──────┘
Module-Level Analysis
Module-level cycle detection was not performed. The use crate:: statements within each crate suggest internal module dependencies but these are expected within a single compilation unit.
Conclusion
The crate dependency structure is healthy with no circular dependencies.