1. Declare
A .smrules file declares the merge family, owner selector, matching strategy, read/write behavior, attachment behavior, and optional semantic surfaces.
Model
StructuredMerge separates semantic contracts from fixture payloads and implementation internals.
A .smrules file declares the merge family, owner selector, matching strategy, read/write behavior, attachment behavior, and optional semantic surfaces.
A JSON fixture provides the template, destination, and expected output that exercise the declared behavior.
Each implementation parses the same contract and runs the same fixture so differences become visible.