Add personality-driven bots with 8 archetypes (Nit, TAG, LAG, Maniac, Calling Station, Loose Fish, Old Man, Monster TAG) across 5 skill levels. Includes: - Three-layer decision pipeline (base strategy → personality filter → skill noise) - Decision timer system with archetype-specific timeout defaults - Observation tracking engine (VPIP, PFR, Fold-to-CBet, WTSD, bet sizing, timing tells) - Player classification engine with weighted scoring and confidence scaling - Table setup UI with visual seat editor and quick presets - Info display system with 4 visibility levels - Teaching coach with post-hand analysis and real-time suggestions Archives bot-intelligence change and syncs all 8 delta specs to main specs.
3.4 KiB
ADDED Requirements
Requirement: Eight distinct bot archetypes exist
The system SHALL provide 8 bot archetypes: Nit, TAG (Tight-Aggressive), LAG (Loose-Aggressive), Maniac, Calling Station, Loose Fish, Old Man (Tight-Passive), and Monster TAG. Each archetype SHALL have a defined personality profile specifying characteristic VPIP range, PFR range, bluff frequency, and aggression pattern.
Scenario: Archetype list is complete
- WHEN the system initializes the bot personality registry
- THEN all 8 archetypes are available for assignment to bot seats
Scenario: Each archetype has defined statistical profile
- WHEN querying an archetype's personality profile
- THEN the profile includes VPIP range, PFR range, bluff frequency, and aggression pattern
Requirement: Five skill levels per archetype
The system SHALL provide 5 skill levels: Novice, Beginner, Medium, Hard, and Ultra. Each skill level SHALL define an error rate range and a set of enabled behavioral capabilities.
Scenario: Skill levels span full difficulty range
- WHEN querying available skill levels
- THEN Novice through Ultra are returned with increasing competence
Scenario: Error rates scale with skill
- WHEN comparing error rates between adjacent skill levels
- THEN higher skill levels have lower error rates (Ultra < Hard < Medium < Beginner < Novice)
Requirement: Archetype-specific mistake libraries
The system SHALL maintain a mistake library per archetype. Each archetype's mistakes SHALL be thematically consistent with its play style (e.g., Nit mistakes involve folding too much, Fish mistakes involve calling too much). A bot's skill level SHALL determine the frequency at which mistakes from its library are triggered.
Scenario: Novice TAG makes tight-player mistakes
- WHEN a Novice TAG bot faces a decision where a mistake could occur
- THEN the possible mistakes include folding too much and missing value bets, not calling too wide
Scenario: Novice Fish makes loose-player mistakes
- WHEN a Novice Fish bot faces a decision where a mistake could occur
- THEN the possible mistakes include calling with weak hands and falling for bluffs, not folding too tight
Scenario: Ultra bots rarely make mistakes
- WHEN an Ultra-skill bot plays 100 hands
- THEN fewer than 5 decisions are influenced by mistake injection
Requirement: Three-layer decision pipeline
The system SHALL compute bot decisions through a three-layer pipeline: (1) base strategy produces GTO-informed baseline probabilities, (2) personality filter reshapes probabilities according to archetype traits, (3) skill noise layer injects mistakes proportional to the bot's error rate. The final decision SHALL be sampled from the resulting probability distribution.
Scenario: Base strategy provides starting point
- WHEN a bot holds premium cards in late position with no prior action
- THEN the base strategy assigns high probability to raising
Scenario: Personality filter adjusts for archetype
- WHEN a Nit bot evaluates the same hand as an LAG bot
- THEN the Nit's raise probability is lower due to tighter range filtering
Scenario: Skill noise degrades decisions for lower skill
- WHEN a Novice bot makes a decision through the full pipeline
- THEN the final action may differ from the optimal base strategy action due to mistake injection