fix(diag): gate connected soak on guaranteed login boundary

The first-player-position line is emitted only when initial streaming must recenter. Treating it as a required login event made a valid same-landblock login time out while route automation was already running. Gate on in-world and the route's authoritative materialization barriers instead.

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
Erik 2026-07-24 12:49:59 +02:00
parent 3ee8ec537a
commit e797e7482a
2 changed files with 26 additions and 1 deletions

View file

@ -344,6 +344,28 @@ public sealed class ConnectedR6SoakContractTests
StringComparison.Ordinal);
}
[Fact]
public void LoginGateDoesNotRequireTheOptionalFirstPositionRecenterDiagnostic()
{
string source = File.ReadAllText(Path.Combine(
FindRepoRoot(),
"tools",
"run-connected-r6-soak.ps1"));
Assert.Contains(
"Wait-ForLogPattern $process $stdoutLog 'live: in world'",
source,
StringComparison.Ordinal);
Assert.DoesNotContain(
"Wait-ForLogPattern $process $stdoutLog 'live: first player position'",
source,
StringComparison.Ordinal);
Assert.Contains(
"route materialization below is the deterministic world-ready barrier.",
source,
StringComparison.Ordinal);
}
[Fact]
public void DenseTownModeUsesTheDedicatedOneCheckpointRoute()
{

View file

@ -717,7 +717,10 @@ try {
}
$null = Wait-ForLogPattern $process $stdoutLog 'live: in world' 1 $LoginTimeoutSeconds
$null = Wait-ForLogPattern $process $stdoutLog 'live: first player position' 1 $LoginTimeoutSeconds
# "live: first player position" is a recenter diagnostic, not a session
# boundary: it is intentionally absent when the player's authoritative
# first cell already matches the initial streaming center. The first
# route materialization below is the deterministic world-ready barrier.
Write-Marker ("in-world elapsed={0:N1}s" -f $stopwatch.Elapsed.TotalSeconds)
foreach ($destination in $destinations) {