Objects & matches smooth → threshold → identify → match
forecast field (left)
observed field (right)
object boundary + id
match lines (total interest ≥ threshold)
—
Single-object attributes from the RAW field
Top pairs — fuzzy total interest per-attribute contributions
Weights (MET defaults): boundary 4 · centroid 2 · intersection 2 · angle 1 · area-ratio 1. Distance maps are the MET-shaped defaults rescaled to this grid's diagonal (MET's shipped breakpoints assume a CONUS-size grid); the engine itself is config-driven.
Clusters union-find over the match graph — MODE merging
Honesty: this archive contains no MODE output, so there is no oracle to compare against — correctness rests on the hand-worked geometry selftest (node lib/met-mode.selftest.mjs, 42 checks) and the invariants it enforces on this same case. Omitted vs full MODE: curvature attributes, percentile-intensity object thresholds, asymmetric fcst/obs configs, secondary merge passes.