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 entriesproject_singleton_chain_pending_diagnosis.mdand
project_replan_scan_race.mdcover 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
- B1 ([other] timeout bucket overload): two distinct state patterns
- 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