Cyclic Hub

Tier 2
cyclic_hub

Part of a dependency cycle. Hard to test in isolation; changes cascade in ways that are difficult to predict. Break cycles by introducing an abstraction or inverting a dependency.

Repos Detected 8
Avg Top Risk 33.0
Tier Relational / Temporal
mudler/LocalAI
go ×4

LocalAI's static asset layer carries the highest activity risk

When I ran Hotspots against mudler/LocalAI, the highest activity-weighted risk scores didn't surface in the Go inference engine or the model-loading pipeline — they surfaced in two bundled JavaScript files served as static assets. Three of the five hotspots I found live in a single file, core/http/static/assets/htmx.js, which means any team member touching that module is navigating a dense web of structurally complex, interacting functions all at once.

risk 42.3 Read →
redis/redis
c ×4

redis/redis's module and networking layer carries the highest structural debt — 5 functions to address first

The riskiest function in redis/redis hasn't been touched in 51 days, but when it is next changed, whoever opens it will face a nesting depth of 13 and a long if-else chain dispatching across more than a dozen distinct server events. That structural weight is sitting silently in five critical-band functions spread across the module system, client lifecycle, cluster slot migration, and blocked-client machinery — none of them are burning right now, but all of them are overdue for refactoring before the next development push.

risk 38.6 Read →
rust-lang/cargo
rust ×6

Cargo's registry and workspace parsing carry the highest activity risk

Five functions in cargo stand out for structural complexity, some under active recent change and some sitting as dormant debt. Top of the list: the publish command in the registry code, carrying an activity-weighted risk score of 26.58 and touched just 6 days ago.

risk 26.6 Read →
appsmithorg/appsmith
typescript ×4

appsmith's bundled ECharts tops activity risk — 5 functions to address first

Four of appsmith's five top-ranked hotspots live inside a single bundled third-party file. The fifth — evaluateTree, in the data evaluation worker — is genuine application logic that will move to rank one after the ECharts bundle is excluded. For the four bundle entries, the action isn't a refactoring sprint; it's an exclusion rule and a package-manager migration.

risk 24.4 Read →
eslint/eslint
javascript ×2

eslint's rule engine carries the highest activity risk — 2 functions to address first

The eslint rule most developers rely on to catch dead code also has 114 independent execution paths — and it's still being actively changed. That combination is a live regression risk, not a cleanup b

Read →
usebruno/bruno
javascript ×5

bruno's OpenAPI sync and CLI runner carry the highest activity risk — 3 functions to address first

Two anonymous god-functions in openapi-sync.js (CC 135, CC 100) and a CLI runner function (CC 169) are both structurally extreme and actively changing, making them live regression risks in bruno's request execution layer.

Read →
CodePhiliaX/Chat2DB
java ×4

Chat2DB's SQL processing layer carries the highest activity risk — 3 functions to address first

Chat2DB has 385 critical functions across 6,984 analyzed — and its SQL split processor alone carries a cyclomatic complexity of 58 with 38 distinct callees. Here's what to fix first.

Read →
FuelLabs/fuels-rs
rust

fuels-rs's docs theme carries the highest activity risk — 5 vendored functions to address first

Every one of fuels-rs's top 5 hotspots lives inside a single vendored file. The real Rust codebase deserves a closer look once that noise is filtered out.

Read →

Other Patterns