Model

Rulesets describe behavior; fixtures prove it.

StructuredMerge separates semantic contracts from fixture payloads and implementation internals.

1. Declare

A .smrules file declares the merge family, owner selector, matching strategy, read/write behavior, attachment behavior, and optional semantic surfaces.

2. Exercise

A JSON fixture provides the template, destination, and expected output that exercise the declared behavior.

3. Compare

Each implementation parses the same contract and runs the same fixture so differences become visible.