KoalaTrapLord
ae8d14c19e
chore: point deepseek brain at deepseek-r1:8b on localhost
2026-03-22 21:49:45 -04:00
KoalaTrapLord
f090a36f79
chore: switch deck builder default model to qwen2.5:7b
2026-03-22 21:40:26 -04:00
cf4e2981e6
fix: resolve 78 test failures via shared stub cleanup and dependent fixes ( #85 ) ( #88 )
...
Centralize and enhance test stubs to implement the full CommanderGameState
interface (battlefield(), living_players(), stack_is_empty(), sim_state,
active_player(), priority_player(), to_dict()). Fix all dependent test
failures across 12 files:
- conftest.py: Enhanced StubCard/StubPlayer/StubGameState with full API
compatibility; added basic_creature fixture; fixed fresh_app singleton leak
- test_phase3.py: Added battlefield(), active_player(), prompt_builder compat
- test_integration.py: Fixed ThreatAssessor import (class→function), added
threat_fn dict wrapper, sim_state delegate
- test_phase6.py/test_phase8.py: Replaced deprecated get_event_loop() with
asyncio.run()
- test_benchmark.py: Same async fix + ThreatAssessor functional API
- sim/test_engine.py: Removed nonexistent seed= param, use run() method
- sim/test_models.py: basic_creature fixture now in conftest
- deck_builder/test_models.py: Updated ValidationError regex match
- state_logger.py: Added monotonic counter for unique snapshot filenames
- ai_opponent.py: Moved _CANNED dict to module-level constant (dataclass fix)
- web/app.py: Mount lobby router (fixes 6 LobbyAPI test failures)
- test_phase5.py: SessionStore + api._store reset fixture
Result: 76 failures + 2 errors → 0 failures, 0 errors (331 passed, 30 skipped)
Co-authored-by: Claude <claude@anthropic.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-22 17:32:30 -04:00
KoalaTrapLord
cffd8d8109
fix: add creature damage accumulation to combat engine
...
Previously _resolve_combat() used a binary power-vs-toughness kill check:
creatures only died if a single source had power >= their toughness in one
swing. This meant a 2/2 wouldn't die to two 1/1 tokens blocking it, and
repeated smaller hits across combats never accumulated.
Changes:
- models.py: add damage_marked field to Card (default 0)
- engine.py: accumulate damage via damage_marked += power instead of
binary a_pow >= toughness checks in _resolve_combat()
- engine.py: clear damage_marked = 0 in untap phase (MTG rule 514.2)
This enables multi-blocker lethality, incremental chip damage within a
combat step, and proper creature death-by-accumulated-damage interactions.
2026-03-22 04:52:28 +00:00
KoalaTrapLord
f86a4af86f
feat(ml): add ML decision logging to base GameEngine
...
- Add ml_log param, ml_decisions list, flush_ml_decisions() to GameEngine
- Capture ML snapshots at each player turn in run_n()
- Stamp game_outcome (win/loss per seat) on all decisions
- Add _capture_ml_snapshot() matching DeepSeekGameEngine format
- Add game_id and archetype params to run_n() for ML tracking
- Import logging, uuid; add logger
2026-03-21 13:54:33 -04:00
KoalaTrapLord
9c0fa64a69
feat: Phase 7 — add validation field to decision log schema
...
Add "validation" key to _log_decision() entry dict in deepseek_brain.py.
Captures result.get("validation") (None if validator disabled)
for R1-14B output preservation and future analysis.
2026-03-21 13:31:08 -04:00
KoalaTrapLord
b1996a8deb
fix: indent __init__ into DeepSeekGameEngine class body
2026-03-20 22:01:25 -04:00
KoalaTrapLord
c44d0b32bb
Update DeepSeek port from 1234 to 11434 in deepseek_engine.py
2026-03-20 21:55:10 -04:00
KoalaTrapLord
9020d29745
Update DeepSeek port from 1234 to 11434 in deepseek_brain.py
2026-03-20 21:53:27 -04:00
KoalaTrapLord
7284b8617d
feat(sim): wire DeepSeek-R1-14B validator into deepseek_engine
2026-03-20 21:16:16 -04:00
KoalaTrapLord
c53e82bfeb
feat(sim): add DeepSeek-R1-14B validator brain module
2026-03-20 17:20:30 -04:00
KoalaTrapLord
f8b13703b8
fix: CAST_PATTERN now matches both 'cast' and 'casts' for Forge compatibility
2026-03-20 15:04:37 -04:00
KoalaTrapLord
ff6040b53e
Remove stray closing brace that would break compilation
2026-03-20 13:31:50 -04:00
KoalaTrapLord
db7bc62d7e
Fix commander damage tracking, add PLAYER_DAMAGE_SOURCE_PATTERN and diagnostic logging
2026-03-20 13:28:54 -04:00
KoalaTrapLord
fbffe81846
feat: auto-detect commander card names from .dck files for commander cast tracking
2026-03-20 12:48:48 -04:00
KoalaTrapLord
9369cf5450
docs: fix adapter.py docstring to reference lab_api.py instead of deleted lab_api_new.py
2026-03-20 12:19:07 -04:00
KoalaTrapLord
a2fbc30b2b
fix: resolve forge_dir to forge-gui sibling when res/ not found in forge-gui-desktop
2026-03-20 11:22:44 -04:00
KoalaTrapLord
9f1277f233
fix: update DeepSeek endpoint IP in deepseek_engine.py
2026-03-20 11:08:32 -04:00
KoalaTrapLord
66ce887fe3
fix: update DeepSeek endpoint IP in deepseek_brain.py docstring
2026-03-20 11:07:38 -04:00
KoalaTrapLord
93a421b90a
fix: make colons optional in all regex patterns to match Forge output format (no colons after Game Outcome, Life, Add To Stack, Land, Zone Change, etc.); fix VERBOSE_TURN_PATTERN for 'Turn Turn N AiX' format; fix LIFE_CHANGE_PATTERN to use space instead of > separator
2026-03-20 09:26:02 -04:00
KoalaTrapLord
ee95f26bc4
fix: restore double-backslash escaping in Ai regex patterns (fixes compilation errors)
2026-03-20 09:03:55 -04:00
KoalaTrapLord
2ee574f678
diag: add [COMBAT-LINE] logging to identify Forge verbose output format for combat stats parsing
2026-03-20 08:15:03 -04:00
KoalaTrapLord
473a2bdcc7
fix: make Ai regex patterns support both Ai(N) and AiN formats for Forge output compatibility
2026-03-19 23:29:53 -04:00
KoalaTrapLord
a6e50ee0f0
feat: aggregate combat stats in StatsAggregator
2026-03-19 22:45:05 -04:00
KoalaTrapLord
e2a6a75fd9
feat: add combat stat fields to DeckSummary schema
2026-03-19 22:39:51 -04:00
KoalaTrapLord
030bdf2b81
fix: CAST_PATTERN and LAND_PLAY_PATTERN regex to match Forge verbose log prefixes
...
- CAST_PATTERN: Add optional (?:Add To Stack:\s*)? prefix to match Forge's verbose log format
- LAND_PLAY_PATTERN: Add optional (?:Land:\s*)? prefix to match Forge's verbose log format
- Add [PARSE] diagnostic logging after combat stats parsing to confirm spells/lands/cmdr stats per seat
Root cause: Forge verbose output prefixes cast lines with "Add To Stack: " and land lines with "Land: "
but the regexes expected Ai(N) at the start of the line, causing 0 matches for all combat stats.
2026-03-19 22:06:17 -04:00
KoalaTrapLord
103a74a0e1
fix: update DeepSeek brain default api_base to 192.168.0.240:1234
2026-03-19 17:11:56 -04:00
KoalaTrapLord
1f93b5510d
fix: add missing load_weights() to rules.py
2026-03-19 15:49:00 -04:00
KoalaTrapLord
6135feb644
feat: add run_substitution stub + clean up adapter
2026-03-19 13:49:13 -04:00
KoalaTrapLord
a8ef10d5b7
feat: add DeckBuilderAdapter to bridge Ollama pipeline to legacy API
2026-03-19 13:24:29 -04:00
KoalaTrapLord
70dfa3d3e0
fix: robust JSON extraction for LLM responses (_extract_json)
2026-03-19 12:29:49 -04:00
KoalaTrapLord
f970b6d571
fix: api __init__ imports modules not classes
2026-03-19 12:08:26 -04:00
KoalaTrapLord
3e64aa67eb
feat(phase-6): implement deck assembler (Ollama JSON parser)
2026-03-19 11:32:14 -04:00
KoalaTrapLord
1b4e9f5a66
feat(phase-3): implement community scraper (Moxfield + Archidekt)
2026-03-19 11:30:53 -04:00
KoalaTrapLord
c962d1f16a
feat(phase-9): implement FastAPI + CLI entrypoint
2026-03-19 11:29:29 -04:00
KoalaTrapLord
dcdf15c56a
feat(phase-8): add deck_builder package init with public API
2026-03-19 11:28:08 -04:00
KoalaTrapLord
b0214009f4
feat(phase-8): add api __init__ exports
2026-03-19 11:27:07 -04:00
KoalaTrapLord
5fe0ac2bd6
feat(phase-8): add core __init__ exports
2026-03-19 11:26:04 -04:00
KoalaTrapLord
fc09249ad3
feat(phase-7): add pipeline __init__ exports
2026-03-19 11:24:47 -04:00
KoalaTrapLord
d2c7783ce1
feat(phase-7): implement 7-step deck build pipeline
2026-03-19 11:23:38 -04:00
KoalaTrapLord
0ccf35f241
feat(phase-5): implement collection filter with CSV loader
2026-03-19 11:22:09 -04:00
KoalaTrapLord
9a5105b0d6
feat(phase-5): implement rules engine with ban list and validation
2026-03-19 11:19:42 -04:00
KoalaTrapLord
6a688d1cd0
feat(phase-4): implement Ollama gpt-oss:20b client with 6 core functions
2026-03-19 11:18:13 -04:00
KoalaTrapLord
d9639a8414
feat(phase-3): implement EDHrec JSON client
2026-03-19 11:16:28 -04:00
KoalaTrapLord
45c72aadc9
feat(phase-2): implement Scryfall API client
2026-03-19 11:14:58 -04:00
KoalaTrapLord
81ab7ac34a
feat(phase-1): implement Pydantic models for deck builder
2026-03-19 11:13:06 -04:00
KoalaTrapLord
232750a951
Create main.py
2026-03-19 10:46:45 -04:00
KoalaTrapLord
46c1c8cb01
Create build_deck.py
2026-03-19 10:46:14 -04:00
KoalaTrapLord
64a4cd3c7c
Create __init__.py
2026-03-19 10:45:36 -04:00
KoalaTrapLord
3f6b66fce3
Create deck_assembler.py
2026-03-19 10:44:53 -04:00