58 lines
2.0 KiB
Go
58 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"git.cin.su/m/Assistant/contracts/capability"
|
|
"git.cin.su/m/Assistant/contracts/epistemics"
|
|
"git.cin.su/m/Assistant/contracts/interaction"
|
|
)
|
|
|
|
type learningEpistemicsStub struct {
|
|
experiences []epistemics.ExperienceRecord
|
|
}
|
|
|
|
func (s *learningEpistemicsStub) SaveSystemExpectation(context.Context, epistemics.SystemExpectation) error {
|
|
return nil
|
|
}
|
|
func (s *learningEpistemicsStub) SaveExperienceRecord(_ context.Context, value epistemics.ExperienceRecord) error {
|
|
s.experiences = append(s.experiences, value)
|
|
return nil
|
|
}
|
|
func (s *learningEpistemicsStub) SaveReflectionCandidate(context.Context, epistemics.ReflectionCandidate) error {
|
|
return nil
|
|
}
|
|
|
|
type learningCapabilityStub struct {
|
|
loadCalls int
|
|
saveCalls int
|
|
}
|
|
|
|
func (s *learningCapabilityStub) LoadSkillProfile(context.Context, capability.SkillProfileID) (capability.SkillProfile, error) {
|
|
s.loadCalls++
|
|
return capability.SkillProfile{}, nil
|
|
}
|
|
func (s *learningCapabilityStub) SaveSkillProfile(context.Context, capability.SkillProfile) error {
|
|
s.saveCalls++
|
|
return nil
|
|
}
|
|
|
|
func TestGenericCorrectionDoesNotDegradeReminderSkill(t *testing.T) {
|
|
epistemicsStore := &learningEpistemicsStub{}
|
|
capabilityStore := &learningCapabilityStub{}
|
|
recorder := learningRecorder{epistemics: epistemicsStore, capability: capabilityStore}
|
|
recorder.recordCorrection(context.Background(), correctionLearningInput{
|
|
Intent: interaction.OriginalHumanIntent{ID: "intent-1"},
|
|
Utterance: interaction.HumanUtterance{ID: "utterance-1"},
|
|
At: time.UnixMilli(1000),
|
|
})
|
|
if capabilityStore.loadCalls != 0 || capabilityStore.saveCalls != 0 {
|
|
t.Fatalf("generic correction must not mutate reminder skill: load=%d save=%d", capabilityStore.loadCalls, capabilityStore.saveCalls)
|
|
}
|
|
if len(epistemicsStore.experiences) != 1 || epistemicsStore.experiences[0].SkillRef != "" {
|
|
t.Fatalf("generic correction must remain evidence without a reminder skill reference: %#v", epistemicsStore.experiences)
|
|
}
|
|
}
|