docs: #341 round 2 — the flip survives a same-session ABA, property reads ruled out; AD-66 stays withheld

The reland's ten-run protocol was stable-with-lift, then the
recalibrated form flipped on its first run, and a same-binary ABA
isolated it to assertion CODE SHAPE alone with a hardcoded-constant
control killing the property-read hypothesis. Best remaining story:
JIT inlining/tiering of the settle chain differs by caller IL shape and
some computation in it sits on an exact float boundary deciding WHEN
the one-time lift happens. First discriminating experiment for the
investigation: DOTNET_TieredCompilation=0. The stop clause fired twice;
production is unchanged; no third reland before the boundary is found.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-07 09:03:34 +02:00
parent 712244b8aa
commit 00c03a33a5

View file

@ -307,6 +307,35 @@ TERRAIN — the prime suspect is the outdoor ground placement rather than the
ported BSP walkable solve, which should already be tangent if the port of ported BSP walkable solve, which should already be tangent if the port of
@0x00538210 is faithful). AD-69's seam-frame correction rides along. @0x00538210 is faithful). AD-69's seam-frame correction rides along.
### RELAND ROUND 2, 2026-08-07 night — the flip survives a same-session ABA; property reads ruled out
The bare-radius reland ran its ten-run protocol: round 1 was STABLE-WITH-LIFT
(10/10 identical, delta 0.07976 = the predicted formula). The recalibrated
golden's FIRST run then showed NO lift, and a same-binary same-session ABA
nailed it:
| assertion shape after the identical Tick(5) | observed Z |
|---|---|
| original one-line `Assert.Equal(latched, body.Position)` | 57.61359 — LIFTED |
| 3 float compares + a live `ContactPlane.Normal.Z` read first | 57.53383 — NOT lifted |
| same 3-compare shape, read replaced by a HARDCODED constant | 57.53383 — NOT lifted |
| reverted to the original one-liner, same session | 57.61359 — LIFTED again |
The physics completes before any of this code runs; no async in the path;
the hardcoded-constant control kills the property-side-effect hypothesis.
What remains is codegen-shape sensitivity: the test method's IL shape
plausibly changes JIT inlining/tiering of the settle/tick chain it calls,
and SOMEWHERE in that chain a computation sits on an exact float boundary
that decides whether the one-time lift happens during the HARNESS SETTLE
(→ absorbed ticks latch exact) or on the first absorbed tick (→ observed
lift). Finding that boundary is the investigation; until it is found and
made robust, AD-66 stays withheld — the stop clause fired twice and the
production tree is unchanged. Do NOT attempt a third reland without first
locating the boundary-sensitive computation (per-tick instrumented settle
trace, tiering pinned via DOTNET_TieredCompilation=0 as the first
discriminating experiment: if the flip vanishes with tiering off, the
boundary is real and the fix is making the trigger robust to it).
**Hypotheses deliberately NOT chased at 04:00:** a property-read side effect **Hypotheses deliberately NOT chased at 04:00:** a property-read side effect
(reading `body.ContactPlane` between tick and assert — should be impossible); (reading `body.ContactPlane` between tick and assert — should be impossible);
xUnit execution-order/parallelism interacting with harness or engine state; xUnit execution-order/parallelism interacting with harness or engine state;