From f42b269a0021fae1bb682b61b0cf9789a5b8ee4d Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 30 Oct 2026 06:23:31 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20S0=20draft=20=E2=80=94=20S1=20execution?= =?UTF-8?q?=20guard=20for=20moving=20bodies=20before=20S2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- docs/moving_bodies.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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