Architecture Report

arcade_agent — version local — recovered with pkg

200
Entities
115
Dependencies
5
Components
3
Smells

Quality Metrics

0.852
RCI
0.788
TurboMQ
0.788
BasicMQ
0.015
IntraConnectivity
0.002
InterConnectivity
0.000
TwoWayPairRatio

Architecture Diagram

graph TD
    Default["Default\n(21 entities)"]
    Algorithms["Algorithms\n(65 entities)"]
    Exporters["Exporters\n(15 entities)"]
    Parsers["Parsers\n(58 entities)"]
    Tools["Tools\n(41 entities)"]
    Algorithms --> Tools
    Default --> Algorithms
    Default --> Parsers
    Exporters --> Tools
    Tools --> Default
    Tools --> Parsers
        
Package-based grouping (depth=1 after common prefix '') with dependency-affinity facade refinement (15 entities reassigned).

Components

Component Responsibility # Entities
Default Entities in (default) 21 budget._deep_copy, budget.enforce_budget, budget.estimate_tokens, budget.truncate_result, cache._cache_dir, cache.cache_key, cache.get_cached_graph, cache.invalidate_cache, ... (+13 more)
Algorithms Entities in algorithms 65 algorithms.acdc.acdc, algorithms.arc._arc_cluster_name, algorithms.arc._avg_structural_sim, algorithms.arc._build_concern_vectors, algorithms.arc._cluster_responsibility, algorithms.arc._js_divergence, algorithms.arc._js_similarity, algorithms.arc._kl_divergence, ... (+57 more)
Exporters Entities in exporters 15 exporters.dot._escape_dot, exporters.dot.export_dot, exporters.html.AlgorithmResult, exporters.html.build_snapshot_mermaid, exporters.html.export_comparison_html, exporters.html.export_evolution_html, exporters.html.export_html, exporters.json.build_component_summary, ... (+7 more)
Parsers Entities in parsers 58 models.graph, parsers.base.LanguageParser, parsers.base.LanguageParser.file_extensions, parsers.base.LanguageParser.language, parsers.base.LanguageParser.parse, parsers.base.detect_language, parsers.base.get_parser, parsers.base.register_parser, ... (+50 more)
Tools Entities in tools 41 tools.adapters.mcp._make_summary, tools.adapters.mcp._store, tools.adapters.mcp.get_server, tools.adapters.mcp.main, tools.explain_component.explain_component, tools.find_relevant._score_entity, tools.find_relevant._tokenize, tools.find_relevant.find_relevant, ... (+33 more)

Architectural Smells (3)

medium SmellType.DEPENDENCY_CYCLE

Circular dependency among 3 components: Algorithms <-> Default <-> Tools

Why: Dependency cycles make components tightly coupled — you cannot change, test, or deploy any component in the cycle independently. This hinders maintainability, increases build times, and makes the system harder to understand.

Fix: Break the cycle by introducing an interface/abstraction that one component depends on, inverting the dependency direction. Consider the Dependency Inversion Principle (DIP).

Affects: Algorithms, Default, Tools

medium SmellType.CONCERN_OVERLOAD

Default contains 21 entities but only 7 internal dependencies (0.33 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Default into smaller, focused components with single responsibilities.

Affects: Default

high SmellType.CONCERN_OVERLOAD

Tools contains 41 entities but only 7 internal dependencies (0.17 per entity), suggesting multiple responsibilities.

Why: Large components are harder to understand, test, and maintain. When their internals are also sparsely connected, that usually means the component is acting as a bucket for unrelated concerns rather than a cohesive module.

Fix: Consider splitting Tools into smaller, focused components with single responsibilities.

Affects: Tools

Dependency Summary

PackageEntities
parsers 57
algorithms 55
tools 44
(default) 19
exporters 14
tools.adapters 7
models 4