| Model | Verdict | Worst element | ΔPeak% | ΔInt% | NRMSE% | ΔtP h | Cont A/B % | El. |
|---|---|---|---|---|---|---|---|---|
| Load a corpus or the demo fleet, then run the sweep. | ||||||||
RUN INCOMPLETE (errorCode ≠ 0 or zero periods, either side) → FLOW UNITS DIFFER (exact match required) → INCOMPATIBLE TIME GRIDS (report step + period count + start date + every individual report date) → RECORD SETS DIFFER (subcatchment, node, link and pollutant ID sets) → RESULT VARIABLES DIFFER (per-object variable schemas) → CONTINUITY (|flow-routing continuity error| beyond the gate on either side; a candidate .rpt is required unless waived in settings) → DIVERGENT → NEAR MISS → WITHIN TOLERANCE → NUMERICALLY EQUIVALENT. A model only reaches the comparison verdicts if every upstream gate passes — the certificate is withheld on incompatible pairs, so a fleet of comparisons cannot issue false passes.
Per element, ΔPeak% and ΔIntegral% are required. Links compare flow, nodes compare depth and total inflow, subcatchments compare runoff. Each integral uses the trapezoidal rule on |value| over the report grid, and is a different physical quantity per kind: flow-through volume for links, inflow volume for node total inflow, runoff volume for subcatchments, and a depth·time area for node depth (integrated depth is not a volume, so the app never calls it one). NRMSE% (series error normalized by the larger peak) and ΔtP (time-of-peak shift) are advisory: they can decorate an element with a WARN but never a FAIL, and never block a certificate. A required metric between TOL and 5×TOL makes the model a NEAR MISS — compared and ranked, but not certified; the certificate requires every required metric at or below TOL. Absolute floors (ABS Q, ABS D) stop near-zero flows from faking percentage blowups.
Side A is the genuine EPA SWMM 5.2 (Build 5.2.2) engine compiled to WebAssembly, running your .inp in the browser. Side B is whatever your candidate engine wrote — a SWMM6/SWMM5+ build, a different SWMM5 release, or another run of the same engine — as a SWMM5-format .out (plus optional .rpt for the continuity gate) paired by basename. The .out version stamps are shown in the detail panel as version codes, not build fingerprints.
This app is the browser half of a graph-engineered differential sweep: engine runs and verdict gates are deterministic code (the edges), and judgment — deciding why a DIVERGENT model diverged — stays with you or with a diagnosing agent in a Claude Code workflow. Roadmap: GitHub corpus browser with sibling auto-fetch, interpolated time-grid alignment, .inp fingerprint diff, Web Worker engine execution.