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
@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
(reading `body.ContactPlane` between tick and assert — should be impossible);
xUnit execution-order/parallelism interacting with harness or engine state;