Collects multiple validation traces into a single canonical trace.
Returns traces in canonical form: all messages first, followed by a single merged property dictionary (if any).
Input traces may contain messages and dictionaries in any order; the output normalises this structure.
Empty input yields an empty trace
Messages deduplicated, empty strings removed, encounter order preserved
Collects multiple validation traces into a single canonical trace.
Returns traces in canonical form: all messages first, followed by a single merged property dictionary (if any). Input traces may contain messages and dictionaries in any order; the output normalises this structure.