promotional bannermobile promotional banner

Loot & Baloot

Loot & Baloot — Play Saudi Baloot (بلوت) inside World of Warcraft. A four-player trick-taking card game over the party addon channel. Host with friends or play solo against bots, with full Hokm / Sun rules, melds, escalations, and SWA claims.

File Details

v3.2.1

  • R
  • May 12, 2026
  • 5.15 MB
  • 8
  • 12.0.5
  • Retail

File Name

WHEREDNGN-v3.2.1.zip

Supported Versions

  • 12.0.5

Loot & Baloot

v3.2.1 (2026-05-12)

Full Changelog Previous Releases

  • docs: add v3.2.1 release notes
    Four user-visible bot-play fixes shipped via commits 320e001
    (F1 / blind A-leads), 8efd62d (F3 / underContractPressure bypass),
    c7b874f (F4 / Hokm Faranka Exception #3), and 9cf2dcc (F2 /
    pos-3 Sun hold-back unreachable flag).
    No tag yet — release-prep only. Audit + per-fix rationale lives
    in .swarm_findings/v3_2_1_pickplay_audit.md.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • docs(Bot.lua): F2 — flag pos-3 Sun hold-back as unreachable (audit L-1 / U-1)
    Per .swarm_findings/v3_2_1_pickplay_audit.md F2 (audit L-1 / U-1):
    the v1.4.4 «تخليه يمسك» pos-3 Sun hold-back branch (Bot.lua
    ~4492-4564) is currently unreachable in production. Its pos2Lower
    predicate implies partner is currently winning the trick, but the
    branch sits inside the opp-winning #winners > 0 block (Bot.lua
    :4169) — reached only AFTER the much earlier
    if partnerWinning then ... return block (Bot.lua:3362-3887) has
    fallen through. The conjunction
    partnerWinning=true ∧ partnerWinning=false is unsatisfiable, so
    the «تخليه يمسك» play never executes.
    Independently surfaced by two separate audit agents (L-1 logic-error
    audit + U-1 unreachable-branch audit) — strong cross-confirmation.
    v3.2.1 deliberately does NOT reactivate this branch (Option D-c in
    the audit doc; full relocation to before the partnerWinning return
    deferred to a focused gameplay-fix design pass). This commit adds an
    inline comment marker explaining the unreachability so a future
    cleanup batch doesn't delete the historical code without addressing
    the reachability question first.
    Source-pin tests (tests/test_state_bot.lua, section CD, +3 checks):
    • CD.1a: F2 marker present in Bot.lua
    • CD.1b: audit L-1 / U-1 reference anchored
    • CD.1c: "UNREACHABLE in production" claim documented near branch
      Harness: 1238 → 1241 passing checks, 0 failing.
      Comment-only edit to Bot.lua (no runtime behavior change for this
      branch).
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(Bot.lua): F4 — Hokm Faranka Exception #3 exempts F-16 K-cover veto (audit L-9)
    Per .swarm_findings/v3_2_1_pickplay_audit.md F4 (audit L-9): the
    F-16 anti-rule ("don't Faranka without K of trump as cover") was
    correctly scoped to skip Exception #4 (both opps observed-void in
    trump) via oppsVoidPath. But it still fired for Exception #3
    (J of trump dead, we hold 9-as-new-top-live-trump), wrongly
    suppressing the Saudi-canonical withhold whenever the bidder team's
    hand lacked K of trump.
    Per decision-trees.md §10 row 278 (Common, video #04): "Hokm
    exception #3: J of trump already played/dead, your 9 is now top
    live trump → Faranka allowed." F-16's "K-cover" premise assumes
    a higher-than-our-withhold trump exists that needs covering — but
    on Exception #3 the 9 IS the new top live trump in Hokm rank
    (J=8 > 9=7 > A=6 > T=5 > K=4 > Q=3 > 8=2 > 7=1), so no opp card
    can punish the withhold regardless of K presence.
    Fix: track Exception #3 with a new exception3Path local flag
    (parallel to the existing oppsVoidPath for Exception #4), and
    extend the F-16 veto gate to skip both paths.
    Behavioral tests (tests/test_state_bot.lua, section CC, +6 checks):
    • CC.1: Hokm Exception #3 bidder-team with no K of trump now
      Farankas (returns 7♥ non-winner) instead of taking with the
      winner.
    • CC.2: Negative regression — Exception #2 (2 trumps, K-less)
      STILL vetoed by F-16. F4 carve-out is Exception-#3-only.
    • CC.3: source-pin coverage for F4 marker, exception3Path flag,
      audit L-9 reference, and the new gate text.
      Harness: 1232 → 1238 passing checks, 0 failing.
      Files: Bot.lua, tests/test_state_bot.lua only.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(Bot.lua): F3 — hoist underContractPressure out of dead gate (audit U-2)
    Per .swarm_findings/v3_2_1_pickplay_audit.md F3 (audit U-2): the
    v1.4.8 "if bidder team is failing fast, take the T-boss now" bypass
    was COMPUTED only when trickCount >= 4 but CONSUMED only when
    trickCount <= 3 (in roundEndDeferActive). The two gates are
    mutually exclusive — the bypass was vacuously false whenever it
    could actually affect the decision. Sun bidder-team bots at tricks
    1-3 with no captures yet still deferred T-boss instead of grabbing
    it.
    Fix: drop the trickCount >= 4 gate from the COMPUTATION. At
    trick 1, raw=0 already trips raw < baseTarget - 30 for any sane
    target, so bidder team correctly establishes the T-boss instead of
    deferring. Defender behavior unchanged (isBidderTeam=false short-
    circuits the bypass computation as before).
    Behavioral tests (tests/test_state_bot.lua, section BB, +4 checks):
    • BB.1: Sun M3lm bidder-self at trick 1 takes T♥ boss (bypass live).
    • BB.2: Sun M3lm defender at same trick 1 still defers T♥ (no
      bypass for non-bidder team).
    • BB.3: bidder establishes T♥ when partner already won (deferral
      gate partnerWonAny=false flips; bypass change doesn't
      regress this path).
    • BB.4: source-pin for the F3 marker + audit U-2 reference.
      Harness: 1227 → 1232 passing checks, 0 failing.
      Files: Bot.lua, tests/test_state_bot.lua only.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • fix(Bot.lua): F1 — blind A-leads check opp voids in Hokm (audit L-2)
    Per .swarm_findings/v3_2_1_pickplay_audit.md F1: every Hokm game where
    an opp has been observed void in a side-suit silently fed the bot's
    non-trump Ace into a trump ruff. v3.1.2 Q4 Fix #1 patched the
    "highest-unplayed" arm at Bot.lua:1244 with opponentsVoidInAll
    (both-void only) — a conservative initial step that left single-void
    scenarios still leaking.
    Six sites tightened:
    1. Bot.lua:1244 — Q4 Fix #1 gate: opponentsVoidInAll →
      anyOpponentVoidIn. Audit identifies this as the actual root site;
      the 4 below are downstream defense-in-depth.
    2. Bot.lua:2038 — bidder-team trumpCount<4 A-cash: skip A when
      anyOpponentVoidIn, Hokm-only (Sun unchanged per Codex prompt).
    3. Bot.lua:2080 — bidder-team M3lm conservativeOpp A-cash: same.
    4. Bot.lua:2167 — bidder-team J+9 trump-lock A-cash: same.
    5. Bot.lua:2354 — defender bidder-drought point-card cash: same.
    6. Bot.lua:2401 — Tier-4 B-77 single-opp-void boss exploit: narrowed
      to not isBidderTeam. The "partner over-ruffs roughly half the
      time" gamble has acceptable EV for defenders but risks contract
      failure for bidder team.
      Behavioral tests (tests/test_state_bot.lua, section BA, +8 checks):
    • BA.1: Hokm Advanced bidder with side-suit Ace + single-opp void
      no longer leads the Ace.
    • BA.2: Hokm trumpless bidder (the audit's "leak after 4-site fix
      via 2401" path) — even after Q4 + 2401 fallthrough now safe.
    • BA.3: Sun A-cash UNCHANGED (no trump → no ruff threat).
    • BA.4: B-77 exploit preserved for defenders.
    • BA.5: source-pin coverage for the 6 markers + audit reference.
      Harness: 1219 → 1227 passing checks, 0 failing.
      Files: Bot.lua, tests/test_state_bot.lua only. No .toc, .pkgmeta,
      workflow, protocol, or saved-variable changes. No tag.
      Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
  • docs: add v3.2.1 pickplay audit
    5-agent parallel audit of pickLead/pickFollow surfaces 37 findings
    post-v3.2.0 restructure. 13 HIGH+, 2 cross-confirmed by independent
    agents (L-1/U-1 pos-3 Sun hold-back dead branch; L-4/T-7
    deceptiveOverplay).
    Critical: 4 sibling bidder-team A-cash arms in Hokm ignore observed
    opp voids and feed free ruffs. v3.1.2 Q4 Fix #1 fixed the same class
    at one site (Bot.lua:1244-1257) but not the other 4.
    Proposes a 4-fix Tier-1 batch (F1=L-2, F3=U-2, F4=L-9, F2=L-1/U-1
    comment-flag only) for v3.2.1, with 2 Tier-2 predictability fixes
    (F5=D-1, F6=D-2) and 5 new behavioural tests for HIGH-coverage gaps.
    Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com