/** * graph:cycle — flag call-graph cycles (strongly-connected components of size * ≥ 2) at function/SCC granularity. Reads the `scc` feature column (Phase C's * Tarjan; NO in-rule cycle detection). Bounded + actionable per ADR-0001: the * count reaches zero when every cycle is broken; the fix is "invert one * dependency or extract the shared piece." * * Severity ladder (defaults from the dashboard's former SCCs view, * `view-sccs.ts`: "size 2 usually fine; size 3+ spanning packages is a layering * smell"): * - `sccSize === 1` → no signal (not a cycle). * - `crossesPackages` → base `high` (regardless of size — cross-package * cycles are the most expensive to unwind; they * win the ladder). * - `sccSize === 2` → `config.cycleSize2Severity` (default `'off'` → * no signal; `'low'` → base `low`). * - `sccSize >= cycleMinSize` (default 3) → base `medium`. * * One signal PER SCC (not per member) — anchored on the lowest-`qualifiedName` * member occurrence so a single tangle never produces N findings. This is the * function/SCC-granularity de-dup counterpart to `unexpected-coupling`'s * package granularity (distinct `ruleId` + `code` → distinct fingerprints, * cross-linked via metadata). * * Emitted severity routes through the opt-in `applySeverityOverride` clamp * (ADR-0005). */ export declare const cycleRule: import("../types.js").Rule; //# sourceMappingURL=cycle.d.ts.map