Benjamin Admin
16fd406c1a
feat(iace): secondary-harm chain model + AllPatterns drift fix
...
Task #17 — Folgegefahren-Modell as Vorbereitungs-Commit (no DB schema
change yet; persistence via separate [migration-approved] commit).
New:
- secondary_harms.go: SecondaryHarm struct + six canonical categories
(consumer_safety, product_liability, food_safety, environmental,
reputation, financial) with DE labels.
- hazard_pattern_types.go: HazardPattern extended with optional
SecondaryHarms field — pattern library can now attach consequential-
damage chains.
- hazard_patterns_secondary_demo.go: two worked examples
- HP2000 Glasbruch carbonated bottling (the "Cola splitter" scenario
from the IACE strategy discussion) with consumer_safety + food_safety
+ reputation chains
- HP2001 Pharma fill-finish cross-contamination with consumer_safety
+ product_liability under AMG §84
Bonus fix:
- compliance_crossover.go AllPatterns() was a duplicate enumeration that
silently drifted from collectAllPatterns() in pattern_registry.go.
Pre-fix: 1058 patterns visible. Post-fix: 1213 patterns. The 155 invisible
patterns included CRA, ISO12100 gaps, robot-cell, CNC extended, VDMA,
textile-agri, GT-bremse — anything added after the original AllPatterns
was authored. Audit-Suite (cmd/iace-audit) now sees the full set.
Next steps for full secondary-harm rollout:
- DB migration: hazards table + secondary_harms array column
- API: surface secondary_harms in /projects/:id/hazards response
- Frontend: collapsible Folgegefahren-Panel in HazardTable
2026-05-21 23:36:26 +02:00
..
2026-05-21 10:51:08 +02:00
2026-05-13 01:02:33 +02:00
2026-05-15 10:03:23 +02:00
2026-05-15 10:08:21 +02:00
2026-05-14 23:10:15 +02:00
2026-05-17 01:39:17 +02:00
2026-02-25 22:27:06 +01:00
2026-02-25 22:27:06 +01:00
2026-04-19 10:03:44 +02:00
2026-03-16 12:50:53 +01:00
2026-04-19 10:03:44 +02:00
2026-05-21 23:36:26 +02:00
2026-05-09 07:25:39 +02:00
2026-05-09 07:25:39 +02:00
2026-05-09 21:32:23 +02:00
2026-05-21 10:51:08 +02:00
2026-05-09 21:32:23 +02:00
2026-05-07 14:23:15 +02:00
2026-05-10 21:23:46 +02:00
2026-05-10 21:23:46 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-05-13 01:02:33 +02:00
2026-03-16 13:15:31 +01:00
2026-05-13 01:02:33 +02:00
2026-03-15 23:13:41 +01:00
2026-05-10 09:15:43 +02:00
2026-05-10 22:24:02 +02:00
2026-05-10 22:24:02 +02:00
2026-05-10 22:24:02 +02:00
2026-05-12 09:45:18 +02:00
2026-05-16 21:11:02 +02:00
2026-05-13 11:41:26 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:29:54 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-04-19 09:35:02 +02:00
2026-03-15 23:13:41 +01:00
2026-04-19 09:35:02 +02:00
2026-05-21 23:36:26 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-14 23:04:31 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-12 08:50:14 +02:00
2026-05-17 02:15:51 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 22:00:06 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-05-07 14:05:58 +02:00
2026-05-16 22:00:06 +02:00
2026-05-15 00:05:28 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-07 10:53:26 +02:00
2026-05-17 01:59:16 +02:00
2026-05-14 23:04:31 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-05-16 21:11:02 +02:00
2026-05-16 21:11:02 +02:00
2026-05-17 01:59:16 +02:00
2026-05-15 00:01:51 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-21 23:36:26 +02:00
2026-05-16 21:11:02 +02:00
2026-05-15 00:05:28 +02:00
2026-05-15 00:01:51 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-17 01:59:16 +02:00
2026-05-10 08:52:56 +02:00
2026-05-15 00:01:51 +02:00
2026-05-17 01:59:16 +02:00
2026-05-07 10:53:26 +02:00
2026-03-16 10:22:49 +01:00
2026-05-21 10:51:08 +02:00
2026-05-16 23:04:56 +02:00
2026-05-16 23:04:56 +02:00
2026-05-17 02:15:51 +02:00
2026-05-10 09:15:43 +02:00
2026-05-16 13:08:52 +02:00
2026-05-10 07:07:34 +02:00
2026-05-10 08:43:21 +02:00
2026-05-10 07:07:34 +02:00
2026-05-16 13:08:52 +02:00
2026-05-16 10:12:55 +02:00
2026-05-12 07:20:38 +02:00
2026-05-10 07:07:34 +02:00
2026-05-10 07:07:34 +02:00
2026-05-10 08:52:56 +02:00
2026-05-17 02:15:51 +02:00
2026-05-18 22:31:30 +02:00
2026-05-18 22:31:30 +02:00
2026-05-07 10:53:26 +02:00
2026-05-12 09:15:43 +02:00
2026-05-10 08:05:02 +02:00
2026-05-13 10:19:45 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-09 07:58:58 +02:00
2026-05-17 02:15:51 +02:00
2026-05-10 08:22:55 +02:00
2026-05-17 02:03:10 +02:00
2026-05-21 23:36:26 +02:00
2026-05-10 20:55:26 +02:00
2026-05-13 01:02:33 +02:00
2026-05-17 02:03:10 +02:00
2026-05-10 09:15:43 +02:00
2026-05-21 23:36:26 +02:00
2026-05-05 09:29:03 +02:00
2026-05-08 01:49:14 +02:00
2026-05-17 01:39:17 +02:00
2026-04-19 09:35:02 +02:00
2026-05-18 22:31:30 +02:00
2026-05-08 01:02:41 +02:00
2026-04-19 09:35:02 +02:00
2026-05-11 09:17:50 +02:00
2026-05-18 19:55:13 +02:00
2026-05-08 07:03:44 +02:00
2026-05-19 11:46:34 +02:00
2026-04-19 09:29:54 +02:00
2026-03-16 10:22:49 +01:00
2026-05-21 10:51:08 +02:00
2026-03-16 10:22:49 +01:00
2026-05-05 09:29:03 +02:00
2026-04-19 10:03:44 +02:00
2026-04-19 10:03:44 +02:00
2026-05-08 01:02:41 +02:00
2026-03-16 13:15:31 +01:00
2026-04-19 10:03:44 +02:00
2026-03-16 12:50:53 +01:00