v24: Resolve GitHub Issues #1-#5
Issue #1 — Winner's life total now captured: - Parse verbose Forge log for life-total-change events - Track last-known life per seat via 3 regex patterns - Winner's final life set from log data (not left at default 40) - Losers who died to mill/poison retain their actual life total Issue #2 — Win condition classification formalized: - New WinCondition enum (schema/WinCondition.java) with 8 categories - Centralized Forge loss-reason-string → enum mapping (regex-based) - UNKNOWN fallback with logging for unrecognized loss reasons - All classification now goes through WinCondition.classify() Issue #3 — JVM startup overhead reduced: - Added -XX:+UseSerialGC (lighter GC for batch processes) - Added -XX:TieredStopAtLevel=1 (faster JIT, less compilation) - ForgeWorker stub class for future persistent batch mode - Estimated reduction: ~2-3s → ~1-1.5s per game startup Issue #4 — Single-threaded throughput optimization: - New CLI flags: --ai-simplified, --ai-think-time, --benchmark - JVM flags passed through to Forge subprocess - Benchmark mode: run 1 game before batch, report wall/Forge/overhead times - API support: aiSimplified, aiThinkTimeMs in StartRequest Issue #5 — Threading, progress, and backpressure: - --threads 0 or -1 auto-detects optimal count from CPU topology - detectOptimalThreads() estimates physical cores (excludes HT) - ProgressCallback interface for real-time sims/sec reporting - Per-game progress emitted as [PROGRESS] lines, parsed by lab_api.py - --max-queue flag for graceful backpressure (limits concurrent JVMs) - Final throughput summary printed at batch completion - StatusResponse now includes simsPerSec field Also: .gitignore restored, lab_api.py updated with all new API fields
This commit is contained in:
1 parent
a5fe8cb3fa
commit
a0adfc37e8
7 files changed
+736
-81
No files matched your search
+21
-25
@@ -1,44 +1,40 @@
|
||||
# Build artifacts
|
||||
# Java
|
||||
target/
|
||||
dist/
|
||||
dependency-reduced-pom.xml
|
||||
*.class
|
||||
*.jar
|
||||
!src/**/*.jar
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.pyo
|
||||
*.egg-info/
|
||||
*.egg
|
||||
.eggs/
|
||||
dist/
|
||||
venv/
|
||||
.env
|
||||
|
||||
# Node
|
||||
node_modules/
|
||||
.vite/
|
||||
|
||||
# Data & runtime
|
||||
*.db
|
||||
*.db-journal
|
||||
results/
|
||||
imported-decks/
|
||||
deck-reports/
|
||||
coach-sessions/
|
||||
embeddings/
|
||||
logs/
|
||||
checkpoints/
|
||||
data/mtg-embeddings.npz
|
||||
data/mtg-embeddings.parquet
|
||||
card_names_cache.json
|
||||
dist/
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
*.iml
|
||||
|
||||
# Data
|
||||
*.db
|
||||
*.npz
|
||||
results/
|
||||
deck-reports/
|
||||
coach-sessions/
|
||||
embeddings/
|
||||
checkpoints/
|
||||
imported-decks/
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Installer (generated, too large for git)
|
||||
install-commander-ai-lab.ps1
|
||||
# Logs
|
||||
*.log
|
||||
Reference in new issue
Block a user