feat(ai-sdk): Advisor Reasoning Stack — Clarity+G1+Concept-Injector+Context-Scope+Term-Resolution+E4-Curation+Intent-Signal

This commit is contained in:
Claude
2026-07-01 15:27:23 +02:00
parent a606000a20
commit e901447096
12 changed files with 902 additions and 10 deletions
@@ -0,0 +1,64 @@
package ucca
import "testing"
func TestKnowledgeSpaceOf(t *testing.T) {
cases := map[string]string{
"DSGVO": "datenschutz",
"BDSG": "datenschutz",
"DSK SDM B51 ZUGRIFFE": "datenschutz",
"EDPS DIGITAL ETHICS": "datenschutz",
"TRGS 900": "arbeitsschutz",
"OSHA 1910 SUBPART O": "arbeitsschutz",
"HGB": "wirtschaftsrecht",
"BGB": "wirtschaftsrecht",
"MASCHINENVO": "produktsicherheit",
"MVO": "produktsicherheit",
"CRA": "cyber",
"NIST SP800 53R5": "cyber",
"AI ACT": "ki",
"KI-VO": "ki",
"DORA": "finanz",
"ARG": "arbeitsrecht",
"": "",
}
for code, want := range cases {
if got := KnowledgeSpaceOf(code); got != want {
t.Errorf("KnowledgeSpaceOf(%q)=%q want %q", code, got, want)
}
}
}
func TestClassifyClarity(t *testing.T) {
scattered := []LegalSearchResult{
{RegulationCode: "CRA"}, {RegulationCode: "MASCHINENVO"}, {RegulationCode: "EU MDR"},
{RegulationCode: "KI-VO"}, {RegulationCode: "TRBS 1111"}, {RegulationCode: "OWASP TOP10"},
}
if c := ClassifyClarity("Welche Risiken gibt es?", scattered); c.Mode != "clarify" {
t.Errorf("scattered: mode=%q reason=%q want clarify", c.Mode, c.Reason)
}
concentrated := []LegalSearchResult{
{RegulationCode: "DSGVO"}, {RegulationCode: "BDSG"}, {RegulationCode: "DSK SDM"},
{RegulationCode: "EDPB WP243"}, {RegulationCode: "TDDDG"},
}
c := ClassifyClarity("Was ist eine DSFA?", concentrated)
if c.Mode != "answer" || c.DominantContext != "datenschutz" {
t.Errorf("concentrated: mode=%q dominant=%q want answer/datenschutz", c.Mode, c.DominantContext)
}
}
func TestClassifyClarity_ExplicitScope(t *testing.T) {
// G1: query names TRGS -> arbeitsschutz wins even though retrieval scatters to datenschutz.
scattered := []LegalSearchResult{
{RegulationCode: "DSK SDM METHODE"}, {RegulationCode: "DSK SDM V31"}, {RegulationCode: "DSK SDM B41 PLANEN"},
{RegulationCode: "DSGVO"}, {RegulationCode: "DSK SDM"}, {RegulationCode: "TRGS 900"}, {RegulationCode: "TRGS 554"},
}
c := ClassifyClarity("Schwellwertanalyse nach TRGS", scattered)
if c.Mode != "answer" || c.Reason != "explicit_scope" || c.DominantContext != "arbeitsschutz" {
t.Errorf("explicit TRGS: mode=%q reason=%q dominant=%q want answer/explicit_scope/arbeitsschutz", c.Mode, c.Reason, c.DominantContext)
}
// no regulation named -> falls through to tiered logic
if c := ClassifyClarity("Welche Risiken gibt es?", scattered); c.Reason == "explicit_scope" {
t.Errorf("no reg named should not be explicit_scope, got %q", c.Reason)
}
}