fix: trade gate round 2 - the trade window is state-managed, never

layout-persisted; deeper [trade] wire probes

A session that ended mid-trade saved Visible=true for "secure-trade" in
the window-layout file, restoring an empty open trade window at every
launch. Added to the stateManagedVisibilityWindows set beside
Combat/JumpPowerbar/ExternalContainer/Vendor - visibility belongs to
RuntimeTradeState's open/closed lifecycle exclusively.

Also carries the round-2 [trade] probes for the still-open "open never
registers" diagnosis: the round-1 log proved the request seam fires
(4x "request partner=0x50000001 item=0 open=False") but no window ever
opened - the new probes bracket the command router (open-cmd sent
flag), the wire send (wire-open seq), and the inbound RegisterTrade
apply, so the next gate log pinpoints whether the send leaves the
client and whether ACE replies.

App suite 4,990/3 skips.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-14 12:24:43 +02:00
parent 22f30f291d
commit f2144ab2a4
4 changed files with 20 additions and 2 deletions

View file

@ -87,6 +87,10 @@ public sealed class RuntimeTradeState : IDisposable
/// </summary>
public void ApplyRegister(GameEvents.RegisterTrade update, uint selfGuid)
{
// TEMPORARY [trade] probe (2026-08-14 gate round 2).
Console.WriteLine(
$"[trade] register initiator=0x{update.Initiator:X8} "
+ $"partner=0x{update.Partner:X8} self=0x{selfGuid:X8}");
lock (_gate)
{
ObjectDisposedException.ThrowIf(_disposed, this);