feat: enforce reasoning pattern consistency

This commit is contained in:
2026-08-03 12:10:57 +01:00
parent 3e2edd2edc
commit c27320984c
6 changed files with 931 additions and 17 deletions
+63
View File
@@ -65,6 +65,12 @@ function buildDiagnostics({
rejectedQuestionFamilies,
selectedQuestionTemplate,
reasoningPatternReason,
reasoningPatternValidation,
patternCompatibleNodeCount,
incompatibleNodeIds,
compatibilityFailures,
replacementActions,
graphReasoningIntegrity,
}) {
return {
promptVersion: analysis?.promptVersion ?? null,
@@ -100,6 +106,12 @@ function buildDiagnostics({
rejectedQuestionFamilies: rejectedQuestionFamilies ?? [],
selectedQuestionTemplate: selectedQuestionTemplate ?? null,
reasoningPatternReason: reasoningPatternReason ?? null,
reasoningPatternValidation: reasoningPatternValidation ?? null,
patternCompatibleNodeCount: patternCompatibleNodeCount ?? 0,
incompatibleNodeIds: incompatibleNodeIds ?? [],
compatibilityFailures: compatibilityFailures ?? [],
replacementActions: replacementActions ?? [],
graphReasoningIntegrity: graphReasoningIntegrity ?? null,
};
}
@@ -200,6 +212,12 @@ function buildUpdateDiagnostics({
candidateNodeIds,
resolvedCurrentTurnNodeIds,
noQuestionReason,
reasoningPatternValidation,
patternCompatibleNodeCount,
incompatibleNodeIds,
compatibilityFailures,
replacementActions,
graphReasoningIntegrity,
}) {
return {
promptVersion: promptVersion ?? "v0.4",
@@ -291,6 +309,12 @@ function buildUpdateDiagnostics({
candidateNodeIds: candidateNodeIds ?? [],
resolvedCurrentTurnNodeIds: resolvedCurrentTurnNodeIds ?? [],
noQuestionReason: noQuestionReason ?? null,
reasoningPatternValidation: reasoningPatternValidation ?? null,
patternCompatibleNodeCount: patternCompatibleNodeCount ?? 0,
incompatibleNodeIds: incompatibleNodeIds ?? [],
compatibilityFailures: compatibilityFailures ?? [],
replacementActions: replacementActions ?? [],
graphReasoningIntegrity: graphReasoningIntegrity ?? null,
unknownSelectionExplanation: unknownSelectionExplanation ?? null,
};
}
@@ -419,6 +443,16 @@ export async function startCase(body) {
reasoningPatternReason:
initialQuestionResult.selectedQuestion?.reasoningPatternReason ??
null,
reasoningPatternValidation:
initialQuestionResult.reasoningPatternValidation ?? null,
patternCompatibleNodeCount:
initialQuestionResult.patternCompatibleNodeCount ?? 0,
incompatibleNodeIds: initialQuestionResult.incompatibleNodeIds ?? [],
compatibilityFailures:
initialQuestionResult.compatibilityFailures ?? [],
replacementActions: initialQuestionResult.replacementActions ?? [],
graphReasoningIntegrity:
initialQuestionResult.graphReasoningIntegrity ?? null,
}),
validationErrors: graphReferenceValidation.errors,
statusCode: 500,
@@ -475,6 +509,15 @@ export async function startCase(body) {
null,
reasoningPatternReason:
initialQuestionResult.selectedQuestion?.reasoningPatternReason ?? null,
reasoningPatternValidation:
initialQuestionResult.reasoningPatternValidation ?? null,
patternCompatibleNodeCount:
initialQuestionResult.patternCompatibleNodeCount ?? 0,
incompatibleNodeIds: initialQuestionResult.incompatibleNodeIds ?? [],
compatibilityFailures: initialQuestionResult.compatibilityFailures ?? [],
replacementActions: initialQuestionResult.replacementActions ?? [],
graphReasoningIntegrity:
initialQuestionResult.graphReasoningIntegrity ?? null,
}),
};
}
@@ -675,6 +718,12 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
candidateNodeIds: [],
resolvedCurrentTurnNodeIds: [],
noQuestionReason: null,
reasoningPatternValidation: null,
patternCompatibleNodeCount: 0,
incompatibleNodeIds: [],
compatibilityFailures: [],
replacementActions: [],
graphReasoningIntegrity: null,
plainLanguageNormalisations: [],
unknownSelectionExplanation: explainUnknownSelection(
situationGraph,
@@ -780,6 +829,14 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
resolvedCurrentTurnNodeIds:
applicationResult.resolvedCurrentTurnNodeIds,
noQuestionReason: applicationResult.noQuestionReason,
reasoningPatternValidation:
applicationResult.reasoningPatternValidation,
patternCompatibleNodeCount:
applicationResult.patternCompatibleNodeCount,
incompatibleNodeIds: applicationResult.incompatibleNodeIds,
compatibilityFailures: applicationResult.compatibilityFailures,
replacementActions: applicationResult.replacementActions,
graphReasoningIntegrity: applicationResult.graphReasoningIntegrity,
plainLanguageNormalisations:
applicationResult.plainLanguageNormalisations,
reasoningPattern:
@@ -876,6 +933,12 @@ async function updateCaseWithDependencies(body, dependencies = {}) {
candidateNodeIds: [],
resolvedCurrentTurnNodeIds: [],
noQuestionReason: null,
reasoningPatternValidation: null,
patternCompatibleNodeCount: 0,
incompatibleNodeIds: [],
compatibilityFailures: [],
replacementActions: [],
graphReasoningIntegrity: null,
plainLanguageNormalisations: [],
reasoningPattern: null,
questionFamily: null,