feat: enforce reasoning pattern consistency
This commit is contained in:
@@ -1434,5 +1434,65 @@ describe("applyValidatedProposal", () => {
|
||||
expect(secondResult.selectedQuestion?.question.toLowerCase()).not.toMatch(
|
||||
/price|budget|market size|pilot metrics|benchmark|technical differentiation/,
|
||||
);
|
||||
expect(secondResult.reasoningPatternValidation).toMatchObject({
|
||||
activePattern: "decision",
|
||||
valid: true,
|
||||
});
|
||||
expect(secondResult.graphReasoningIntegrity).toBe("valid");
|
||||
expect(secondResult.incompatibleNodeIds).toEqual([]);
|
||||
expect(secondResult.compatibilityFailures).toEqual([]);
|
||||
});
|
||||
|
||||
it("does not allow a decision-mode active unknown to remain a comparison child", () => {
|
||||
const graph = makeCommercialUpdateFixture();
|
||||
graph.nodes.push(
|
||||
makeNode({
|
||||
id: "n-commercial-comparison-child",
|
||||
label: "How the two observations were measured",
|
||||
description:
|
||||
"Need evidence about the measure used for each observation before comparing them.",
|
||||
kind: "unknown",
|
||||
status: "unknown",
|
||||
confidence: "medium",
|
||||
parentId: "n-commercial-parent",
|
||||
}),
|
||||
);
|
||||
graph.activeUnknownNodeId = "n-commercial-comparison-child";
|
||||
|
||||
const result = applyValidatedProposal({
|
||||
situationGraph: graph,
|
||||
proposal: makeMeaningfulNoOpProposal(),
|
||||
});
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(result.reasoningPatternValidation).toMatchObject({
|
||||
activePattern: "decision",
|
||||
valid: true,
|
||||
});
|
||||
expect(result.graphReasoningIntegrity).toBe("valid");
|
||||
expect(result.incompatibleNodeIds).toContain(
|
||||
"n-commercial-comparison-child",
|
||||
);
|
||||
expect(result.compatibilityFailures).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
nodeId: "n-commercial-comparison-child",
|
||||
activePattern: "decision",
|
||||
nodePattern: "comparison",
|
||||
}),
|
||||
]),
|
||||
);
|
||||
expect(result.replacementActions).toEqual(
|
||||
expect.arrayContaining([
|
||||
expect.objectContaining({
|
||||
rejectedNodeId: "n-commercial-comparison-child",
|
||||
replacementNodeId: result.selectedQuestion?.nodeId,
|
||||
}),
|
||||
]),
|
||||
);
|
||||
expect(result.selectedQuestion?.nodeId).not.toBe(
|
||||
"n-commercial-comparison-child",
|
||||
);
|
||||
expect(result.selectedQuestion?.reasoningPattern).toBe("decision");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user