diag(physics): probe whether Runtime's world frame and App's origin ever disagree

#283 step 1: prove or disprove reachability before restructuring ownership.

Runtime rebases its world frame the instant an accepted Position carries
TeleportAdvanced (RuntimePhysicsState.ObserveLocalWorldFrame). App's
LiveWorldOriginState rebases only once StreamingOriginRecenterCoordinator
.Advance observes IsOriginRecenterRetirementComplete - many frames later,
after the old window has fully retired. Between those two edges the owners can
disagree by the source-to-destination landblock delta, and anything converted
in the gap lands a multiple of 192 m from the geometry App is building. Same
failure family as the zero-offset bug 670f307c fixed, with a wrong origin
rather than a missing one.

Reasoning has already closed most of the window: the recenter detaches EVERY
resident landblock before adopting the new origin, so old-origin collision is
retired first. What remains is the narrow gap between Runtime's flip and App's
BeginOriginRecenter, while old-origin geometry is still resident. Whether that
is ever actually hit is an empirical question, and the campaign rule is that a
restructure needs evidence, not a hypothesis.

ACDREAM_PROBE_WORLD_FRAME=1 emits one [world-frame] line per DISAGREEMENT at
DatLiveEntityProjectionMaterializer's landblock->world conversion - the exact
App-side counterpart of Runtime's TryGetWorldFrameOffset, and the site that
already holds both owners, so no new dependency is introduced. Silence across
a portal run is the evidence that #283 is unreachable and can close as a
permanent invariant instead of an ownership move.

Measurement only: the probe never gates placement, and the flag lives in
PhysicsDiagnostics with the rest of the ACDREAM_PROBE_* family per the
diagnostic-owner rule rather than as a scattered env read.

Complete Release solution: 10,836 passed / 4 skipped / 0 failed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-03 14:21:46 +02:00
parent 0c14c4029c
commit 898ff18b26
3 changed files with 67 additions and 0 deletions

View file

@ -61,6 +61,27 @@ public static class PhysicsDiagnostics
public static bool ProbeCellEnabled { get; set; } =
Environment.GetEnvironmentVariable("ACDREAM_PROBE_CELL") == "1";
/// <summary>
/// #283 reachability probe (2026-08-03). Runtime rebases its world frame
/// the instant an accepted Position carries TeleportAdvanced, while App's
/// <c>LiveWorldOriginState</c> rebases only once
/// <c>StreamingOriginRecenterCoordinator</c> observes old-window
/// retirement completion — many frames later. Between those edges the two
/// owners can disagree by the source-to-destination landblock delta, and
/// anything converted in that gap lands a multiple of 192 m from the
/// geometry App is building.
///
/// <para>When true, every projected placement compares Runtime's frame
/// centre against App's origin centre and emits one
/// <c>[world-frame]</c> line per DISAGREEMENT only — silence means the
/// window is never observed. This exists to prove or disprove
/// reachability before any ownership is restructured; it is a
/// measurement, never a gate. Initial state from
/// <c>ACDREAM_PROBE_WORLD_FRAME=1</c>.</para>
/// </summary>
public static bool ProbeWorldFrameEnabled { get; set; } =
Environment.GetEnvironmentVariable("ACDREAM_PROBE_WORLD_FRAME") == "1";
/// <summary>
/// Stuck-cast/missing-attack investigation (2026-07-30). When true,
/// every REMOTE ground-contact edge (HitGround / LeaveGround — each of