14 lines
927 B
TypeScript
14 lines
927 B
TypeScript
import type { CandidateSnapshot } from "../rectification-v4/contracts.ts";
|
|
import type { DiagnosticsSummary, QuestionOpportunity, RectificationDecision } from "./contracts.ts";
|
|
|
|
export function deterministicDecision(input: Readonly<{
|
|
snapshot: CandidateSnapshot | null;
|
|
diagnostics: DiagnosticsSummary | null;
|
|
opportunities: readonly QuestionOpportunity[];
|
|
}>): RectificationDecision {
|
|
if (input.snapshot?.canAcceptRange) return { action: "offer_candidate_range", snapshotId: input.snapshot.id };
|
|
const top = input.opportunities.find((item) => item.active);
|
|
if (top) return { action: "ask_question", opportunityId: top.opportunityId, narrativeFocus: ["latest_event", ...(top.kind === "refine_event_date" ? ["date_precision" as const] : [])] };
|
|
return { action: "stop_low_confidence", reasonCodes: input.diagnostics ? ["no_high_value_question", "diagnostics_not_stable"] : ["insufficient_scoreable_evidence"] };
|
|
}
|