chore: secure-trade closeout - strip [trade] gate probes, roadmap ledger
The two-client user gate PASSED 2026-08-14 (open both ways, stage with the retail trading marker, accept/decline, executed swap, Clear All, cancel text). Every TEMPORARY [trade] probe line from gate rounds 1-2 is stripped (ItemInteractionController, SelectionInteractionController, SecureTradeUiController, LiveSessionCommandRouter, WorldSession, RuntimeTradeState). Roadmap gains the shipped-trade ledger row. Suites after strip: App 4,992/3, Runtime 1,626 - green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
be3e617a2b
commit
0f15c74147
7 changed files with 3 additions and 33 deletions
|
|
@ -2101,6 +2101,7 @@ OpenGL ceiling; revisit macOS only if a supported graphics backend is chosen.
|
|||
| Can't fight monsters | **M2 LANDED 2026-07-15** ✓ — melee/missile, death, loot, inventory loop user-gated |
|
||||
| Can't cast spells | **M3 connected single-client casting/effects gate passed** ✓; final two-client portal observer gate remains |
|
||||
| No inventory panel | **D.5 / M2 SHIPPED + user-gated** ✓ — bags, stacks, paperdoll, equipment, drag/drop, loot |
|
||||
| No player-to-player trading | **Secure trade SHIPPED + two-client user gate PASSED 2026-08-14** ✓ — gmSecureTradeUI window (LayoutDesc 0x2100000D), full 0x1F6–0x208 wire, both retail open paths (Use-on-player, drag-item-onto-player option), staged-item trading marker, cancel text; research `docs/research/2026-08-14-trade-lane{A,B,C}-*.md`, memory `project_secure_trade.md` |
|
||||
| No character creation — must use ACE admin | **Phase H.4** |
|
||||
| Sky is a flat color | **Phase G.1** (shipped; F7 cycles time, F10 cycles weather) |
|
||||
| Can't join allegiance | **Phase H.2** |
|
||||
|
|
|
|||
|
|
@ -99,9 +99,6 @@ internal sealed class SelectionInteractionController
|
|||
{
|
||||
ArgumentNullException.ThrowIfNull(payload);
|
||||
uint target = _query.PickAt(mouseX, mouseY, includeSelf: true) ?? 0u;
|
||||
if (ItemInteractionController.PhysicsDiagnosticsTradeProbe)
|
||||
Console.WriteLine(
|
||||
$"[trade] drag-release item=0x{payload.ObjId:X8} pick=0x{target:X8}");
|
||||
if (target != 0u)
|
||||
_query.BeginLightingPulse(target);
|
||||
_items.PlaceIn3D(payload, target);
|
||||
|
|
|
|||
|
|
@ -229,14 +229,8 @@ internal sealed class LiveSessionCommandRouter : ILiveSessionCommandRouting
|
|||
commands.Register<AddFriendRuntimeCmd>(
|
||||
command => SendIfActive(() => bindings.AddFriend(command.Name)));
|
||||
commands.Register<OpenTradeNegotiationsRuntimeCmd>(
|
||||
command =>
|
||||
{
|
||||
bool sent = SendIfActive(() =>
|
||||
bindings.OpenTradeNegotiations(command.PartnerGuid));
|
||||
// TEMPORARY [trade] probe (2026-08-14 gate round 2).
|
||||
Console.WriteLine(
|
||||
$"[trade] open-cmd partner=0x{command.PartnerGuid:X8} sent={sent}");
|
||||
});
|
||||
command => SendIfActive(() =>
|
||||
bindings.OpenTradeNegotiations(command.PartnerGuid)));
|
||||
commands.Register<CloseTradeNegotiationsRuntimeCmd>(
|
||||
_ => SendIfActive(bindings.CloseTradeNegotiations));
|
||||
commands.Register<AddToTradeRuntimeCmd>(
|
||||
|
|
|
|||
|
|
@ -1055,19 +1055,11 @@ public sealed class ItemInteractionController : IDisposable
|
|||
& PublicWeenieFlags.Player) == 0)
|
||||
return false;
|
||||
|
||||
if (PhysicsDiagnosticsTradeProbe)
|
||||
Console.WriteLine(
|
||||
$"[trade] use-on-player guid=0x{targetGuid:X8} "
|
||||
+ $"nonCombat={_inNonCombatMode()} subscribers={SecureTradeRequested is not null}");
|
||||
if (_inNonCombatMode())
|
||||
SecureTradeRequested?.Invoke(targetGuid, 0u);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>TEMPORARY (2026-08-14 trade gate round 1): [trade] seam
|
||||
/// probe lines, stripped once the two-client gate passes.</summary>
|
||||
internal static bool PhysicsDiagnosticsTradeProbe = true;
|
||||
|
||||
public bool DropToWorld(ItemDragPayload payload)
|
||||
=> PlaceIn3D(payload, targetGuid: 0u);
|
||||
|
||||
|
|
@ -1219,10 +1211,6 @@ public sealed class ItemInteractionController : IDisposable
|
|||
// (ItemHolder::AttemptPlaceIn3D @ 0x00588600's option branch
|
||||
// → ClientTradeSystem::AttemptToTradeItem @ 0x0056DF80).
|
||||
// ObjectId = the dragged item, TargetId = the player.
|
||||
if (PhysicsDiagnosticsTradeProbe)
|
||||
Console.WriteLine(
|
||||
$"[trade] drag-on-player item=0x{action.ObjectId:X8} "
|
||||
+ $"target=0x{action.TargetId:X8} subscribers={SecureTradeRequested is not null}");
|
||||
SecureTradeRequested?.Invoke(action.TargetId, action.ObjectId);
|
||||
break;
|
||||
case ItemPolicyActionKind.DropToWorld:
|
||||
|
|
|
|||
|
|
@ -189,10 +189,6 @@ public sealed class SecureTradeUiController : IRetainedPanelController
|
|||
public void RequestSecureTrade(uint partnerGuid, uint itemGuid)
|
||||
{
|
||||
if (_disposed || partnerGuid == 0u) return;
|
||||
if (ItemInteractionController.PhysicsDiagnosticsTradeProbe)
|
||||
Console.WriteLine(
|
||||
$"[trade] request partner=0x{partnerGuid:X8} item=0x{itemGuid:X8} "
|
||||
+ $"open={_bindings.Trade.Snapshot.IsOpen}");
|
||||
RuntimeTradeSnapshot snapshot = _bindings.Trade.Snapshot;
|
||||
if (snapshot.IsOpen && snapshot.PartnerGuid == partnerGuid)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2568,8 +2568,6 @@ public sealed class WorldSession : IDisposable
|
|||
public void SendOpenTradeNegotiations(uint partnerGuid)
|
||||
{
|
||||
uint seq = NextGameActionSequence();
|
||||
// TEMPORARY [trade] probe (2026-08-14 gate round 2).
|
||||
Console.WriteLine($"[trade] wire-open partner=0x{partnerGuid:X8} seq={seq}");
|
||||
SendGameAction(TradeRequests.BuildOpenTradeNegotiations(seq, partnerGuid));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,10 +98,6 @@ 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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue