S1 of the 2026-09-08 layout plan: DyPE/SEGA/SPA/HAP node classes now live
in nodes/{dype,sega,spa,hap}.py with engine imports via dual-form try/except
(loader-relative ..src / flat src). Entry __init__.py keeps extension
registration only. nodes/__init__.py re-exports the full 8-class surface
(transitional src/*_node re-exports until S2/S3 land). All patch nodes
category -> WMNodes/image. New tests/test_structure.py guards the layout.
- Remove validate_inputs() which caused per-input error spam in ComfyUI
- Add _snap_to_multiple() helper that rounds to nearest multiple of 16
- Apply snapping at top of apply_dype_to_model() for graceful UX
- width=1000 now silently becomes 1008 instead of blocking execution