v3.0.0
Adds a learned logistic fusion over both calibrated stream probabilities plus their absolute disagreement, fitted on the calibration split only, with its operating point chosen by the same precision constrained threshold search at 0.95 as every other detector.
Every fusion decision is attributed to the stream that triggered it by silencing one stream at a time, printed as triggered_by by spoofline score and tabulated against the attacked modality in the pipeline summary.
Over the 48 runs of the reduced profile sweep the logistic fusion reaches unseen precision 0.946 against 0.944 for the weighted sum, 0.934 for the OR rule and 0.916 for the AND rule.
It does not measurably narrow the gap to the best single stream: per run that gap is minus 0.036 for logistic and minus 0.038 for the weighted sum, and the paired difference in unseen precision is plus 0.002 with a 95 percent interval from minus 0.011 to plus 0.017.
The weighted sum remains the primary decision and the logistic fusion is reported beside it.