Guild Bank Ledger

*BETA* - Persistent guild bank transaction logging with automatic multi-player sync.

File Details

v0.30.2

  • R
  • Apr 27, 2026
  • 320.94 KB
  • 5
  • 12.0.5
  • Retail

File Name

GuildBankLedger-v0.30.2.zip

Supported Versions

  • 12.0.5

GuildBankLedger

v0.30.2 (2026-04-27)

Full Changelog Previous Releases

  • Merge pull request #6 from RussellFeinstein/sync/v0.30.2-instrumentation
    Sync v0.30.2: receiver auto-bootstrap audit + ACK timeout liveness tag
  • Add receiver auto-bootstrap audit and ACK timeout liveness tag (v0.30.2)
    Two diagnostic-only additions to the sync subsystem, no behavior change.
    The motivation is observability before action: prior captures showed
    chunkFail ~45-50% patterns that conflate true wire loss, combat-with-lost-
    BUSY, full peer disconnect, and a separate auto-bootstrap desync path.
    Fixing chunk sizing without first measuring the cause distribution risks
    treating the wrong failure mode.
    HandleSyncData now logs "Auto-bootstrap at chunk N from <sender>" when a
    SYNC_DATA chunk arrives at index >1 with no active receive session. That
    means the receiver missed an earlier abort hand-off (combat with a lost
    BUSY whisper, or sender-side state desync) and is recovering data mid-
    stream. Bootstraps at chunk = 1 stay silent (legitimate fresh start, e.g.
    addon reload between SYNC_REQUEST and the first chunk).
    The ACK timeout retry audit line now appends ", target=online|offline|
    unknown" via IsGuildMemberOnline. "unknown" covers both "not in roster"
    and "roster not yet populated" (the latter only relevant for a few
    seconds after PLAYER_ENTERING_WORLD). Lets future capture analysis count
    how many timeouts happened against a peer who was already offline (failed-
    to-detect-disconnect) versus a peer who was nominally online (true wire
    loss or in-instance silent abort).
    Six new tests in spec/sync_spec.lua: three auto-bootstrap cases (chunk>1
    logs, chunk=1 silent, chunk=nil silent/no-crash) and three liveness cases
    (target online, target goes offline mid-stream, target leaves guild mid-
    stream). The mid-stream pattern mirrors real-world conditions: SendSyncWhisper
    blocks transmission to known-offline targets at Sync.lua:222, so the test
    must flip the roster after HandleSyncRequest succeeds.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com