extractThresholdBreaches used maxTemp >= threshold, while StatusService.computeHardwareStatus (which drives the actual "breached" status transition and incident) uses a strict maxTemp > threshold for the same metric. cpu, memory and disk already agree on > in both files; temp was the one metric where they diverged. Fixes #3956.