Files
g3/analysis/deps/sccs.md
Dhanji R. Prasanna 6d6aed563d Add structural dependency analysis artifacts
- 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
2026-01-06 13:23:24 +11:00

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:

  1. g3-config (leaf)
  2. g3-execution (leaf)
  3. g3-computer-control (leaf)
  4. g3-providers (leaf)
  5. g3-core (depends on 1-4)
  6. g3-ensembles (depends on 1, 5)
  7. g3-planner (depends on 1, 4, 5)
  8. g3-cli (depends on 1, 4, 5, 6, 7)
  9. g3 (depends on 4, 8)
  10. 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.