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} hours
Use a standard boundary cadence; non-standard intervals are rarely what you want.
W2
forecast_hours_default is not a whole multiple of lbc_interval_default
Adjust 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: gfs
GFS 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 < 4
Enable 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 pairing
Choose 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.