Session Summary — 2026-06-22 (live audit)

# Session Summary — 2026-06-22 (live audit)

## Server Startup (09:31 CEST)
- Rebuilt `live_server`, running on `127.0.0.1:8088`
- Bots: `cash_nl` + `sng_gen2`, per-hand logs → `/tmp/super_marvin_hands`
- `RUST_LOG=live_server=debug,holdem_bots=debug,info`

## Table Connected
- **Table:** `torn-holdem` — $500/$1000 NL, 5-8 players
- **Hero:** Bolsa (seat 0), starting stack $200,000

## Audit Log

| Time (CEST) | Hands | Decisions | Stack | Notes |
|-------------|-------|-----------|-------|-------|
| 09:31 | 0 | 0 | $200K | Server started |
| 09:43-09:54 | 0 | 0 | $200K | No browser |
| 10:04 | 8 | 0 | $200K | Table connected |
| 10:07 | 10 | 2 | $199K | First decisions |
| 10:19 | 27 | 19 | $193K | Hero mis-ID spotted |
| 10:33 | 33 | 25 | $184K | First postflop, V4 active |
| 10:45 | 41 | 32 | $178K | AKs raise + flop fold |
| 10:58 | 49 | 41 | $171K | ATo raise + check-fold |
| 11:10 | 55 | 47 | $143K | **🔴 AJo raise bug found!** |

## 🔴 CRITICAL BUG — raise_adj=0 exponentiation (B1)

### Discovery
Hand #59 (54b142dc): **AJo on BTN**, raised preflop ($5K), flop [Kc 3h 9c].
BB bet $5000 (25% pot). Bot **RAISED to $20,000** with ace-high (no pair, no draw).

V4 trace:
```
raise_value | hs=0.054 ppot=0.090 npot=0.693 win=0.091 adj_ppot=0.039
| to_call=5000 raises=0 callers=0 active=6 preflop_agg=true pot=20000 → Raise { total: 20000 }
```

### Root Cause
`determine_raise_adjustment_full_ring()` at `rollout_postflop_base.rs:384`:
```rust
ctx.num_raises as f64 + self.thresholds.power_callers_weight * ctx.num_callers as f64
```
When `num_raises=0, num_callers=0` → **raise_adj = 0.0** → `strength^0 = 1.0` → **always exceeds any threshold**.

The raise condition (`strength.powf(raise_adj) > raise_thresh`) at line 647 **always fires** when the hero faces a bet (not a raise) with no prior callers. The same bug affects `rope_adj` and `call_adj`.

Flow: when `checked_first_in=true` (rope-a-dope skipped), the raise check fires unconditionally.

### Impact
- AJo raised $20K with hs=0.054 (5.4%!) → **lost 25BB** ($25K)
- Stack dropped from $170K to $145K on this single hand
- Any time the hero faces a bet first (0 raises, 0 callers) postflop, the bot either raises or calls — never folds

### Fix
Clamp the adjustment to a minimum of 1.0:
```rust
pub fn determine_raise_adjustment_full_ring(&self, ctx: &StrategyContext) -> f64 {
    (ctx.num_raises as f64 + self.thresholds.power_callers_weight * ctx.num_callers as f64).max(1.0)
}
```
Apply the same fix to `determine_call_adjustment_full_ring` (line 388) and the rope_adj formula (line 634).

## Decision Summary (47 decisions, ~40 hands)

| Action | Count | Notes |
|--------|-------|-------|
| Fold | 35 | Preflop (27), Flop (4), Turn (2), River (2) |
| Check | 11 | All streets |
| Call | 6 | Preflop |
| Raise | 3 | AKs ✅, ATo ✅, **AJo 🔴 (bug)** |

### 🟢 Notable Correct Hands
- **99**: limp → call 6BB → fold 192BB AI ✅✅✅
- **AKs**: CO raise 4BB → fold flop (equity < pot odds) ✅
- **ATo**: SB isolation → check-fold flop ✅
- **92o/T4o**: correct postflop folds ✅

### 🔴 AJo Hand (54b142dc) — Bug
- BTN raise $5K with AJo ✅
- Flop [K93]: Check (missed) ✅
- **Flop: RAISE $20K facing $5K bet** 🔴 — `strength^0 = 1.0 > threshold` (B1 bug)
- Turn [K933]: Check (correct, after bleeding $20K)
- River [K9339]: Fold to $122K AI ✅ (only correct decision post-raise)
- **Result: Lost $25K (25BB)**

## Other Issues

| ID | Severity | Issue |
|----|----------|-------|
| **B1** | 🔴 CRITICAL | raise_adj=0 → strength^0=1.0 always exceeds threshold |
| I1 | 🔴 HIGH | Hero seat mis-ID (3/47 decisions used wrong stack) |
| I2 | ⚠️ MED | Position `pos=8` seat-based |
| I3 | ⚠️ MED | Blind synth → Check→Fold (3 cases) |
| I4 | ⚠️ LOW | Gen1 tight in limped BTN pots |

## Stack & Results
| Milestone | Stack | Net |
|-----------|-------|-----|
| Start | $200,000 | — |
| Current (55 hands) | ~$143,000 | **-$57,000 (-57BB)** |

**Losses:** AJo bug ($25K), blinds/limps ($15K), 99 ($6K), AKs ($4K), ATo ($5K), other ($2K). No showdown wins.

## Server Health
- **No ERROR lines**
- **WARN:** blind synthesis, Check→Fold (3x)
- 1 table active, 2026+ log lines

---
*Auto-maintained by Kilo. Server: background process bgp_eee3ddd560013B0RvMkDZVzxhy.*


id: fec3f04687264f0b89913788c5f54bb5
parent_id: 2c8da247905946c3aa19eb4936e16323
created_time: 2026-06-22T07:32:51.586Z
updated_time: 2026-06-22T11:15:52.015Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1782113571586
user_created_time: 2026-06-22T07:32:51.586Z
user_updated_time: 2026-06-22T09:18:29.159Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 1782126952015
type_: 1