Guild Bank Ledger

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

File Details

v0.32.7

  • R
  • May 20, 2026
  • 363.09 KB
  • 39
  • 12.0.5
  • Retail

File Name

GuildBankLedger-v0.32.7.zip

Supported Versions

  • 12.0.5

GuildBankLedger

v0.32.7 (2026-05-20)

Full Changelog Previous Releases

  • Merge pull request #29 from RussellFeinstein/layout-sort
    Fix sort bank-close handler shadow; add Phase B plan + sort-log archive (v0.32.7)
  • Stamp v0.32.7
    Checkpoint release of the layout-sort topic branch: the sort bank-close
    handler shadow fix plus the Phase B sort-hardening plan and 2026-05-14
    sort-log archive (docs).
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • Route sort bank-close abort through Core OnBankClosed
    The sort executor registered PLAYER_INTERACTION_MANAGER_FRAME_HIDE on the
    shared GBL object, the same object Core already registered it on. AceEvent
    keeps one callback per (object, event), so the executor's registration
    overwrote Core's, and unregisterBankEvents never restored it. After the first
    sort of a session, closing the bank fired the executor's idle handler (a no-op
    when no sort runs) and never GBL:OnBankClosed, so the periodic rescan kept
    running, the auto-opened window stayed open, bankOpen stayed true, and the
    post-close HELLO broadcast was dropped.
    The executor no longer registers frame-hide. Core owns the event (one
    registration, already gated on Enum.PlayerInteractionType.GuildBanker) and
    calls the new GBL:_SortExecutorOnBankClosed from OnBankClosed to abort a
    running sort. This also covers OnDisable/logout, which the frame-hide-only
    registration never did, and removes the incorrect "AceEvent allows multiple
    handlers" comment.
    Adds a regression test (Core OnBankClosed must fire on bank close after a sort
    completes; fails without the fix) and routes the existing mid-plan abort test
    through the new path. Refreshes the CLAUDE.md SortExecutor bullet (pre-warm,
    preWarming suppression, step in-flight guard, bank-close routing). Suite green
    (1240), luacheck clean.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • Add Phase B sort hardening audit and milestone plan
    After Phase A (v0.32.5 pre-warm + warning banner) shipped, the late-poll
    storm and singleton-chain emit patterns first captured on 2026-05-14
    reproduced on 2026-05-20 with concrete fresh evidence. This doc is the
    Phase B audit and milestone proposal.
    Four problems with line-cited root-cause hypotheses:
    • B1 ([other] timeout bucket overload): two distinct state patterns
      collapse into the catchall. Plan: split into "merge-noop" and
      "server-rejected" buckets, disambiguate via op.plannerDstAt intent,
      and abort sort after 3 consecutive refusals on the same itemID.
    • B2 (late-poll dominance): every op confirms via the 4.0s timeout
      floor instead of fast event paths, because client-side slot-API
      propagation lags the GUILDBANKBAGSLOTS_CHANGED firing. Plan: add an
      interim-poll cascade at 0.25/0.5/1.0/2.0s with new [interim-poll]
      audit tag.
    • B3 (misleading projection-vs-live audit lines): planner's frozen
      applyOpToState snapshot drifts from live state when executor ops
      no-op. Plan: rewrite the timeout-path audit at lines 629-647 to show
      live values as primary and planner projection as secondary only when
      divergent.
    • B4 (singleton-chain emit): max-stack-1 permutation that Phase 2
      should have pivot-broken but didn't. Hypothesis is soft; split into
      B4a (Phase 2 instrumentation, ships in v0.32.6) and B4b (diagnose-
      and-fix, deferred until a real trace is captured).
      B5 (replan-time scan-vs-server race) deferred entirely from v0.32.6 —
      the symptom recovers via the replan loop, but wastes one slot of the
      MAX_REPLANS budget.
      Five commits planned on this branch: B1, B2, B3, B4a, then a stamp
      commit at PR-open bumping VERSION to 0.32.6. PR will bundle all four
      milestones as one v0.32.6 release.
      Auto-memory entries project_singleton_chain_pending_diagnosis.md and
      project_replan_scan_race.md cover the deferred items so they don't
      fall off the radar between sessions.
      Doc-only commit. No version bump per the global CLAUDE.md "no version
      bump for repo-internal doc additions" rule.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • Archive 2026-05-14 sort log: late-poll storm and replan-cap abort
    Captures two consecutive in-game sort runs against a 7-tab / 515-slot
    bank on v0.32.3 as reference material for the next sort improvement
    pass. Run A aborted at replan 5/5 after 223.5s with 4/66 ops done; Run B
    completed 64/64 in 290.2s with every op confirmed via the 4.0s
    late-poll floor.
    Diagnosis summary at the top of the doc names six load-bearing
    observations: late-poll dominance, OnSlotsChanged firing but advance
    predicates rejecting, singleton-chain emit pattern (Gateway Control
    Shard x1 routed slot-by-slot), planner state desync on splits,
    overloaded [other] timeout bucket, and replan cap acting as the fuse
    not the bug. Each cites the relevant src/SortExecutor.lua line range
    in the current tree.
    No code changes. No version bump. No CHANGELOG entry.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com