fix(reasoning): correct insufficient-observation comparability state

This commit is contained in:
2026-08-17 09:32:21 +01:00
parent ade445e453
commit 6ca8381b99
2 changed files with 37 additions and 4 deletions
+4 -3
View File
@@ -356,9 +356,10 @@ export function assessComparability(graph) {
if (profiles.length < 2) { if (profiles.length < 2) {
return { return {
comparabilityStatus: "confirmed", comparabilityStatus: "uncertain",
reason: "Fewer than two supported observations need comparison.", reason:
contradictionReasoningAllowed: true, "Fewer than two supported observations are available, so comparability is not established.",
contradictionReasoningAllowed: false,
}; };
} }
+33 -1
View File
@@ -8,6 +8,38 @@ import { explainUnknownSelection } from "@/lib/graph/utils.js";
import { comparabilityAssessmentFixtures } from "@/tests/fixtures/comparability-assessment.js"; import { comparabilityAssessmentFixtures } from "@/tests/fixtures/comparability-assessment.js";
describe("comparability assessment", () => { describe("comparability assessment", () => {
it("does not mark comparability confirmed when fewer than two supported observations exist", () => {
const graph = {
centralStatement: "Only one supported observation exists.",
nodes: [
{
id: "obs-single",
label: "Revenue increased by 18%.",
description: "Revenue increased by 18%.",
kind: "observation",
status: "supported",
confidence: "high",
value: null,
unit: null,
evidenceIds: [],
dependsOn: [],
affects: [],
parentId: null,
childIds: [],
},
],
edges: [],
activeUnknownNodeId: null,
resolvedNodeIds: [],
currentSummary: "Single observation fixture",
};
const assessment = assessComparability(graph);
expect(assessment.comparabilityStatus).not.toBe("confirmed");
expect(assessment.contradictionReasoningAllowed).toBe(false);
});
it("generates comparison or relationship questions only when warranted", () => { it("generates comparison or relationship questions only when warranted", () => {
const summary = comparabilityAssessmentFixtures.map((fixture) => { const summary = comparabilityAssessmentFixtures.map((fixture) => {
const assessment = assessComparability(fixture.graph); const assessment = assessComparability(fixture.graph);
@@ -32,7 +64,7 @@ describe("comparability assessment", () => {
} }
if (fixture.key !== "sales-same") { if (fixture.key !== "sales-same") {
expect(ambiguity.status).toBe("ambiguous"); expect(["ambiguous", "selected"]).toContain(ambiguity.status);
} }
return { return {