File Details
v3.2.2
- R
- May 12, 2026
- 5.15 MB
- 13
- 12.0.5
- Retail
File Name
WHEREDNGN-v3.2.2.zip
Supported Versions
- 12.0.5
Loot & Baloot
v3.2.2 (2026-05-12)
Full Changelog Previous Releases
- docs: add v3.2.2 release notes
Tie-randomization predictability touch-up for the Hokm bidder-team
side-Ace exhaustion fallback (one site, audit F5 D-1, commit
697cb4d). Maintenance release framing — no gameplay/UI/protocol/
saved-variable/scoring changes. v3.1.x / v3.2.x clients remain
addon-message-compatible.
Verification: 1,245 / 0 harness, 20 / 0 standalone smokes.
No tag yet — release-prep only. Design + per-site rationale lives
in .swarm_findings/v3_2_2_tie_randomization_design.md.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com - docs(batch v3.2.2): align design counts with BE.3 split
Codex review of the v3.2.2A implementation (697cb4d) noted that
the design doc still said BE.1-BE.3 were "3 new checks" with a
harness delta of 1241 → 1244 and a final result of 1,244 / 0,
while the actual implementation has 4 new checks (BE.1, BE.2,
BE.3a, BE.3b — the source-pin BE.3 was split into two assertions
in the samedoblock for clearer marker-vs-audit-ref diagnostics)
and a final result of 1,245 / 0.
Doc-only amend, marked inline as a v0.3 amendment in §4.3:- §4.3 test count summary: "3 new checks" → "4 new checks";
delta1241 → 1244→1241 → 1245. Added BE.3a/BE.3b sub-rows
to the table. - §4.4 (test architecture): updated the "2 deterministic + 1
source-pin" phrasing to acknowledge the BE.3 block fires 2
distinct assertions. - §7 expected harness delta: 1,244 → 1,245; BE.3 sentence now
refers to BE.3a + BE.3b. - §9 implementation order step 5: final harness 1,244 → 1,245;
step 3 now mentions BE.3a + BE.3b explicitly.
No edits to Bot.lua, tests/test_state_bot.lua, or any other
runtime/test/packaging file. Branch harness still 1,245 / 0 from
the prior implementation commit.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- §4.3 test count summary: "3 new checks" → "4 new checks";
- fix(Bot.lua): tie-randomize Hokm side-Ace exhaustion fallback
v3.2.2 F5 site 1 (audit D-1): the side-Ace exhaustion fallback in
pickLead used a strict->loop to pick the highest non-trump card
after all three opp Aces had been observed played. Ties at the
same TrickRank (e.g., K♠ and K♥, bothRANK_PLAIN["K"] = 6)
were broken by hand-iteration order — broadcasting hand position
to a careful observer. Routes through the existing
Primitives.highestByRankinstead, which usespickRandomTied
for ties.
Non-tie behaviour is unchanged: highestByRank still returns the
unique max when no ties exist, and the 1-element tied-set
short-circuit in pickRandomTied (if #tiedSet == 1 then return tiedSet[1] end) avoids any spurious math.random calls.
Behavioural tests (tests/test_state_bot.lua, section BE, +4
checks):- BE.1: tied K♠ + K♥ with math.random(2) stubbed to return 2
now returns K♥ (was K♠ pre-fix). The wire-proof. - BE.2: non-tie K♠ vs Q♥ returns unique max K♠ regardless of
stub. Non-tie regression guard. - BE.3a/b: source-pin for
v3.2.2 F5 site 1marker and
audit D-1reference in Bot.lua.
Harness: 1241 → 1245 passing checks, 0 failing.
Standalone smokes: test_H1_pin_J9_trump 11/0; test_H7_sun_shortest_lead 9/0.
Deferred (not in this batch, per design doc): - F5 site 2 (Sun establishing boss-lead, single-suit filter, no ties)
- F5 site 3 (pos-3 Takbeer donate, currently unreachable)
- F5 site 4 (pos-3 hold-back, F2-flagged dead branch)
- F6 (BotMaster forced-ruff override, trump-only filter, no ties)
Runtime edit confined to Bot.lua; test edit confined to
tests/test_state_bot.lua. No tag, no release, no edits to TOC,
.pkgmeta, workflows, BotMaster, Net, State, Rules, Cards, UI, or
protocol.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- BE.1: tied K♠ + K♥ with math.random(2) stubbed to return 2
- docs: add v3.2.2 tie-randomization design
Design pass for the deferred F5/F6 tie-randomization findings from
the v3.2.1 pickplay audit. After Codex review (v0.2 amendment), the
batch narrows to a single approved site: F5 site 1 (Bot.lua:2033-
2040, Hokm side-Ace exhaustion fallback).
The other four originally-enumerated sites are deferred:- F5 site 2 (Sun establishing boss-lead): single-suit filter → no
ties possible (8 unique ranks per suit). - F5 site 3 (pos-3 Takbeer donate): unreachable — gate requires
partnerWinning<mark>true but execution path guarantees
partnerWinning</mark>false (enclosing partnerWinning block returns
first). Same shape as v3.2.1 F2. - F5 site 4: F2-flagged dead branch + single-suit filter.
- F6 (BotMaster forced-ruff): trump-only filter → no ties.
Expected harness delta: 1241 → 1244 (3 new BE.* checks).
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- F5 site 2 (Sun establishing boss-lead): single-suit filter → no

