Start from the honest picture. A robot in a fluid feels a force, and in steady conditions that force is captured beautifully by a lumped coefficient: F ≈ ½ρ·C_d·A·|u|u for drag, a flat curve for thrust. This is not a shortcut to apologize for — it is the correct engineering choice for a control loop, because it is O(1) to evaluate and, in the regime it was fit for, accurate. The Bench's Gust tab proves the honest half first: in a steady approach the quasi-steady drag model already fits the resolved force to within a few percent. The coefficient model is not wrong; it is incomplete.
Where it becomes incomplete is the transient. Accelerate a body through fluid and two effects appear that no steady coefficient can hold. The first is ADDED MASS: to accelerate the body you must also accelerate the fluid around it, an inertial reaction proportional to dU/dt (the Morison term). The second is HISTORY: the wake laid down a moment ago still pushes on the body now, a memory integral over the whole past acceleration (the Basset term). The Gust tab fits these one at a time to the resolved force and the residual collapses — quasi-steady alone leaves ~94% of the force unexplained on the gust, adding the Morison term drops that to a few percent, and the history term halves it again. You are watching the resolved solver reconstruct the classical unsteady-force hierarchy from data. THIS is the deployment pattern: coefficients plus a learned residual, and the resolved solver is how the residual is made, measured, and trusted.
But you can only trust a solver you can check. Every panel of this Bench verifies itself in the page. The Lid Cavity runs a MAC pressure-projection solver and grades its own centerline against the Ghia (1982) reference table as it converges — the deviation number falls toward 0.004 while the velocity divergence stays pinned at machine zero, a physics receipt attached to the render. The Swimmer is self-propelled: an undulating filament with no prescribed forward velocity earns thrust from the fluid it pushes, and the exact ∂(distance)/∂(gait) is carried through the coupled fluid-structure loop — so it can learn to swim on real gradients, not sampled ones. And the Honesty Harness is the trust layer made explicit: the field's own 2026 consensus is 'don't trust the surrogate, test the physics.' It builds two predictions with the SAME error against ground truth — one honest, one that cheats by injecting divergence or high-frequency noise — and reads the physics directly (the incompressibility residual, a spectral-roughness proxy) to flag the cheat that a mean-squared-error metric cannot see. A surrogate and its audit ship together.
The last view closes the loop to your world. Deployed robots do consume resolved fluids — not in the control loop, but as precomputed environment fields: urban wind for drone routing, currents for AUVs. The Wind Routing tab plans a minimum-time path through a divergence-free wind field and beats the naive straight line by riding tailwinds and dodging headwind pockets, an advantage that grows with the wind. Fluids to environment field to policy — the resolved solver feeds the plan. Everything here is one open Rust stack: verified against analytic and reference solutions, differentiable end to end, and compiled to the WebAssembly running in this tab.