Signal Properties
data class SignalProperties(val enabled: Boolean = true, val weight: Double? = null, val similarityThreshold: Double? = null, val topK: Int? = null)
One signal's override. weight, similarityThreshold and topK are nullable so "not set" is distinguishable from "set to the scorer's own default" — a null weight falls back to the scorer's own neutral default instead of forcing a specific number.