nwp-compose validate, generate, and run collect a set of numbered warnings. Most are
advisory (printed in yellow on stderr, the run proceeds). The WRF physics codes W-7 through
W-10 are different: a configuration that trips them is blocked unless you explicitly
acknowledge it, because it will produce a forecast that crashes or is physically meaningless.
Why some warnings block
The recurring scientific complaint this project takes seriously is “the tool warned but ran anyway,
and I lost a six-hour job.” A CFL-violating time step is not a style nit — it is a guaranteed
runtime failure. So the unphysical codes hard-block. To run one anyway (you know something the
validator doesn’t), set acknowledge_unphysical: true at the workflow root; the acknowledgement is
stamped into manifest.json for the record.
Code Triggers when Fix W1 cycling.lbc_interval_default is not one of {1, 3, 6} hoursUse a standard boundary cadence; non-standard intervals are rarely what you want. W2 forecast_hours_default is not a whole multiple of lbc_interval_defaultAdjust one so the last boundary update lands at or before the forecast end. W3 lbc_interval_default == 1 and a data_ingest uses data_source: gfsGFS is not published hourly for boundaries; use a 3- or 6-hour interval, or RAP. W4 Peak post-processing rank occupancy exceeds the node estimate (mpassit_nprocs × max_active > tasks_per_node × nodes) Lower mpassit concurrency (max active) or raise the node estimate (globals.estimated_node_count).
Code Path Triggers when Fix Blocks? W5 MPAS mpas_run.dt > dx_km × 6.0 (CFL guideline)Reduce the time step or coarsen the mesh. advisory W-7 WRF cu_physics != 0 and dx_km < 4 (cumulus scheme at convection-permitting scale)Turn off the cumulus parameterization (cu_physics: 0) below ~4 km. blocks W-8 WRF time_step > 6 × dx_km (CFL analog)Reduce time_step. blocks W-9 WRF w_damping != 1 and dx_km < 4Enable w_damping: 1 at CP scale to avoid vertical-velocity blowups. blocks W-10 WRF (bl_pbl_physics, sf_sfclay_physics) is not a legal pairingChoose a PBL/surface-layer pair from the compatible set. blocks
Code Triggers when Fix W-REQ-EXE A component’s declared requires.executables / must_have entry is not on PATH module load it, or install it into your environment. nwp-compose doctor checks these too.W-REQ-ENV A component’s declared requires.env_vars entry is unset Export the variable before running.
nwp-compose validate forecast.yaml --no-warnings # hide advisory W-codes (does NOT bypass blocks)
--no-warnings only silences advisory output. It does not disable the W-7..W-10 hard block —
that requires acknowledge_unphysical: true in the YAML, which is the auditable, deliberate escape
hatch.
Want an explanation at the point of failure?
A future addition (nwp-compose explain W-8) will print this catalog entry inline. Until then, the
warning text names the parameter and value that tripped it, and this page is the lookup.