CombinationMatch
data class CombinationMatch(val buildingId: Int, val containerTokens: List<String>, val entityTokens: List<String>, val tier: CombinationSearchMatcher.ContainerTier, val containerScore: Double)
One container/entity partition: a building whose name matched containerTokens, with the remaining entityTokens to be scoped to that building's entities by the UI leg.
containerScore orders the per-building sub-sections (DESC). Equality/order are intentionally value-based so callers can assert token-order independence.