Commit 6eeec09
authored
Merge pull request #94 from ImperialBower/epic-27
Epic 27 & 28
Features
- src/bot/exploit.rs — ExploitConfig, scale_percentage, largest_active_opponent, adjust_profile with 8 deviation rules (fold-to-cbet, calling-station,
loose-passive sizing, nit, aggro calldown, WTSD, 3-bet%)
- src/bot/exploitative_decider.rs — ExploitativeDecider<D> wrapper with wrap / wrap_with_config constructors
- src/bot/sim.rs — SimTable::new_with_registry constructor enabling any Box<dyn BotDecider> with full stats ingestion
- src/bot/table_snapshot.rs — SeatInfo gains pub id: Uuid from player.id
- src/analysis/player_stats.rs — StatsRegistry::insert_for_test helper (#[cfg(test)])
- src/bot/training/encoding.rs — ExploitConfig ↔ [f64; 16] encoding with per-dimension bounds
- src/bot/training/evaluator.rs — evaluate / default_field / run_session for BB/100 fitness
- src/bot/training/trainer.rs — ExploitTrainer (1+λ)-ES with Box-Muller Gaussian mutation and 1/5 success rule
- src/bot/training/mod.rs — TrainingConfig, TrainingResult, GenerationRecord re-exports
- src/prelude.rs — re-exports for ExploitConfig, ExploitativeDecider, training types under feature gates
Config/Docs
- Cargo.toml — bot-training feature gate; [[example]] and [[test]] entries for training
- src/bot/mod.rs — registers exploit, exploitative_decider, training modules under feature gates
- src/bot/exploit.rs — #[cfg_attr(feature = "bot-training", derive(Serialize, Deserialize))] on ExploitConfig
- ROADMAP.md — EPIC-27 and EPIC-28 rows added to Epics table
- docs/EPIC-27_Exploitative_Decider.md — full planning doc, all 14 status rows ✅
- docs/EPIC-28_Profile_Training.md — full planning doc, all status rows ✅
- docs/TUTORIAL_EPIC28_ES_Math.md — 473-line math tutorial (ES algorithm, 1/5 rule, Box-Muller, BB/100 noise, CMA-ES relation, references)
- data/exploit_configs/tag_trained.yaml — 100-generation trained config artifact
- data/exploit_configs/.gitkeep — directory placeholder
Tests/Examples
- examples/exploitative_play.rs — TAG-exploit vs LP/TP/Maniac, 1,000 hands, per-rule firing counters via Arc<TelemetryDecider> + SharedTelemetry
newtype
- examples/train_exploit_config.rs — end-to-end training demo with --generations, --hands, --output flags and YAML save
- tests/exploitative_play_smoke.rs — 3 integration tests: chip conservation, stats accumulation, profile deviation firing
- tests/training_integration.rs — smoke test (fast) + 200-generation validation test (#[ignore])23 files changed
Lines changed: 9024 additions & 1 deletion
File tree
- data
- exploit_configs
- hands
- docs
- examples
- src
- analysis
- bot
- training
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
| 4 | + | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
47 | 51 | | |
48 | 52 | | |
49 | 53 | | |
| |||
106 | 110 | | |
107 | 111 | | |
108 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
109 | 121 | | |
110 | 122 | | |
111 | 123 | | |
| |||
130 | 142 | | |
131 | 143 | | |
132 | 144 | | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
133 | 153 | | |
134 | 154 | | |
135 | 155 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
122 | 122 | | |
123 | 123 | | |
124 | 124 | | |
| 125 | + | |
| 126 | + | |
125 | 127 | | |
126 | 128 | | |
127 | 129 | | |
| |||
Whitespace-only changes.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
0 commit comments