Refreshed static analysis of workspace dependency structure: - graph.json: 10 crates, 17 crate-level edges, 95 files, 123 file-level edges - graph.summary.md: Updated metrics and fan-in/fan-out rankings - sccs.md: Confirmed no cycles (DAG structure intact) - layers.observed.md: 5-layer hierarchy from binaries to infrastructure - hotspots.md: Identified g3-config, g3-providers as high fan-in; g3-cli as high fan-out - limitations.md: Documented extraction method constraints Agent: euler
3.5 KiB
3.5 KiB
Coupling Hotspots
Method
Hotspots identified by:
- Fan-in > 2× average (high incoming dependencies)
- Fan-out > 2× average (high outgoing dependencies)
- Cross-group edge concentration
Metrics
Crate Level
| Metric | Value |
|---|---|
| Average fan-in | 2.0 |
| Average fan-out | 1.7 |
| Threshold (2×) | 4.0 / 3.4 |
File Level
| Metric | Value |
|---|---|
| Total edges | 123 |
| Total files | 95 |
| Average fan-out | 1.3 |
| Threshold (2×) | 2.6 |
Crate-Level Hotspots
High Fan-In (Most Depended Upon)
| Crate | Fan-In | Status |
|---|---|---|
| g3-config | 4 | HOTSPOT (2× avg) |
| g3-providers | 4 | HOTSPOT (2× avg) |
| g3-core | 3 | Near threshold |
Evidence for g3-config:
- Depended on by: g3-cli, g3-core, g3-planner, g3-ensembles
- Contains: Configuration types, loading logic
Evidence for g3-providers:
- Depended on by: g3, g3-cli, g3-core, g3-planner
- Contains: LLM provider trait, message types, streaming
High Fan-Out (Most Dependencies)
| Crate | Fan-Out | Status |
|---|---|---|
| g3-cli | 6 | HOTSPOT (3.5× avg) |
| g3-core | 4 | HOTSPOT (2.4× avg) |
| g3-planner | 3 | Near threshold |
Evidence for g3-cli:
- Depends on: g3-core, g3-config, g3-planner, g3-computer-control, g3-providers, g3-ensembles
- Role: Top-level integration point
Evidence for g3-core:
- Depends on: g3-providers, g3-config, g3-execution, g3-computer-control
- Role: Central engine with multiple infrastructure dependencies
File-Level Hotspots
High Fan-Out Files
| File | Fan-Out | Threshold | Status |
|---|---|---|---|
| crates/g3-core/src/lib.rs | 29 | 2.6 | HOTSPOT (22× avg) |
| crates/g3-cli/src/lib.rs | 17 | 2.6 | HOTSPOT (13× avg) |
| crates/g3-core/src/tools/mod.rs | 9 | 2.6 | HOTSPOT (7× avg) |
| crates/g3-planner/src/lib.rs | 8 | 2.6 | HOTSPOT (6× avg) |
| crates/g3-providers/src/lib.rs | 6 | 2.6 | HOTSPOT (4.6× avg) |
| crates/g3-computer-control/src/lib.rs | 5 | 2.6 | HOTSPOT (3.8× avg) |
| crates/g3-planner/src/llm.rs | 5 | 2.6 | HOTSPOT (3.8× avg) |
Note: High fan-out in lib.rs files is expected (module re-exports). The tools/mod.rs and llm.rs hotspots are more significant as they represent actual coupling.
Cross-Crate Import Concentration
| Source File | Cross-Crate Imports |
|---|---|
| crates/g3-cli/src/lib.rs | 5 (g3-core, g3-config, g3-providers, g3-planner, g3-ensembles) |
| crates/g3-planner/src/llm.rs | 4 (g3-config, g3-core, g3-providers) |
| crates/g3-cli/src/autonomous.rs | 2 (g3-core) |
| crates/g3-cli/src/task_execution.rs | 2 (g3-core) |
Observations
- g3-core/src/lib.rs has extreme fan-out (29 edges) due to declaring 22+ modules
- g3-config and g3-providers are foundational crates with high fan-in
- g3-cli is the integration hub, pulling together all subsystems
- tools/mod.rs aggregates 9 tool modules - natural aggregation point
- g3-planner/src/llm.rs has notable cross-crate coupling (imports from 3 other crates)
Cross-Group Edges
Total cross-crate imports: 43
| From Crate | To Crate | Count |
|---|---|---|
| g3-cli | g3-core | 21 |
| g3-cli | g3-config | 4 |
| g3-cli | g3-providers | 2 |
| g3-planner | g3-core | 5 |
| g3-planner | g3-providers | 4 |
| g3-planner | g3-config | 2 |
| g3-core | g3-providers | 8 |
| g3-core | g3-config | 3 |
| g3-core | g3-computer-control | 2 |
| g3-ensembles | g3-core | 1 |
| g3-ensembles | g3-config | 1 |