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

@ -500,6 +500,12 @@ public sealed class RetailUiRuntime : IDisposable
WindowNames.JumpPowerbar,
WindowNames.ExternalContainer,
WindowNames.Vendor,
// Trade gate round 2 (2026-08-14): the trade window is
// transient — visibility belongs to RuntimeTradeState's
// open/closed lifecycle, never to the layout file (a
// session that ended mid-trade was restoring an empty
// open window at every launch).
WindowNames.SecureTrade,
]);
}