From 7b71216a05f6f1f93d98d4720a14f1c4417b3f4a Mon Sep 17 00:00:00 2001 From: Mikhail Date: Tue, 25 Aug 2026 02:25:06 +0300 Subject: [PATCH] Keep explicit preferences on the local route --- cmd/core-runtime/cognitive_interpretation.go | 4 ++++ cmd/core-runtime/cognitive_interpretation_test.go | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/cmd/core-runtime/cognitive_interpretation.go b/cmd/core-runtime/cognitive_interpretation.go index 357620e..3ab05d4 100644 --- a/cmd/core-runtime/cognitive_interpretation.go +++ b/cmd/core-runtime/cognitive_interpretation.go @@ -90,6 +90,10 @@ func shouldRequestSemanticInterpretation(result interactiondomain.SemanticResult switch result.Interpretation.SpeechAct { case interaction.SpeechActConversational, interaction.SpeechActConfirmation, interaction.SpeechActRejection: return false + case interaction.SpeechActPreference: + // Explicit user preferences are durable interaction context. A sampled + // advisory audit must not reinterpret or erase them. + return false case interaction.SpeechActAssertion: return result.Interpretation.ConfidenceMillis < 850 default: diff --git a/cmd/core-runtime/cognitive_interpretation_test.go b/cmd/core-runtime/cognitive_interpretation_test.go index f7d1b5c..cf8c4cf 100644 --- a/cmd/core-runtime/cognitive_interpretation_test.go +++ b/cmd/core-runtime/cognitive_interpretation_test.go @@ -74,3 +74,12 @@ func TestMeaningfulSignalsAreNotReflexOnly(t *testing.T) { } } } + +func TestExplicitPreferenceIsNotReinterpretedByCognitiveAudit(t *testing.T) { + result := interactiondomain.SemanticResult{Interpretation: interaction.UtteranceInterpretation{ + SpeechAct: interaction.SpeechActPreference, Applicability: interaction.SemanticApplicable, + }} + if shouldRequestSemanticInterpretation(result) || shouldAuditDeterministicReflex(result, "preference", time.Unix(0, 0)) { + t.Fatal("explicit preference must remain on the deterministic durable-context path") + } +} -- 2.54.0