These are the unconditional checks — they hold for anyS and validate the three moving parts at once: the self-traversal plate (round-trips), transform (identity-preserving), and universe / children (mutually consistent). Running them on a macro-derived plate[S] is the primary correctness signal for the derivation; rewrite needs a terminating rule and so is exercised behaviourally instead of here.
equals is used for the comparisons, so S must have structural equality (every case class / enum does; io.circe.Json does too).
The self-traversal round-trips: writing each child back unchanged is the identity. This is the law that catches a broken derivation (wrong child set, mis-ordered rebuild).
The self-traversal round-trips: writing each child back unchanged is the identity. This is the law that catches a broken derivation (wrong child set, mis-ordered rebuild).