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
45 lines
1.3 KiB
Markdown
45 lines
1.3 KiB
Markdown
# Strongly Connected Components Analysis
|
|
|
|
## Method
|
|
|
|
Tarjan's algorithm applied to file-level dependency graph.
|
|
|
|
Edge types considered:
|
|
- `mod_declaration`: Parent module declares child module
|
|
- `cross_crate_import`: File imports from another crate
|
|
|
|
## Results
|
|
|
|
**No non-trivial SCCs detected.**
|
|
|
|
The file-level dependency graph is acyclic. All `mod` declarations form a strict tree structure within each crate, and cross-crate imports follow the crate dependency DAG.
|
|
|
|
## Crate-Level Cycle Analysis
|
|
|
|
The crate dependency graph was also analyzed:
|
|
|
|
```
|
|
g3 → g3-cli → g3-core → g3-providers
|
|
→ g3-config
|
|
→ g3-execution
|
|
→ g3-computer-control
|
|
→ g3-planner → g3-core
|
|
→ g3-providers
|
|
→ g3-config
|
|
→ g3-ensembles → g3-core
|
|
→ g3-config
|
|
```
|
|
|
|
**No cycles detected at crate level.**
|
|
|
|
The workspace forms a directed acyclic graph (DAG) with:
|
|
- Leaf crates: `g3-providers`, `g3-config`, `g3-execution`, `g3-computer-control`, `studio`
|
|
- Mid-tier crates: `g3-core`, `g3-planner`, `g3-ensembles`
|
|
- Top-tier crates: `g3-cli`, `g3`
|
|
|
|
## Implications
|
|
|
|
- No circular dependencies exist
|
|
- Build order is deterministic
|
|
- Crates can be compiled in parallel respecting the DAG
|