Section 6.2Source:
server/src/analytics/health/cycles/calculateCycleHealth.tsCycle Health (28%)
Evaluates the proportion of files and symbols entangled in circular dependencies, capping maximum risk at 10% cyclic node participation.
Source:
server/src/analytics/health/cycles/calculateCycleHealth.tsMathematical Formulation
Cycle health calculates the proportion of files and symbols that participate in any discovered SCC:
Mathematical Definition
12345678fileCycleRatio = cyclicFiles.size / totalFiles; symbolCycleRatio = cyclicSymbols.size / totalSymbols; cycleRatio = (fileCycleRatio + symbolCycleRatio) / 2; // 10% participation represents maximum structural risk: normalizedRisk = Math.min(cycleRatio / 0.10, 1.0); score = 100 * (1 - normalizedRisk);
Why Cycles Carry 28% Weight
Circular dependencies are the single highest weighted metric (28%) because cycles break topological orderings, introduce undefined variable imports at module evaluation time, and force tightly coupled refactorings across files.