import type { RectificationDecision } from "../core/rectification-decision.ts"; export type RectificationLabel = | "blocked" | "user_history_verification_required" | "manual_pattern_consensus" | "single_adapter_support" | "multi_adapter_consensus"; export function rectificationLabel(input: { decision: Pick; supportedAdapterCount?: number; }): RectificationLabel { if (input.decision.stopReason === "insufficient_dated_events" || input.decision.stopReason === "insufficient_domains") { return "user_history_verification_required"; } if (input.decision.stopReason === "tied_first" || input.decision.stopReason === "user_uncertainty_too_high") { return "blocked"; } if (input.decision.nextAction === "ask_fact_collection" && input.decision.separation.ranked.length === 0) { return "blocked"; } const adapterCount = Math.max(0, Math.floor(input.supportedAdapterCount ?? 0)); if (adapterCount >= 2) return "multi_adapter_consensus"; if (adapterCount === 1) return "single_adapter_support"; return "manual_pattern_consensus"; }