Benjamin Admin
7b3a6f0dcd
fix(iace): close domain-gate gaps — generic patterns with press/welding/glass text
...
CI / loc-budget (push) Successful in 15s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / detect-changes (push) Successful in 6s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
CI / build-sha-integrity (push) Failing after 4s
CI / validate-canonical-controls (push) Successful in 12s
CI / nodejs-build (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go (push) Failing after 37s
CI / iace-gt-coverage (push) Successful in 23s
CI / test-python-backend (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
Observed on a real Kistenhubgeraet (lift) project: generic mechanical patterns
(e.g. HP1000 "Quetschen Arm zwischen Pressenteilen") carry NO machine type and
only generic tags (crush_point, rotating_part), so they fired for a lift; the
narrow domain-gate terms missed their press/welding/glass wording.
Broadens domainGateTerms (pressenteil, pressraum, blechbearbeitung,
punktschweiss, schweisselektrod, elektrodenspalt) and adds a dom_glass domain
(glasschneid/glasbearbeitung/...) with its emit keywords. New test pins that the
four observed leakers now require a dom_* tag. Ghost=0, Leakage=0, coverage held
on both GTs.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-09 16:08:02 +02:00
Benjamin Admin
b1357915ae
feat(iace): Capability-Domain-Gating — Ghost 120→0, Leakage 25→0, Coverage 100%
...
CI / detect-changes (push) Successful in 8s
CI / branch-name (push) Has been skipped
CI / guardrail-integrity (push) Has been skipped
CI / secret-scan (push) Has been skipped
CI / build-sha-integrity (push) Failing after 4s
CI / validate-canonical-controls (push) Successful in 10s
CI / loc-budget (push) Successful in 11s
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / nodejs-build (push) Has been skipped
CI / test-go (push) Failing after 40s
CI / iace-gt-coverage (push) Successful in 24s
CI / test-python-backend (push) Has been skipped
CI / test-python-document-crawler (push) Has been skipped
CI / test-python-dsms-gateway (push) Has been skipped
CI / dep-audit (push) Has been skipped
CI / sbom-scan (push) Has been skipped
Generische Pattern-Engine-Optimierung: behebt zwei Seiten derselben Wurzel
(inkonsistente Applicability-Deklaration ueber 1216 Patterns).
- Ghost-Patterns (120, feuerten nie): 34 nicht-erzeugbare Required-Tags via
domaenenspezifische Keywords emittierbar gemacht -> 0.
- Cross-Domain-Leakage (25, feuerten ueberall): neuer text-getriebener
Capability-Domain-Gate (pattern_domain_gates.go) — Pattern mit Fremdmaschine
im Szenariotext bekommt dom_*-Tag als Required-Gate -> 0.
- Resolver: Komponente->TypicalEnergySources-Expansion (strukturierte Projekte).
- Benchmark: GT-Platzhalter-Filter; faithful Cross-GT-Narrative-Harness.
- Harte Regression-Guards: Ghosts=0, Leakage=0, Coverage>=90% (beide GTs).
- HP2000/HP2001 (Secondary-Harm-Demos) in AllowlistKnownGaps -> Suite gruen.
Echte Pipeline beide GTs: Coverage 100%/100%, 0 Leaks, 0 Ghosts.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-09 11:57:08 +02:00
Benjamin Admin
f534b52817
feat(iace): pattern audit suite + library hygiene wave
...
Add cmd/iace-audit CLI with 5 deterministic methods that find engine
gaps without ground truth:
- A reachability: 1058 patterns vs achievable tag universe
- B consistency: components vs their declared hazard categories
- C vocabulary: limits-form tokens vs keyword dictionary
- D echo: limits-form sentences vs generated hazards (jaccard)
- E hierarchy: hazards vs ISO 12100 design/protection/info levels
Library fixes triggered by A+B+C findings:
- tag_resolver: synonym map for electrical/pneumatic/hydraulic aliases
- component_library: crush_point + EN03 (gravitational) on C014/C128
(Hubwerk family) - fixes HP1014/1015/1017/1018 which were silently
weakly_reachable. noise_source added on 7 components (C006/C011/
C017/C020/C031/C041/C096). electrical_part on 8 drive components
(C031/C032/C033/C034/C035/C036/C037/C038/C077/C092). cyber tag
on 10 sensors (C081-C090) + 3 IT components (C111/C112/C116) +
KI module C119 (ai_model added). pneumatic_part+hydraulic_part
on valves C091/C093, hydraulic_part+chemical_risk on pump C097,
moving_part on motion controller C075
- keyword_dictionary: EN03 added to aufzug/lift/hubwerk/hubgeraet
(was wrongly EN04-only). New keyword entries for hub-action verbs:
absenken/senken/anheben/heben + hubhoehe/hubweg/hubgeschwindig
Audit impact:
- A: weakly_reachable 409 -> 358 (-51 patterns now fully reachable)
- B: incomplete components 46 -> 30 (-16, -33%)
- HP1018 (Person unter absenkendem Maschinenteil eingeklemmt):
weakly_reachable -> reachable
Why: methods A/B/C surfaced that the Kistenhubgeraet test project
generated 0 crush-under-load hazards despite OSHA 1910.212(a)(3) +
EN ISO 12100 6.3.5.5 explicitly requiring them. Three orthogonal
bugs (missing crush_point tag, wrong energy source mapping, missing
action verbs in dictionary) silently disabled the entire lift crush
pattern family.
2026-05-21 10:51:08 +02:00
Benjamin Admin
d4b7943d54
feat: IACE deterministic narrative parser + library extensions
...
Library Extensions:
- 15 new components (C121-C135): knee lever, hydraulic ram, lubrication
system, extraction system, vibrating plate, die tooling, transfer system,
hoist, chute, oil drip tray, pressure relief valve, die space, flywheel,
bin changeover station, inspection scale
- 8 new tags: person_under_load, two_hand_control_required,
thermal_accumulation, mechanical_transmission, oil_mist_risk,
rapid_energy_release, gravity_suspended_load, bypass_risk
- 14 new patterns (HP045-HP058): ram drop, die space crushing, oil mist
inhalation, hot workpiece burns, suspended load, transfer draw-in,
ejection fall, accumulator pressure release, impact noise, flywheel
residual energy, guard bypass, two-hand misoperation, oil leakage,
ergonomic bin changeover
Deterministic Parser (NO LLM):
- keyword_dictionary.go: ~100 entries mapping DE/EN keywords to
component IDs, energy source IDs, and tags
- narrative_parser.go: ParseNarrative() extracts components, energy
sources, lifecycle phases, roles, tech specs, and context tags from
free-text machine descriptions via keyword matching + regex
- Tech spec regex: extracts kN, V, °C, bar, kW, rpm values and
derives energy sources + severity tags automatically
- iace_handler_parser.go: POST /projects/:id/parse-narrative endpoint
chains parser → pattern engine → hazard suggestions
Test: Paste Kniehebelpresse description → should detect 10+ components,
15+ hazards, all deterministically without LLM.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-05-05 00:29:18 +02:00