- hull.py: Hull.to_dict() serializa a dict JSON con formato hull_v1
(arrays numpy -> listas Python); Hull.from_dict() deserializa con
validacion de claves y forma de array.
- project.py: Project.hull (property lazy) deserializa el Hull desde
ship_data; Project.set_hull() persiste el Hull y marca is_modified.
- main_window.py: _on_new_project guarda el Hull en el proyecto;
_on_project_loaded restaura el Hull en todos los visores al abrir
un archivo .arsd; _on_hull_changed_from_editor mantiene el proyecto
sincronizado con ediciones en el editor de offsets.
- test_serialization.py: 26 tests (round-trip dict, round-trip ZIP,
5 familias parametricas, escritura atomica, proyecto sin Hull).
Suite total: 112 tests -- 112 passed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>