KoalaTrapLord
0f6faa5fe4
feat(ml): integrate DecisionExporter into self-play rollouts ( #65 )
2026-03-22 00:06:55 +00:00
KoalaTrapLord
1164285a5b
docs: add Phase 1 self-play integration checklist ( #65 )
2026-03-21 19:51:27 -04:00
KoalaTrapLord
d9ee09b848
docs: update .env.example to match dual-model config (gpt-oss:20b + deepseek-r1:14b)
2026-03-21 19:47:17 -04:00
KoalaTrapLord
d5c6746503
docs: add BRAIN_* and VALIDATOR_* vars to .env.example ( #71 )
2026-03-21 19:41:47 -04:00
KoalaTrapLord
1b95659f14
fix: add LAN origins (192.168.0.240) to default CORS allowlist ( #71 )
2026-03-21 19:41:05 -04:00
KoalaTrapLord
871934d101
fix: raise VALIDATOR_TIMEOUT default from 60s to 120s ( #71 )
2026-03-21 19:40:19 -04:00
KoalaTrapLord
11978736a1
fix: raise BRAIN_TIMEOUT default from 30s to 120s ( #71 )
2026-03-21 19:39:29 -04:00
KoalaTrapLord
8ed3fbc627
feat(ml): add quality gate & validation module ( #67 )
...
Phase 3 of closed-loop distillation pipeline.
- QualityGateConfig with configurable thresholds
- create_forge_holdout() for Forge-only eval split (12% by game_id)
- check_accuracy_gate() rejects PPO batch if Forge eval accuracy drops
- check_win_rate_gate() blocks export below configurable win rate
- compute_quality_metrics() logs action entropy, reward distribution
- QualityGate orchestrator class with evaluate_ppo_batch()
2026-03-21 19:34:37 -04:00
KoalaTrapLord
4d50449145
feat(ml): add source awareness to dataset builder ( #66 )
...
Phase 2 of closed-loop distillation pipeline.
- Scan both ml-decisions-sim-*.jsonl (Forge) and ml-decisions-ppo-*.jsonl (PPO)
- Add source_weights config for configurable sampling ratios
- Add min_reward_threshold filter for PPO data quality
- Tag each sample with source for downstream analysis
- New CLI args: --forge-weight, --ppo-weight, --min-reward
- NPZ output now includes 'sources' array
2026-03-21 19:28:22 -04:00
KoalaTrapLord
f986d236ab
Reduce coach prompt limits and raise LLM timeout for R1 compatibility
2026-03-21 19:08:24 -04:00
KoalaTrapLord
3957285a2e
feat(ml): add PPO DecisionExporter for closed-loop distillation ( #65 )
...
Phase 1 of closed-loop distillation pipeline.
Adds DecisionExporter class that captures PPO self-play decisions
as JSONL files compatible with the Forge DecisionSnapshot schema.
Includes PPO-specific metadata fields (source, model_version,
reward, episode_return) and configurable win-only filtering.
2026-03-21 18:06:45 -04:00
KoalaTrapLord
3cca49c5a9
docs: add closed-loop iterative distillation implementation roadmap
2026-03-21 17:55:18 -04:00
KoalaTrapLord
f290523ce1
fix(ml): replace undefined 'log' with 'logger' in labeler.py
2026-03-21 15:47:47 -04:00
KoalaTrapLord
448cec128c
feat(ui): add 12 and 16 thread options to batch runner dropdown
2026-03-21 15:22:20 -04:00
KoalaTrapLord
6612f3d213
fix: use correct key best_val_acc in training completion message
2026-03-21 15:21:35 -04:00
KoalaTrapLord
06f007e605
fix: invert guard in _load_deck_cards_by_name — was if not deck_row (crash on None[0])
...
The guard condition was inverted: `if not deck_row:` entered the query
block when no deck was found, causing `deck_row[0]` to crash with
'NoneType' object is not subscriptable. Flipped to `if deck_row:`
so the query runs only when the deck exists.
2026-03-21 15:11:08 -04:00
KoalaTrapLord
1397f93b91
feat(ml): wire ML decision flush in _finish_sim for all sim threads
2026-03-21 14:30:47 -04: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
0e99f814fc
chore: remove unused React scaffold frontend/
2026-03-21 13:45:08 -04:00
KoalaTrapLord
8c34cb0966
feat: Phase 8 — surface player_explanation in simulation results JSON
...
Extract player_explanation from validation dict in each turn log
entry within _run_game_loop(). The React frontend can now render
validator explanations when player_explanation is non-null.
react-scaffold-backup
2026-03-21 13:37:09 -04:00
KoalaTrapLord
c67ce422d8
refactor: rename LM_STUDIO/LMStudioClient to LLM/LLMClient in routes/coach.py
2026-03-21 13:34:21 -04:00
KoalaTrapLord
cb4b48e362
refactor: rename LMStudioClient to LLMClient in coach_service.py
2026-03-21 13:33:00 -04:00
KoalaTrapLord
4a8db4db6b
refactor: rename LM_STUDIO/LMStudioClient to LLM/LLMClient in llm_client.py
2026-03-21 13:31:32 -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
c338f16965
refactor: rename LM_STUDIO_* to LLM_* in coach/config.py
2026-03-21 13:29:51 -04:00
KoalaTrapLord
a7ab0e43a5
feat: Phase 6 — make primary brain env-configurable (BRAIN_* vars)
...
Replace hardcoded DEEPSEEK_API_BASE/DEEPSEEK_MODEL env vars in
_get_deepseek_brain() with new BRAIN_* environment variables:
- BRAIN_API_BASE (default: http://localhost:11434 )
- BRAIN_MODEL (default: gpt-oss:20b)
- BRAIN_TEMPERATURE (default: 0.3)
- BRAIN_MAX_TOKENS (default: 1024)
- BRAIN_TIMEOUT (default: 30.0)
All params now passed directly to DeepSeekConfig constructor.
2026-03-21 13:21:58 -04:00
KoalaTrapLord
8b527d7c30
fix: remove duplicate ml_log=True kwarg in deepseek.py
2026-03-21 12:48:56 -04:00
KoalaTrapLord
36760dd922
fix(ml): rename log -> logger in dataset_builder.py to fix NameError
2026-03-21 12:42:02 -04:00
KoalaTrapLord
963a5db638
fix(ml): enable ml_log=True in deepseek route engine calls
2026-03-21 12:41:01 -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
a78df75014
Update DeepSeek port from 1234 to 11434 in SimulatorPage.tsx
2026-03-20 21:54:22 -04:00
KoalaTrapLord
9020d29745
Update DeepSeek port from 1234 to 11434 in deepseek_brain.py
2026-03-20 21:53:27 -04:00
KoalaTrapLord
b0a34ae9e2
Update DeepSeek port from 1234 to 11434 in coach.py
2026-03-20 21:52:39 -04:00
KoalaTrapLord
4c4f5ce0ff
Update DeepSeek API port from 1234 to 11434 in config.py
2026-03-20 21:51:42 -04:00
KoalaTrapLord
1e7f4b4e31
Update DeepSeek API port from 1234 to 11434 (Ollama)
2026-03-20 21:49:49 -04:00
KoalaTrapLord
488575f3df
fix(routes): correct indentation of validator line in _run_sim_thread_deepseek
2026-03-20 21:42:11 -04:00
KoalaTrapLord
fd7f0258f3
feat(routes): add validator singleton and /api/validator endpoints
2026-03-20 21:27:15 -04:00
KoalaTrapLord
7284b8617d
feat(sim): wire DeepSeek-R1-14B validator into deepseek_engine
2026-03-20 21:16:16 -04:00
KoalaTrapLord
678cc13fe0
feat: enable ML logging by default in lab.py
2026-03-20 21:05:37 -04:00
KoalaTrapLord
19f83a546b
feat: enable ML logging by default in shared.py
2026-03-20 21:01:40 -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
eb59a2cd2e
fix: increase default clock from 120s to 300s for Commander games to prevent premature timeouts
2026-03-20 14:58:24 -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
e38401a740
chore: remove obsolete lab_api_backup.py (superseded by lab_api.py + routes/)
2026-03-20 12:17:44 -04:00
KoalaTrapLord
111764615d
chore: remove obsolete lab_api_new.py (superseded by lab_api.py + routes/)
2026-03-20 12:16:50 -04:00