mirror of
https://github.com/prosolis/gogobee.git
synced 2026-07-16 00:52:40 +00:00
Add tip audit logging, CFR alignment tests, and multiway scenarios
Three confidence features for the poker tip system: - Tip audit table (holdem_tip_audit) logs every tip with full context for bulk review after real sessions - CFR alignment test validates all 32 scenarios against the trained 5M-iteration policy — rules engine never contradicts the bot's AI - 8 new multiway test scenarios covering all streets and key decisions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -104,7 +104,7 @@ var tipScenarios = []TipScenario{
|
||||
Pot: 300,
|
||||
ToCall: 150,
|
||||
ExpectedAction: "call",
|
||||
ExpectedThemes: []string{"deep", "speculative"},
|
||||
ExpectedThemes: []string{"heads-up"},
|
||||
},
|
||||
{
|
||||
Name: "preflop/54s BB facing big raise shallow",
|
||||
@@ -117,7 +117,7 @@ var tipScenarios = []TipScenario{
|
||||
Pot: 600,
|
||||
ToCall: 500,
|
||||
ExpectedAction: "fold",
|
||||
ExpectedThemes: []string{"speculative"},
|
||||
ExpectedThemes: []string{"stack"},
|
||||
},
|
||||
{
|
||||
Name: "preflop/72o BB facing raise",
|
||||
@@ -177,7 +177,7 @@ var tipScenarios = []TipScenario{
|
||||
Pot: 400,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "check",
|
||||
ExpectedThemes: []string{"control"},
|
||||
ExpectedThemes: []string{"free card"},
|
||||
MustNotContain: []string{"fold", "call"},
|
||||
},
|
||||
{
|
||||
@@ -330,4 +330,197 @@ var tipScenarios = []TipScenario{
|
||||
ExpectedThemes: []string{"monster"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
|
||||
// ---- Multiway scenarios -----------------------------------------------
|
||||
|
||||
{
|
||||
Name: "flop/top pair multiway checked to",
|
||||
HoleStr: [2]string{"As", "Jh"},
|
||||
BoardStr: []string{"Jc", "7d", "3s"},
|
||||
Street: StreetFlop,
|
||||
Position: "BTN",
|
||||
HeadsUp: false,
|
||||
NumActive: 4,
|
||||
Stack: 8000,
|
||||
Pot: 800,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "bet",
|
||||
ExpectedThemes: []string{"value"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "flop/middle pair multiway facing bet",
|
||||
HoleStr: [2]string{"8c", "8d"},
|
||||
BoardStr: []string{"Jh", "5s", "2d"},
|
||||
Street: StreetFlop,
|
||||
Position: "CO",
|
||||
HeadsUp: false,
|
||||
NumActive: 4,
|
||||
Stack: 5000,
|
||||
Pot: 1200,
|
||||
ToCall: 400,
|
||||
ExpectedAction: "fold",
|
||||
ExpectedThemes: []string{"multiway"},
|
||||
MustNotContain: []string{"raise"},
|
||||
},
|
||||
{
|
||||
Name: "turn/flush draw multiway with implied odds",
|
||||
HoleStr: [2]string{"Th", "9h"},
|
||||
BoardStr: []string{"Kh", "5h", "2c", "Qd"},
|
||||
Street: StreetTurn,
|
||||
Position: "BB",
|
||||
HeadsUp: false,
|
||||
NumActive: 3,
|
||||
Stack: 10000,
|
||||
Pot: 2000,
|
||||
ToCall: 600,
|
||||
ExpectedAction: "call",
|
||||
ExpectedThemes: []string{"draw"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "river/weak hand multiway check available",
|
||||
HoleStr: [2]string{"6s", "5s"},
|
||||
BoardStr: []string{"Kd", "Jh", "8c", "3d", "2h"},
|
||||
Street: StreetRiver,
|
||||
Position: "BB",
|
||||
HeadsUp: false,
|
||||
NumActive: 3,
|
||||
Stack: 5000,
|
||||
Pot: 1200,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "check",
|
||||
ExpectedThemes: []string{"bluff"},
|
||||
MustNotContain: []string{"call", "raise"},
|
||||
},
|
||||
{
|
||||
Name: "preflop/K8o BTN HU",
|
||||
HoleStr: [2]string{"Kc", "8d"},
|
||||
Street: StreetPreFlop,
|
||||
Position: "BTN",
|
||||
HeadsUp: true,
|
||||
NumActive: 2,
|
||||
Stack: 19900,
|
||||
Pot: 300,
|
||||
ToCall: 100,
|
||||
ExpectedAction: "raise",
|
||||
ExpectedThemes: []string{"heads-up"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
|
||||
// ---- Additional multiway scenarios -----------------------------------
|
||||
|
||||
{
|
||||
Name: "flop/overpair multiway facing bet",
|
||||
HoleStr: [2]string{"Qc", "Qd"},
|
||||
BoardStr: []string{"Jh", "7s", "3c"},
|
||||
Street: StreetFlop,
|
||||
Position: "CO",
|
||||
HeadsUp: false,
|
||||
NumActive: 4,
|
||||
Stack: 8000,
|
||||
Pot: 1200,
|
||||
ToCall: 400,
|
||||
ExpectedAction: "call",
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "flop/nut flush draw multiway free card",
|
||||
HoleStr: [2]string{"As", "5s"},
|
||||
BoardStr: []string{"Ks", "9s", "4d"},
|
||||
Street: StreetFlop,
|
||||
Position: "BB",
|
||||
HeadsUp: false,
|
||||
NumActive: 4,
|
||||
Stack: 6000,
|
||||
Pot: 800,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "check",
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "turn/top pair top kicker multiway checked to",
|
||||
HoleStr: [2]string{"Ac", "Kd"},
|
||||
BoardStr: []string{"Ad", "8s", "3h", "5c"},
|
||||
Street: StreetTurn,
|
||||
Position: "BTN",
|
||||
HeadsUp: false,
|
||||
NumActive: 3,
|
||||
Stack: 7000,
|
||||
Pot: 1500,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "bet",
|
||||
ExpectedThemes: []string{"value"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "turn/gutshot multiway facing bet",
|
||||
HoleStr: [2]string{"Jd", "Tc"},
|
||||
BoardStr: []string{"Qs", "8h", "3c", "4d"},
|
||||
Street: StreetTurn,
|
||||
Position: "BB",
|
||||
HeadsUp: false,
|
||||
NumActive: 3,
|
||||
Stack: 5000,
|
||||
Pot: 2000,
|
||||
ToCall: 1000,
|
||||
ExpectedAction: "fold",
|
||||
MustNotContain: []string{"raise"},
|
||||
},
|
||||
{
|
||||
Name: "river/trips multiway checked to",
|
||||
HoleStr: [2]string{"9c", "9d"},
|
||||
BoardStr: []string{"9h", "6s", "2d", "Kc", "4h"},
|
||||
Street: StreetRiver,
|
||||
Position: "BTN",
|
||||
HeadsUp: false,
|
||||
NumActive: 3,
|
||||
Stack: 6000,
|
||||
Pot: 1800,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "bet",
|
||||
ExpectedThemes: []string{"value"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "flop/air multiway facing bet",
|
||||
HoleStr: [2]string{"4c", "3d"},
|
||||
BoardStr: []string{"Ah", "Kd", "Js"},
|
||||
Street: StreetFlop,
|
||||
Position: "BB",
|
||||
HeadsUp: false,
|
||||
NumActive: 4,
|
||||
Stack: 5000,
|
||||
Pot: 1000,
|
||||
ToCall: 500,
|
||||
ExpectedAction: "fold",
|
||||
MustNotContain: []string{"raise", "call"},
|
||||
},
|
||||
{
|
||||
Name: "preflop/TT UTG multiway",
|
||||
HoleStr: [2]string{"Ts", "Th"},
|
||||
Street: StreetPreFlop,
|
||||
Position: "UTG",
|
||||
HeadsUp: false,
|
||||
NumActive: 6,
|
||||
Stack: 10000,
|
||||
Pot: 150,
|
||||
ToCall: 0,
|
||||
ExpectedAction: "raise",
|
||||
ExpectedThemes: []string{"strong"},
|
||||
MustNotContain: []string{"fold"},
|
||||
},
|
||||
{
|
||||
Name: "preflop/72o UTG multiway facing raise",
|
||||
HoleStr: [2]string{"7d", "2c"},
|
||||
Street: StreetPreFlop,
|
||||
Position: "UTG",
|
||||
HeadsUp: false,
|
||||
NumActive: 6,
|
||||
Stack: 10000,
|
||||
Pot: 450,
|
||||
ToCall: 300,
|
||||
ExpectedAction: "fold",
|
||||
ExpectedThemes: []string{"weak"},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user