diff --git a/docs/moving_bodies.md b/docs/moving_bodies.md index 69c6a32..df78935 100644 --- a/docs/moving_bodies.md +++ b/docs/moving_bodies.md @@ -310,9 +310,18 @@ recorded as not runnable rather than replaced by another test. - Motion-record host layout and upload path; exclusion of moving bodies from the packed `CurvedBoundaryKernel` links (stationary packing unchanged). - Explicit rejections for unsupported modes. +- S1 execution guard: until the S2 moving kernels exist, any `run(n)` with + `n > 0` (and `step(n)`) while a moving body is declared raises before any + device mutation (no action/motion upload, no launch), including the + nominal at-rest case, because the moving body is excluded from the static + packed links and nothing else would apply its boundary. `run(0)` keeps its + existing behaviour. Simulations without moving bodies are unaffected. + Preparation/commit helpers are exercised by host tests with mocks; no + operational unsupported stepping path is exposed. - Host tests (Astra runs them): rejection-before-mutation, band geometry, derived centres, fail-closed behaviour under an injected upload/sync - failure, stationary packing byte-identical. No kernels, no GPU runs, no + failure, stationary packing byte-identical, execution guard (positive-step + run with a moving body raises before upload/launch; stationary unaffected). No kernels, no GPU runs, no y-only VIV oscillator (S4), no force RHS. ## 11. Remaining decisions