{"version":3,"file":"consistency.test.d.ts","sourceRoot":"","sources":["../../../src/core/web-research/consistency.test.ts"],"names":[],"mappings":"","sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { ConsistencyGate } from \"./consistency.js\";\n\ndescribe(\"conclusion consistency gate\", () => {\n\tit(\"flags a recommendation ranked above a clearly higher-computed option\", () => {\n\t\tconst gate = new ConsistencyGate();\n\t\tconst issues = gate.checkRecommendationOrdering({\n\t\t\trankedRecommendations: [\n\t\t\t\t{ id: \"b\", label: \"Option B\", computedMetric: 217 },\n\t\t\t\t{ id: \"a\", label: \"Option A\", computedMetric: 250 },\n\t\t\t],\n\t\t\tcomputedMetrics: [\n\t\t\t\t{ id: \"b\", label: \"Option B\", computedMetric: 217 },\n\t\t\t\t{ id: \"a\", label: \"Option A\", computedMetric: 250 },\n\t\t\t],\n\t\t});\n\t\texpect(issues.some((issue) => issue.kind === \"rank_contradicts_metric\")).toBe(true);\n\t\texpect(issues.some((issue) => issue.severity === \"error\")).toBe(true);\n\t});\n\n\tit(\"accepts ordering that matches the computed metrics\", () => {\n\t\tconst gate = new ConsistencyGate();\n\t\tconst issues = gate.checkRecommendationOrdering({\n\t\t\trankedRecommendations: [\n\t\t\t\t{ id: \"a\", label: \"Option A\", computedMetric: 250 },\n\t\t\t\t{ id: \"b\", label: \"Option B\", computedMetric: 217 },\n\t\t\t],\n\t\t\tcomputedMetrics: [\n\t\t\t\t{ id: \"a\", label: \"Option A\", computedMetric: 250 },\n\t\t\t\t{ id: \"b\", label: \"Option B\", computedMetric: 217 },\n\t\t\t],\n\t\t});\n\t\texpect(issues.filter((issue) => issue.kind === \"rank_contradicts_metric\")).toHaveLength(0);\n\t});\n\n\tit(\"warns about unresolved temporal state in a definite-current conclusion\", () => {\n\t\tconst gate = new ConsistencyGate();\n\t\tconst issues = gate.checkUnresolvedTemporal({\n\t\t\ttemporalResolutions: [{ sourceUrl: \"u\", evidenceId: \"c1\", class: \"contradiction\", value: 120, reasoning: [] }],\n\t\t});\n\t\texpect(issues.some((issue) => issue.kind === \"unresolved_temporal\")).toBe(true);\n\t});\n});\n"]}