fix: complete retail parity stability pass
All checks were successful
CI / linux-portable (push) Successful in 3m41s
CI / windows-gate (push) Successful in 6m49s
CI / release (push) Successful in 3m22s

This commit is contained in:
Erik 2026-08-28 20:01:39 +02:00
parent d3df4cb20a
commit f7aa8e0eb7
131 changed files with 7765 additions and 1190 deletions

View file

@ -126,21 +126,18 @@ public sealed class RuntimeAcceptedPositionDriveControllerTests
}
[Fact]
public void Rejected_WhenTheClassifierDeclinesTheFrame()
public void Committed_WhenForceAuthorityCarriesANewerTeleportStamp()
{
using StartedRuntime started = StartRuntime();
(RuntimeEntityRecord record, PlayerMovementController controller) =
(RuntimeEntityRecord record, _) =
EnterLocalPlayer(started.Runtime);
Vector3 positionBefore = controller.Position;
RuntimeAcceptedPositionDriveController drive =
CreateAcceptedPositionDrive(started.Runtime, out List<byte[]> gameActions);
// RuntimeAuthoritativePositionRouteClassifier.ValidAcceptedAuthority's
// ForcePosition case requires PreviousTeleportSequence ==
// AcceptedTeleportSequence; a mismatch is a genuine data-validity
// rejection (this call site never re-derives the timestamp gate's
// own freshness rule — it is asserting the classifier's own
// independent structural check).
// #325: retail Gate A accepts a ForcePosition whose teleport stamp is
// equal OR newer. The classifier independently preserves that wider
// authority set and still routes this as a force correction rather
// than a teleport.
RuntimeAcceptedPositionExecutionStatus status =
drive.TryExecuteAcceptedLocalPosition(
record,
@ -149,9 +146,8 @@ public sealed class RuntimeAcceptedPositionDriveControllerTests
Timestamps(teleport: 6),
previousTeleportSequence: 5);
Assert.Equal(RuntimeAcceptedPositionExecutionStatus.Rejected, status);
Assert.Equal(positionBefore, controller.Position);
Assert.Empty(gameActions);
Assert.Equal(RuntimeAcceptedPositionExecutionStatus.Committed, status);
Assert.Single(gameActions);
AssertConverged(started.Runtime);
}