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. Itspos2Lower
predicate implies partner is currently winning the trick, but the
branch sits inside the opp-winning#winners > 0block (Bot.lua
:4169) — reached only AFTER the much earlier
if partnerWinning then ... returnblock (Bot.lua:3362-3887) has
fallen through. The conjunction
partnerWinning=true ∧ partnerWinning=falseis 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) viaoppsVoidPath. 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 newexception3Pathlocal flag
(parallel to the existingoppsVoidPathfor 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
- CC.1: Hokm Exception #3 bidder-team with no K of trump now
- 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 whentrickCount >= 4but CONSUMED only when
trickCount <= 3(inroundEndDeferActive). 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 thetrickCount >= 4gate from the COMPUTATION. At
trick 1, raw=0 already tripsraw < baseTarget - 30for 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
gatepartnerWonAny=falseflips; 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:- 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. - Bot.lua:2038 — bidder-team trumpCount<4 A-cash: skip A when
anyOpponentVoidIn, Hokm-only (Sun unchanged per Codex prompt). - Bot.lua:2080 — bidder-team M3lm conservativeOpp A-cash: same.
- Bot.lua:2167 — bidder-team J+9 trump-lock A-cash: same.
- Bot.lua:2354 — defender bidder-drought point-card cash: same.
- Bot.lua:2401 — Tier-4 B-77 single-opp-void boss exploit: narrowed
tonot 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
- Bot.lua:1244 — Q4 Fix #1 gate: opponentsVoidInAll →
- 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

