package iace // HazardPattern defines a rule that matches component/energy tags to // hazards, measures, and evidence. When a pattern's required tags are all // present (AND) and none of its excluded tags are present (NOT), it fires. type HazardPattern struct { ID string `json:"id"` NameDE string `json:"name_de"` NameEN string `json:"name_en"` RequiredComponentTags []string `json:"required_component_tags"` RequiredEnergyTags []string `json:"required_energy_tags"` RequiredLifecycles []string `json:"required_lifecycle_phases"` ExcludedComponentTags []string `json:"excluded_component_tags"` GeneratedHazardCats []string `json:"generated_hazard_categories"` SuggestedMeasureIDs []string `json:"suggested_measure_ids"` SuggestedEvidenceIDs []string `json:"suggested_evidence_ids"` Priority int `json:"priority"` } // GetBuiltinHazardPatterns returns ~44 built-in hazard patterns organized // by domain (mechanical, electrical, thermal, hydraulic/pneumatic, // noise/vibration, ergonomic, software/control, cyber/network, AI-specific). func GetBuiltinHazardPatterns() []HazardPattern { return []HazardPattern{ // ==================================================================== // Mechanical Patterns (HP001-HP010) // ==================================================================== { ID: "HP001", NameDE: "Quetschgefahr durch bewegte Teile", NameEN: "Crush risk from moving parts", RequiredComponentTags: []string{"moving_part"}, RequiredEnergyTags: []string{"kinetic"}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M001", "M005", "M051", "M054"}, SuggestedEvidenceIDs: []string{"E01", "E08", "E20"}, Priority: 95, }, { ID: "HP002", NameDE: "Einzugsgefahr durch rotierende Teile", NameEN: "Entanglement risk from rotating parts", RequiredComponentTags: []string{"rotating_part"}, RequiredEnergyTags: []string{"rotational"}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M002", "M051", "M053", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 95, }, { ID: "HP003", NameDE: "Schnittgefahr durch Schneidwerkzeuge", NameEN: "Cut risk from cutting tools", RequiredComponentTags: []string{"cutting_part"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M003", "M051", "M054", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 90, }, { ID: "HP004", NameDE: "Klemmgefahr an Quetsch-/Klemmstellen", NameEN: "Pinch risk at clamping points", RequiredComponentTags: []string{"pinch_point"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M001", "M004", "M051", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 85, }, { ID: "HP005", NameDE: "Quetschgefahr an Quetschstellen", NameEN: "Crush risk at crush points", RequiredComponentTags: []string{"crush_point"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M001", "M005", "M054"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 90, }, { ID: "HP006", NameDE: "Gefahr durch hohe Kraefte", NameEN: "Risk from high forces", RequiredComponentTags: []string{"high_force"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M001", "M005", "M051", "M106"}, SuggestedEvidenceIDs: []string{"E01", "E07", "E08"}, Priority: 90, }, { ID: "HP007", NameDE: "Gefahr durch hohe Geschwindigkeit", NameEN: "Risk from high speed", RequiredComponentTags: []string{"high_speed"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M002", "M051", "M053", "M054"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 85, }, { ID: "HP008", NameDE: "Absturzgefahr / Herabfallende Teile", NameEN: "Fall/drop risk", RequiredComponentTags: []string{"gravity_risk"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M009", "M121", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E20"}, Priority: 85, }, { ID: "HP009", NameDE: "Gefahr durch Spannvorrichtungen", NameEN: "Clamping device risk", RequiredComponentTags: []string{"clamping_part"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M004", "M051", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 80, }, { ID: "HP010", NameDE: "Gefahr durch gespeicherte mechanische Energie", NameEN: "Stored mechanical energy risk", RequiredComponentTags: []string{"stored_energy"}, RequiredEnergyTags: []string{"mechanical"}, GeneratedHazardCats: []string{"mechanical_hazard"}, SuggestedMeasureIDs: []string{"M010", "M121", "M123"}, SuggestedEvidenceIDs: []string{"E01", "E20"}, Priority: 80, }, // ==================================================================== // Electrical Patterns (HP011-HP015) // ==================================================================== { ID: "HP011", NameDE: "Stromschlaggefahr durch Hochspannung", NameEN: "Electric shock risk from high voltage", RequiredComponentTags: []string{"high_voltage"}, RequiredEnergyTags: []string{"electrical_energy"}, GeneratedHazardCats: []string{"electrical_hazard"}, SuggestedMeasureIDs: []string{"M061", "M062", "M063", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E04", "E10"}, Priority: 95, }, { ID: "HP012", NameDE: "Gefahr durch elektrische Komponenten", NameEN: "Risk from electrical components", RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electrical_energy"}, GeneratedHazardCats: []string{"electrical_hazard"}, SuggestedMeasureIDs: []string{"M061", "M064", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E04", "E10"}, Priority: 85, }, { ID: "HP013", NameDE: "Gefahr durch gespeicherte elektrische Energie", NameEN: "Stored electrical energy risk", RequiredComponentTags: []string{"stored_energy"}, RequiredEnergyTags: []string{"electrical_energy"}, GeneratedHazardCats: []string{"electrical_hazard"}, SuggestedMeasureIDs: []string{"M062", "M063", "M121", "M123"}, SuggestedEvidenceIDs: []string{"E01", "E10"}, Priority: 85, }, { ID: "HP014", NameDE: "Kurzschluss-/Lichtbogengefahr", NameEN: "Short circuit / arc flash risk", RequiredComponentTags: []string{"high_voltage", "electrical_part"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"electrical_hazard", "thermal_hazard"}, SuggestedMeasureIDs: []string{"M061", "M065", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E04", "E10"}, Priority: 90, }, { ID: "HP015", NameDE: "EMV-Stoerungsgefahr", NameEN: "EMC interference risk", RequiredComponentTags: []string{"electrical_part"}, RequiredEnergyTags: []string{"electromagnetic"}, GeneratedHazardCats: []string{"emc_hazard"}, SuggestedMeasureIDs: []string{"M066", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E10"}, Priority: 70, }, // ==================================================================== // Thermal Patterns (HP016-HP018) // ==================================================================== { ID: "HP016", NameDE: "Verbrennungsgefahr durch heisse Oberflaechen", NameEN: "Burn risk from hot surfaces", RequiredComponentTags: []string{"high_temperature"}, RequiredEnergyTags: []string{"thermal"}, GeneratedHazardCats: []string{"thermal_hazard"}, SuggestedMeasureIDs: []string{"M071", "M121", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E20"}, Priority: 85, }, { ID: "HP017", NameDE: "Strahlungsgefahr (Laser/optisch)", NameEN: "Radiation risk (laser/optical)", RequiredComponentTags: []string{"radiation_risk"}, RequiredEnergyTags: []string{"radiation"}, GeneratedHazardCats: []string{"thermal_hazard"}, SuggestedMeasureIDs: []string{"M072", "M051", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E20"}, Priority: 85, }, { ID: "HP018", NameDE: "Verbrennungsgefahr durch Aktuatoren", NameEN: "Burn risk from actuators", RequiredComponentTags: []string{"actuator_part", "high_temperature"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"thermal_hazard"}, SuggestedMeasureIDs: []string{"M071", "M121"}, SuggestedEvidenceIDs: []string{"E01"}, Priority: 75, }, // ==================================================================== // Hydraulic / Pneumatic Patterns (HP019-HP022) // ==================================================================== { ID: "HP019", NameDE: "Hydraulikdruck-Gefahr", NameEN: "Hydraulic pressure hazard", RequiredComponentTags: []string{"hydraulic_part"}, RequiredEnergyTags: []string{"hydraulic_pressure"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, SuggestedMeasureIDs: []string{"M081", "M082", "M121", "M123"}, SuggestedEvidenceIDs: []string{"E01", "E05", "E11"}, Priority: 90, }, { ID: "HP020", NameDE: "Pneumatikdruck-Gefahr", NameEN: "Pneumatic pressure hazard", RequiredComponentTags: []string{"pneumatic_part"}, RequiredEnergyTags: []string{"pneumatic_pressure"}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, SuggestedMeasureIDs: []string{"M083", "M084", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E06", "E11"}, Priority: 85, }, { ID: "HP021", NameDE: "Gefahr durch gespeicherten Hydraulikdruck", NameEN: "Stored hydraulic pressure risk", RequiredComponentTags: []string{"hydraulic_part", "stored_energy"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, SuggestedMeasureIDs: []string{"M081", "M082", "M123"}, SuggestedEvidenceIDs: []string{"E01", "E05", "E11"}, Priority: 90, }, { ID: "HP022", NameDE: "Gefahr durch Druckluftspeicher", NameEN: "Stored pneumatic pressure risk", RequiredComponentTags: []string{"pneumatic_part", "stored_energy"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"pneumatic_hydraulic"}, SuggestedMeasureIDs: []string{"M083", "M084", "M123"}, SuggestedEvidenceIDs: []string{"E01", "E06", "E11"}, Priority: 85, }, // ==================================================================== // Noise / Vibration Patterns (HP023-HP025) // ==================================================================== { ID: "HP023", NameDE: "Laermgefahr", NameEN: "Noise hazard", RequiredComponentTags: []string{"noise_source"}, RequiredEnergyTags: []string{"acoustic"}, GeneratedHazardCats: []string{"noise_vibration"}, SuggestedMeasureIDs: []string{"M091", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E12"}, Priority: 70, }, { ID: "HP024", NameDE: "Vibrationsgefahr", NameEN: "Vibration hazard", RequiredComponentTags: []string{"vibration_source"}, RequiredEnergyTags: []string{"vibration"}, GeneratedHazardCats: []string{"noise_vibration"}, SuggestedMeasureIDs: []string{"M092", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E13"}, Priority: 65, }, { ID: "HP025", NameDE: "Laerm durch rotierende Hochgeschwindigkeitsteile", NameEN: "Noise from high-speed rotating parts", RequiredComponentTags: []string{"rotating_part", "high_speed"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"noise_vibration"}, SuggestedMeasureIDs: []string{"M091", "M092", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E12", "E13"}, Priority: 70, }, // ==================================================================== // Ergonomic Patterns (HP026-HP028) // ==================================================================== { ID: "HP026", NameDE: "Ergonomische Belastung an Bedienstationen", NameEN: "Ergonomic risk at operator stations", RequiredComponentTags: []string{"user_interface"}, RequiredEnergyTags: []string{"ergonomic"}, GeneratedHazardCats: []string{"ergonomic"}, SuggestedMeasureIDs: []string{"M126", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E24"}, Priority: 50, }, { ID: "HP027", NameDE: "Ergonomische Belastung bei Wartung in der Hoehe", NameEN: "Ergonomic risk for work at height", RequiredComponentTags: []string{"structural_part", "gravity_risk"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"ergonomic", "mechanical_hazard"}, SuggestedMeasureIDs: []string{"M121", "M131"}, SuggestedEvidenceIDs: []string{"E01", "E20"}, Priority: 60, }, { ID: "HP028", NameDE: "Fehlbedienungsgefahr", NameEN: "Mode confusion / misoperation risk", RequiredComponentTags: []string{"user_interface", "programmable"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"hmi_error", "mode_confusion"}, SuggestedMeasureIDs: []string{"M126", "M127", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E14", "E24"}, Priority: 70, }, // ==================================================================== // Software / Control Patterns (HP029-HP034) // ==================================================================== { ID: "HP029", NameDE: "Software-Fehler in Steuerung", NameEN: "Software fault in controller", RequiredComponentTags: []string{"has_software", "programmable"}, RequiredEnergyTags: []string{}, ExcludedComponentTags: []string{"has_ai"}, GeneratedHazardCats: []string{"software_fault"}, SuggestedMeasureIDs: []string{"M101", "M102", "M103"}, SuggestedEvidenceIDs: []string{"E01", "E14"}, Priority: 85, }, { ID: "HP030", NameDE: "Sicherheitsfunktionsversagen", NameEN: "Safety function failure", RequiredComponentTags: []string{"safety_device"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"safety_function_failure"}, SuggestedMeasureIDs: []string{"M104", "M105", "M051"}, SuggestedEvidenceIDs: []string{"E01", "E07", "E08", "E09"}, Priority: 95, }, { ID: "HP031", NameDE: "Konfigurationsfehler", NameEN: "Configuration error", RequiredComponentTags: []string{"programmable"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"configuration_error"}, SuggestedMeasureIDs: []string{"M145", "M146", "M121"}, SuggestedEvidenceIDs: []string{"E01", "E14"}, Priority: 70, }, { ID: "HP032", NameDE: "Fehlende Protokollierung / Audit", NameEN: "Missing logging / audit", RequiredComponentTags: []string{"has_software"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"logging_audit_failure"}, SuggestedMeasureIDs: []string{"M142", "M149"}, SuggestedEvidenceIDs: []string{"E01"}, Priority: 50, }, { ID: "HP033", NameDE: "Update-Fehler / Rollback-Problem", NameEN: "Update failure / rollback problem", RequiredComponentTags: []string{"has_software", "programmable"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"update_failure"}, SuggestedMeasureIDs: []string{"M138", "M141", "M146"}, SuggestedEvidenceIDs: []string{"E01", "E14"}, Priority: 65, }, { ID: "HP034", NameDE: "Verriegelungs-Umgehungsgefahr", NameEN: "Interlock bypass risk", RequiredComponentTags: []string{"interlocked"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"safety_function_failure"}, SuggestedMeasureIDs: []string{"M051", "M104", "M107"}, SuggestedEvidenceIDs: []string{"E01", "E08"}, Priority: 85, }, // ==================================================================== // Cyber / Network Patterns (HP035-HP039) // ==================================================================== { ID: "HP035", NameDE: "Unbefugter Netzwerkzugriff", NameEN: "Unauthorized network access", RequiredComponentTags: []string{"networked"}, RequiredEnergyTags: []string{"cyber"}, GeneratedHazardCats: []string{"unauthorized_access"}, SuggestedMeasureIDs: []string{"M111", "M112", "M113", "M140"}, SuggestedEvidenceIDs: []string{"E01", "E16", "E17"}, Priority: 90, }, { ID: "HP036", NameDE: "Kommunikationsausfall", NameEN: "Communication failure", RequiredComponentTags: []string{"networked", "it_component"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"communication_failure"}, SuggestedMeasureIDs: []string{"M114", "M115"}, SuggestedEvidenceIDs: []string{"E01", "E17"}, Priority: 80, }, { ID: "HP037", NameDE: "Firmware-Manipulation", NameEN: "Firmware manipulation", RequiredComponentTags: []string{"has_software", "networked"}, RequiredEnergyTags: []string{"cyber"}, GeneratedHazardCats: []string{"firmware_corruption"}, SuggestedMeasureIDs: []string{"M116", "M138", "M146"}, SuggestedEvidenceIDs: []string{"E01", "E16", "E18"}, Priority: 85, }, { ID: "HP038", NameDE: "Drahtlos-Angriff (WiFi/Bluetooth)", NameEN: "Wireless attack (WiFi/Bluetooth)", RequiredComponentTags: []string{"wireless"}, RequiredEnergyTags: []string{"cyber"}, GeneratedHazardCats: []string{"unauthorized_access"}, SuggestedMeasureIDs: []string{"M111", "M113", "M140"}, SuggestedEvidenceIDs: []string{"E01", "E16"}, Priority: 80, }, { ID: "HP039", NameDE: "Supply-Chain-Angriff auf IT-Komponenten", NameEN: "Supply chain attack on IT components", RequiredComponentTags: []string{"it_component", "has_software"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"unauthorized_access", "firmware_corruption"}, SuggestedMeasureIDs: []string{"M116", "M118"}, SuggestedEvidenceIDs: []string{"E01", "E18", "E19"}, Priority: 75, }, // ==================================================================== // AI-Specific Patterns (HP040-HP044) // ==================================================================== { ID: "HP040", NameDE: "KI-Fehlklassifikation", NameEN: "AI misclassification", RequiredComponentTags: []string{"has_ai"}, RequiredEnergyTags: []string{"ai_model"}, GeneratedHazardCats: []string{"false_classification"}, SuggestedMeasureIDs: []string{"M101", "M102"}, SuggestedEvidenceIDs: []string{"E01", "E15"}, Priority: 90, }, { ID: "HP041", NameDE: "Model Drift / Concept Drift", NameEN: "Model drift / concept drift", RequiredComponentTags: []string{"has_ai"}, RequiredEnergyTags: []string{"ai_model"}, GeneratedHazardCats: []string{"model_drift"}, SuggestedMeasureIDs: []string{"M103"}, SuggestedEvidenceIDs: []string{"E01", "E15"}, Priority: 85, }, { ID: "HP042", NameDE: "Data Poisoning / Adversarial Attack", NameEN: "Data poisoning / adversarial attack", RequiredComponentTags: []string{"has_ai"}, RequiredEnergyTags: []string{"cyber", "ai_model"}, GeneratedHazardCats: []string{"data_poisoning"}, SuggestedMeasureIDs: []string{"M101", "M116"}, SuggestedEvidenceIDs: []string{"E01", "E15", "E16"}, Priority: 85, }, { ID: "HP043", NameDE: "Unbeabsichtigte KI-Diskriminierung", NameEN: "Unintended AI bias", RequiredComponentTags: []string{"has_ai"}, RequiredEnergyTags: []string{"ai_model"}, GeneratedHazardCats: []string{"unintended_bias"}, SuggestedMeasureIDs: []string{"M101"}, SuggestedEvidenceIDs: []string{"E01", "E15"}, Priority: 75, }, { ID: "HP044", NameDE: "KI-Sensormanipulation", NameEN: "AI sensor spoofing", RequiredComponentTags: []string{"has_ai", "sensor_part"}, RequiredEnergyTags: []string{}, GeneratedHazardCats: []string{"sensor_spoofing"}, SuggestedMeasureIDs: []string{"M101", "M102"}, SuggestedEvidenceIDs: []string{"E01", "E15"}, Priority: 80, }, } }