diff --git a/docs/plans/2026-08-02-placement-cutover.md b/docs/plans/2026-08-02-placement-cutover.md index 6e17aefb..b992bb71 100644 --- a/docs/plans/2026-08-02-placement-cutover.md +++ b/docs/plans/2026-08-02-placement-cutover.md @@ -151,9 +151,17 @@ same commit) → docs/handoff commit. No workarounds; no fused slices. activation commit onward (abandonment leaves it to ordinary entity teardown — retail has no entry-flow rollback); EvaluateActivation's post-commit DeferredCell overload is encapsulated behind Advance. - - **C3b — remote body construction at Create (dormant):** - retail-anchored body construction from the wire PhysicsSpawnData per - `set_description` order for residence-route remote/creature Creates. + - **C3b — remote body construction at Create — COMPLETE at `0934a121` + (2026-08-02, dual reviews PASS).** `RuntimeRemoteBodyDescription` + + `RuntimeRemoteFirstEntryState`: the full `set_description` order with + the byte-certain gates (friction [0,1] inclusive, NaN sanctioned-skip; + elasticity clamp with retail's unordered-to-zero; translucency + != 0.0f), the movement-branch discriminator on retail's + `movement_buffer != 0` (empty-buffer → placement branch, no autonomy), + motion-table zero-id pass, ctor-defaults for absent wire fields, and + never-clobber coexistence with the build-at-first-motion production + path. The acknowledge discriminator is one shared body + (`RuntimeFirstEntryAcknowledgement`) for both conductors. Dormant. - **C3c — the host flips (production):** both hosts onto the complete machinery; seal the Controller setter; presentation-only rebucketing; the connected lifecycle/reconnect + nine-stop gates diff --git a/docs/research/2026-08-02-set-description-float-gates.md b/docs/research/2026-08-02-set-description-float-gates.md index 3fa4c8a5..fe9c56f6 100644 --- a/docs/research/2026-08-02-set-description-float-gates.md +++ b/docs/research/2026-08-02-set-description-float-gates.md @@ -219,3 +219,13 @@ false"), which is a documented quirk of this exact MSVC x87 codegen pattern and not something the retail struct's `float` fields would ever hit in practice (friction/translucency are authored data, never NaN). + +## Port note (C3b, `RuntimeRemoteBodyDescription.cs`) + +acdream's friction port uses `f >= 0.0f && f <= 1.0f`, which deliberately +SKIPS NaN rather than reproducing the unordered-goes-to-apply codegen quirk +tabled above — the sanctioned modern-boundary deviation this doc +pre-declared. Elasticity's setter port (`!(e >= 0f)` first arm) and +translucency's `!= 0.0f` gate both route NaN exactly as the binary does +(0f and apply respectively); ACE's `set_elasticity` sends NaN to 0.1f and +is divergent from the binary on that edge.