Collector Decision
data class CollectorDecision(val runId: String, val componentId: String, val survivorId: String, val action: String, val retired: List<RetiredProposition>)
Records everything needed to reverse a collapse: the run it belongs to, the chosen survivor, and for each retired proposition its prior status plus the grounding, provenance and source ids that a merging sweep folded onto the survivor. The runId lets a caller find the candidate edges (and their per-signal scores) behind this decision via CollectorTraceQuery.findEdgesByRun.