package iace import ( "strings" "testing" ) // TestDomainGate_NamedLeakersGated pins the concrete cross-domain leakers that // were observed firing for a Kistenhubgeraet (lift) project: generic patterns // whose text names a press/welding/glass machine but which carry no machine // type and only generic tags. After applyDomainGates they MUST require a dom_* // tag, so they no longer fire for unrelated machines. func TestDomainGate_NamedLeakersGated(t *testing.T) { leakers := []string{ "Quetschen Arm zwischen Pressenteilen", "Quetschen durch Punktschweisselektroden", "Laerm bei Glasschneidemaschine", "Laerm bei Blechbearbeitung (Stanzen)", } byName := map[string]HazardPattern{} for _, p := range collectAllPatterns() { byName[p.NameDE] = p } for _, n := range leakers { p, ok := byName[n] if !ok { t.Errorf("leaker pattern %q not found in library", n) continue } hasDom := false for _, tag := range p.RequiredComponentTags { if strings.HasPrefix(tag, "dom_") { hasDom = true break } } if !hasDom { t.Errorf("%s (%q) not domain-gated; RequiredComponentTags=%v", p.ID, n, p.RequiredComponentTags) } } }