feat(iace): risk as confidence range + label in benchmark tab

Report the tool's risk number as a plausible range with a confidence
label instead of a false-precision point value (confidence-aware
tonality — the assessment is confirmed by the DSB / safety expert).

- risk_estimation.go: EstimateConfidence (hoch/mittel/niedrig from how the
  contact mode resolved), EstimateRiskRange (S±1 and aggregate L=F+W+P ±1,
  the empirically validated per-parameter accuracy), RiskLevelRange; share
  the riskBandLabel thresholds with EstimateRiskLevel.
- risk_benchmark.go: RiskComparisonPair gains eng_risk_point/low/high +
  level + level_range + confidence; RiskAgreement gains high_confidence_pct.
- RiskComparison.tsx: per-hazard range "low–high (level range)" + point,
  confidence chip, and an aggregate confidence line; types in useBenchmark.ts.
- Unit tests for the range/confidence helpers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-06-10 23:04:56 +02:00
parent 97575cc9c0
commit a7dc12f30f
5 changed files with 225 additions and 37 deletions
@@ -53,6 +53,9 @@ export interface RiskComparisonPair {
gt_severity: number; gt_frequency: number; gt_probability: number; gt_avoidance: number; gt_risk: number
eng_severity: number; eng_frequency: number; eng_probability: number; eng_avoidance: number
fk_score: number; fk_band: string
eng_risk_point: number; eng_risk_low: number; eng_risk_high: number
eng_risk_level: string; eng_risk_level_range: string
confidence: string // hoch | mittel | niedrig
}
export interface RiskAgreement {
@@ -60,6 +63,7 @@ export interface RiskAgreement {
severity_within1: number; frequency_within1: number
probability_within1: number; avoidance_within1: number
rank_concordance: number
high_confidence_pct: number
}
export interface BenchmarkResult {