File Details
v3.2.3
- R
- May 13, 2026
- 5.15 MB
- 18
- 12.0.5
- Retail
File Name
WHEREDNGN-v3.2.3.zip
Supported Versions
- 12.0.5
Loot & Baloot
v3.2.3 (2026-05-13)
Full Changelog Previous Releases
- docs: add v3.2.3 release notes
Pos-3 Sun bot fix release notes for commit 7d32416 (relocate F5-3
pos-3 Sun Takbeer/Tasgheer donate above Rule 1B). Focused bot-play
bugfix framing — no UI / protocol / saved-variable / scoring /
network changes. v3.1.x / v3.2.x clients remain addon-message
compatible.
The four safeguards covered in the entry:- doesn't override smother's led-suit point-card donation
- doesn't override Tahreeb signal encoding
- filtered with not-wouldWin so it can't steal partner's trick
- highestByRank routes tied donor cards through pickRandomTied
(closes the v3.2.2-deferred F5/D-1 tie-randomization site)
F2 pos-3 Sun hold-back stays intentionally deferred to a future
deception-play audit.
Verification: 1,258 / 0 harness, 20 / 0 standalone smokes.
No tag yet — release-prep only. Design + 4 rounds of Codex review
live in .swarm_findings/v3_2_3_pos3_sun_relocation_design.md.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- docs(v3.2.3): align design counts with BF.7 emitting 2 assertions
Codex review of pos3-sun-relocation-v3.2.3 at 7d32416 approved
the runtime implementation but flagged a count drift in the
design doc: the v0.4 doc predicted 1,257 / 0 final harness with
+12 BF.* checks, but BF.7 ships with two assertions in the same
do-block (BF.7aassertEq(card, "9S")+ BF.7b
assertTrue(card ~= "KS")) for tighter diagnostics — so the
real delta is +13 and the harness lands at 1,258 / 0.
Doc-only amend on this branch (no runtime/test changes):- §0 executive summary F5-3 row: "8 behavioural + 4 source-pin =
12 new harness checks" → "8 BF behavioural blocks emitting 9
assertion checks (BF.7 emits 2 assertions for tighter
diagnostics) + 4 source-pin sub-asserts = 13 new harness
checks". - §5 test count summary: BF.7 row now labelled "(2 harness
checks: 7a + 7b)"; total reworded to "9 behavioural assertion
checks (BF.1, BF.2, BF.3, BF.4, BF.5, BF.6, BF.7a, BF.7b,
BF.9) + 4 source-pin sub-asserts = 13 new harness checks";
final harness 1,245 → 1,257 changed to 1,245 → 1,258. - §5 pre-runtime expected: 7 failing checks unchanged (BF.1,
BF.2, BF.9, BF.8a-d); passing list now "6 harness checks (five
BF blocks producing six passing checks: BF.3, BF.4, BF.5, BF.6,
BF.7a, BF.7b)" with explanation that BF.7's two assertions
both pass pre- and post-fix. - §8 implementation order step 5: target harness 1,257 / 0 →
1,258 / 0 with delta +13.
Branch full harness on7d32416already verified locally by
Codex at 1,258 / 0; standalone smokes at 11/0 and 9/0. This
amend brings the design doc into alignment with the actual
shipped test count.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- §0 executive summary F5-3 row: "8 behavioural + 4 source-pin =
- fix(Bot.lua): relocate F5-3 pos-3 Sun Takbeer donate above Rule 1B
Per .swarm_findings/v3_2_3_pos3_sun_relocation_design.md (v0.4
after 4 rounds of Codex review): F5-3 (v1.4.1 Takbeer/Tasgheer
pos-3 Sun donate non-A/T) used to live in the opp-winning region
at old Bot.lua:4444-4495 but was structurally unreachable
(its gate requiredpartnerWinningwhile the enclosing scope
guaranteedpartnerWinning=falseafter the early-return at
Bot.lua:3886). v3.2.3 relocates the branch into the live
partnerWinning block, between Tahreeb sender end (~L3737) and
Rule 1B start (~L3739).
Final ordering inside the partnerWinning block:
Smother → Tahreeb sender → F5-3 → Rule 1B
Three Codex-required design properties of the relocated block:- Uses
not wouldWin(c, trick, contract, seat)to filter each
donate candidate, preventing F5-3 from stealing partner's
current trick via a same-suit K/Q/J. Replaces the original
#winners == 0gate (semantically tied to the opp-winning
context where this branch used to live). - Builds a
donatepool and calls
Primitives.highestByRank(donate, contract)rather than a
manualdonateRank/cr > donateRankstrict ranking loop.
This closes the v3.2.2-deferred F5/D-1 tie-randomization site
at F5-3 — without it, making the branch reachable would have
re-introduced the v1.1.0 hand-order leak in newly-live code. - Placed AFTER Tahreeb sender (signals beat point-feed on
overlap) and BEFORE Rule 1B (so F5-3 fires before Rule 1B's
"second-lowest" biggest-mistake mitigation).
F2 hold-back («تخليه يمسك») remains deferred to v3.2.4+ per the
design doc — its probabilistic 30%/40% fire-rate needs a separate
deception-play test framework that doesn't fit alongside this
deterministic batch.
Behavioural tests (tests/test_state_bot.lua, section BF, +13
checks):
- BF.1: wire-proof — pos-3 Sun void-in-led, pos-4 void, hand
{KH, TH, QH} → F5-3 returns KH (highest non-A/T).
Pre-fix returned QH via fallback. - BF.2: F5-3 fires regardless of partner being bot or human
(v1.4.5 removed Tahreeb's partner-bot gate; F5-3 doesn't
gate on partner-bot either). - BF.3: Tahreeb T-1 Bargiya wins overlap regression — Tahreeb
runs first, F5-3 doesn't steal the signal. - BF.4: Smother's A-donate stays canonical (#pointCards>=2
gateOk) — Interpretation A invariant. - BF.5: F5-3 doesn't fire without pos-4 void (gate respected).
- BF.6: F5-3 doesn't fire at non-pos-3 positions.
- BF.7: not-wouldWin filter regression guard (hand {KS, 9S, 8S,
7H}, partner JS leading: filter rejects KS as it would
beat partner; bot returns 9S in both pre- and post-fix
states). - BF.8: source-pin block (4 sub-asserts: marker, "relocated",
not-wouldWin filter substring, old-dead-block-removed). - BF.9: tie-randomization wire-proof — hand {KH, QH, KC, QC}
with stubmath.random(2)=2→ F5-3 returns KC (tied
second K via highestByRank+pickRandomTied). Pre-fix
returned QC (fallback lowestByRank tied second);
post-fix with strict ranking would return KH (BUG case).
Pre-runtime test outcome: exactly 7 fails as designed — BF.1,
BF.2, BF.9, BF.8a, BF.8b, BF.8c, BF.8d. After runtime fix:
1,245 → 1,258 / 0 (+13 BF.* checks; design doc estimated +12
but BF.7 ships with 2 assertions for tighter diagnostics).
Standalone smokes: test_H1_pin_J9_trump 11/0;
test_H7_sun_shortest_lead 9/0.
Files: Bot.lua, tests/test_state_bot.lua only.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
- Uses
- docs: add v3.2.3 pos-3 Sun relocation design
Design pass + 4 rounds of Codex review for relocating F5-3
(Takbeer/Tasgheer pos-3 Sun donate non-A/T) out of its currently
unreachable opp-winning location into the live partnerWinning
block at Bot.lua:~3738, between Tahreeb sender and Rule 1B.
Approved scope:- F5-3 relocation only.
- F2 hold-back remains deferred to v3.2.4+ (probabilistic
deception play; needs its own audit + test framework). - Final ordering: Smother → Tahreeb → F5-3 → Rule 1B.
- Required shape: donate-pool + Primitives.highestByRank (closes
the v3.2.2-deferred F5/D-1 tie-randomization site at F5-3 as
part of making it reachable). - Required filter: not wouldWin(c, trick, contract, seat) per
card (prevents F5-3 from stealing partner's current trick
via same-suit K/Q/J).
Test plan: BF.1-BF.9, 12 new harness checks. Expected pre-runtime
fails: exactly 7 (BF.1, BF.2, BF.9, BF.8a-d). Expected final
harness: 1,245 → 1,257.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

