# Analysis Limitations ## What Was Observed | Source | Method | Confidence | |--------|--------|------------| | Crate dependencies | Parsed from Cargo.toml `[dependencies]` sections | High | | External crate imports | Regex match on `use g3_*::` statements | High | | Module declarations | Regex match on `mod` and `pub mod` statements | High | | File classification | Path pattern matching (tests/, examples/, lib.rs, etc.) | High | ## What Was Not Observed ### 1. Internal Module Imports `use crate::` statements were detected but not resolved to specific target files. **Impact**: File-to-file edges within a crate are incomplete. Only `mod` declaration edges are captured. **Example not captured**: ```rust // In ./crates/g3-core/src/streaming.rs use crate::context_window::ContextWindow; // Edge to context_window.rs not in graph ``` ### 2. Re-exports `pub use` statements that re-export items from submodules are not tracked as separate edges. **Impact**: Transitive dependencies through re-exports are not visible. **Example**: ```rust // In ./crates/g3-core/src/lib.rs pub use context_window::{ContextWindow, ThinScope}; // Re-export not tracked ``` ### 3. Conditional Compilation `#[cfg(...)]` attributes on imports are not parsed. All imports are treated as unconditional. **Impact**: Platform-specific dependencies (e.g., macOS-only code in g3-computer-control) appear as universal. ### 4. Macro-Generated Imports Imports generated by macros (e.g., `derive` macros, `include!`) are not detected. **Impact**: Some edges may be missing if macros generate `use` statements. ### 5. Dev-Dependencies Only `[dependencies]` sections were parsed. `[dev-dependencies]` were not included in crate-level edges. **Impact**: Test-only dependencies (e.g., `tempfile`, `serial_test`) are not in the graph. ### 6. Build Dependencies `[build-dependencies]` were not parsed. **Impact**: Build script dependencies are not represented. ### 7. Feature-Gated Dependencies Cargo features that enable optional dependencies are not tracked. **Impact**: Optional dependencies appear the same as required ones. ### 8. Workspace Dependencies `[workspace.dependencies]` are resolved but the inheritance relationship is not tracked. **Impact**: Cannot distinguish workspace-inherited vs crate-specific dependency versions. ## What Was Inferred | Inference | Basis | Confidence | |-----------|-------|------------| | File type classification | Filename and path patterns | Medium-High | | Module file resolution | Rust module naming conventions (mod.rs, name.rs) | High | | Crate membership | File path prefix matching | High | ## Potential Invalidation Conditions 1. **Non-standard module structure**: If any crate uses `#[path = "..."]` attributes to override module paths, those edges will be incorrect. 2. **Generated code**: If any `.rs` files are generated at build time (not checked into git), they are not included. 3. **Symlinks**: Symbolic links in the source tree are not followed or detected. 4. **External workspace members**: Only crates in `./crates/` and root `./src/` were analyzed. External workspace members would be missed. ## Verification Commands To verify crate-level dependencies match Cargo's resolution: ```bash cargo tree --prefix none --no-dedupe | grep '^g3-' ``` To find imports not captured by this analysis: ```bash rg 'use crate::' --type rust | wc -l # Internal imports (not fully resolved) rg 'pub use' --type rust | wc -l # Re-exports (not tracked) ```