import type { UnitManifest } from "../types.js"; import type { ExternalAnalyzerResults } from "audit-tools/shared"; import type { CriticalFlowManifest, RiskRegister } from "audit-tools/shared"; import type { GraphSignals } from "./graphSignals.js"; /** * CCU-analyzer-merge-helper-seam (risk half). * * Append an analyzer's per-unit risk signals into a risk register, returning a * NEW register (the input is never mutated). This is the single, pre-shipped * seam through which any post-build analyzer risk contribution — git-history * change-hotspot / broad-authorship, and any later acquired analyzer — re-enters * the register, so contributions can never drift in how they merge. * * Each entry of `signalsByUnit` (keyed by `unit_id`) is unioned into the * matching item's `signals`, deduped and re-sorted for determinism. Signals for * an unknown unit are ignored. `risk_score` is intentionally untouched — these * are informational signals; score weighting stays owned by `buildRiskRegister`. * Degrades to the original register (cloned) when the map is empty. */ export declare function mergeAnalyzerRiskSignals(register: RiskRegister, signalsByUnit: Map | undefined): RiskRegister; /** * Derive the churn × complexity compound signal — the real risk concentration. * Frequent change (`change_hotspot`, from git-history mining) on code that is * also structurally complex (`high_complexity`, from node_metrics) is where bugs * actually concentrate: each measures a different axis, and their coincidence is * a stronger prioritization cue than either alone. Returns a NEW register (input * never mutated). Kept informational (the seam invariant: analyzer-derived * signals never touch `risk_score`, which `buildRiskRegister` owns) — the signal * surfaces the concentration to lenses / synthesis without re-weighting score. * Idempotent: re-running never double-adds (signals are a deduped set). */ export declare function deriveRiskConcentration(register: RiskRegister): RiskRegister; export declare function buildRiskRegister(unitManifest: UnitManifest, criticalFlows?: CriticalFlowManifest, externalAnalyzerResults?: ExternalAnalyzerResults[], graphSignals?: GraphSignals): RiskRegister; //# sourceMappingURL=risk.d.ts.map