Some checks are pending
Headless portability / portable-headless (ubuntu-latest) (push) Waiting to run
Headless portability / portable-headless (windows-latest) (push) Waiting to run
Headless portability / linux-graphical (push) Waiting to run
Headless portability / linux-vulkan (push) Waiting to run
Both chains pinned by the live [vendor-diag] run (vendor-diag.log) after three code-reading rounds each failed: The split bar: ACE serializes descStackSize=1 for EVERY browse row (live wire, log 343-348) — the R1-era "ACE never populates desc" claim is retracted with the line quoted. Retail's vendor sites read pwd._maxStackSize directly (four sites, incl. UpdateItemsList @0x004c1ea0 stamping min(remaining, _maxStackSize)); ResolveAuthoredStackSize flips to max-first for its vendor-only consumers. Taper ceiling 1000, scarab 100, seed 1 for exempt. Pricing still reads the desc (per-1 values on ACE). Walk-to-use: the local player's getObjectA seam was bound to TryGetPhysicsHost, which resolves only INSTALLED physics hosts — a never-animated vendor has none, so TargetManager.SetTarget got null, the MoveToObject armed with zero nodes, and UseTime never dispatched. The log's natural=False completions were the user's own movement keys (retail-correct input-edge cancels); attempt 4 worked because the greeting animation had installed a host. RuntimePhysicsState gains the retail CObjectMaint::GetObjectA seam (bound canonical resolver with installed-host fallback); the graphical host binds the SAME lazy-minimal-host resolver every remote already uses — whose own doc comment names this exact never-animated hazard. The reservation release was already correct (2b premise refuted with evidence); the production-wiring invariants are now pinned by four new tests including the pre-fix pathology as a permanent sabotage control. AP-169 rewritten a second time, honestly. The [vendor-diag] probe family (ACDREAM_DUMP_VENDOR) lands env-gated for future live triage. Clean-room complete solution: 11,536 passed / 4 skipped / 0 failed. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
27 lines
1.2 KiB
C#
27 lines
1.2 KiB
C#
using System;
|
|
|
|
namespace AcDream.Core.Items;
|
|
|
|
/// <summary>
|
|
/// TEMPORARY diagnostic-probe owner for two live-only regressions that have
|
|
/// each survived two green-tested fixes: Chain A (a far-click walk-to-use
|
|
/// approaches a vendor, the vendor plays its cosmetic greeting, but the shop
|
|
/// window never opens) and Chain B (selecting a splittable vendor stack
|
|
/// shows the bare item name with no quantity slider). Every probe line is
|
|
/// prefixed <c>[vendor-diag]</c> and gated on <see cref="DumpVendorEnabled"/>
|
|
/// so the family is a true no-op when the flag is unset.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Read once from <c>ACDREAM_DUMP_VENDOR=1</c> at process start, per Code
|
|
/// Structure Rule 5 (one static diagnostic-owner class per subsystem, no
|
|
/// per-call-site <see cref="Environment.GetEnvironmentVariable"/> reads).
|
|
/// Lives in <c>AcDream.Core</c> — the one project every call site (App,
|
|
/// Core.Net, Runtime) already references — so a single flag instance is
|
|
/// shared across the whole probe family regardless of which layer observes
|
|
/// it first.
|
|
/// </remarks>
|
|
public static class VendorDiagnostics
|
|
{
|
|
public static bool DumpVendorEnabled { get; } =
|
|
Environment.GetEnvironmentVariable("ACDREAM_DUMP_VENDOR") == "1";
|
|
}
|