UpgradeReport
data class UpgradeReport(val label: String, val targets: List<UpgradeReport.Row>, val rules: Int, val touched: Int, val findings: List<Finding>, val packages: List<PackageBreak> = emptyList(), val unchecked: List<Unchecked> = emptyList())(source)
rules is the rule count; touched counts the rules that read a target key. packages are the locked packages that will break and unchecked the constraints that could not be read.