From 9660894a1bc5f066624f8b704e7fb1684b6487d2 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 20 Oct 2026 13:38:30 +0000 Subject: [PATCH] docs: checkpoint save/load scope and read_surface_exchange wording Co-Authored-By: Claude Opus 5.5 --- docs/compatibility.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/compatibility.md b/docs/compatibility.md index 4c1f844..95053f7 100644 --- a/docs/compatibility.md +++ b/docs/compatibility.md @@ -18,15 +18,18 @@ Rejected with `ValueError`, before flags, populations or device buffers change: or the inlet/outlet column ("Cut links must have active fluid receivers"). Both were previously accepted silently for passive bodies; the interpolated -boundary then had undefined results. The check runs in -`Simulation.initialize`, runtime body sync (`sync_bodies`) and checkpoint load -(`common/checkpoint.py`). A checkpoint whose saved geometry violates either rule -no longer restores; rebuild the geometry with separated bodies. +boundary then had undefined results. The rules apply to the cut links of all +bodies together, so a passive body overlapping a Jet body is rejected as well. +The check runs in `Simulation.initialize`, runtime body sync (`sync_bodies`), +checkpoint save and checkpoint load (`common/checkpoint.py`). Load validates +before restoring anything, so a checkpoint whose saved geometry violates either +rule no longer restores; rebuild the geometry with separated bodies. ## 87c3a31: `Simulation.read_surface_exchange` accepts Jet-driven bodies `read_surface_exchange(id)` previously required `SurfaceActuation` on the body. It now also accepts bodies that own Jet aperture links, including Jets with zero -or negative amplitude. Bodies without any aperture still raise +or negative amplitude (the aperture test is geometric). Bodies with neither +`SurfaceActuation` nor aperture links still raise `ValueError("Body has no surface actuation")`. The value is unchanged: the latest step's wall/aperture exchange, not total nozzle force.