Module Calibration Results — January 2025
NOTE (OpenSkill migration): This calibration used legacy Elo-style TEI integers and ΔTEI calculations. Under OpenSkill (μ ± σ), the methodology remains valid but implied rating gaps will be expressed differently. Numbers below preserved for historical comparison.
Test Date: January 11, 2025
Games Per Configuration: 100 (quick run) / 500 (full run pending)
Methodology: Heads-up skill matchups (Ensign/Lieutenant/Commander)
Summary
All module configurations preserve skill ordering ✅ — higher-skilled AI consistently wins 79-85% of games across all configurations. Module mechanics add strategic depth without introducing excessive luck dependence.
Key Findings
- Module Alpha (Continuum) ✅ — Fixed tile recycling bug, now stable
- Module Beta (Salamander Penalty) ✅ — Balanced and production-ready
- Module Gamma (Sensor Grid) ✅ — Preserves skill ordering
- Module Delta (Hot Potato) ✅ — Simplified version preserves skill ordering
- All combinations ✅ — Skill ordering maintained across all tested configs
Configuration Results (100 games each)
| Configuration | Higher-Skill Win % | Implied ΔTEI | Seat-A Win % | Status |
|---|---|---|---|---|
| Baseline (no modules) | 81.7% | 275 | 52.3% | ✅ Reference |
| Alpha (Continuum) | 81.7% | 291 | 49.3% | ✅ Pass |
| Beta (Salamander) | 81.0% | 278 | 50.7% | ✅ Pass |
| Alpha+Beta (Official core) | 81.3% | 299 | 58.7% | ✅ Pass |
| Gamma (Sensor Grid) | 83.3% | 291 | 51.3% | ✅ Pass |
| Delta (Hot Potato) | 81.3% | 299 | 49.3% | ✅ Pass |
| Gamma+Delta | 81.3% | 278 | 53.0% | ✅ Pass |
| Alpha+Beta+Gamma | 80.7% | 282 | 52.7% | ✅ Pass |
| Alpha+Beta+Delta | 79.0% | 249 | 47.0% | ✅ Pass |
| Official Warp Core (all 4) | 84.7% | 344 | 52.0% | ✅ Pass |
Thresholds:
- Higher-skill win rate: ≥52% required (all configs pass)
- Seat-A win rate: 35-65% acceptable (all configs pass)
Detailed Matchup Results
Baseline (No Modules)
ensign vs lieutenant: lieutenant wins 88% (ΔTEI 346)
ensign vs commander: commander wins 87% (ΔTEI 330)
lieutenant vs commander: commander wins 70% (ΔTEI 147)
Module Alpha (Continuum)
ensign vs lieutenant: lieutenant wins 80% (ΔTEI 241)
ensign vs commander: commander wins 94% (ΔTEI 478)
lieutenant vs commander: commander wins 71% (ΔTEI 156)
Module Beta (Salamander Penalty)
ensign vs lieutenant: lieutenant wins 84% (ΔTEI 288)
ensign vs commander: commander wins 92% (ΔTEI 424)
lieutenant vs commander: commander wins 67% (ΔTEI 123)
Module Gamma (Sensor Grid)
ensign vs lieutenant: lieutenant wins 81% (ΔTEI 252)
ensign vs commander: commander wins 91% (ΔTEI 402)
lieutenant vs commander: commander wins 78% (ΔTEI 220)
Module Delta (Hot Potato - Simplified)
ensign vs lieutenant: lieutenant wins 82% (ΔTEI 263)
ensign vs commander: commander wins 95% (ΔTEI 512)
lieutenant vs commander: commander wins 67% (ΔTEI 123)
Official Warp Core (Alpha+Beta+Gamma+Delta)
ensign vs lieutenant: lieutenant wins 92% (ΔTEI 424)
ensign vs commander: commander wins 94% (ΔTEI 478)
lieutenant vs commander: commander wins 68% (ΔTEI 131)
Critical Bug Fixes
1. Module Gamma (Sensor Grid) — Tile Recycling Bug
Problem: Spacedock tiles were going missing in round 2+ because collectRoundCoordinatesForRecycle wasn’t collecting tiles from round.sensorGrid.
Fix: Added sensor grid tile collection in libs/engine/src/lib/setup/create-game.ts:
// Collect sensor grid tiles (Module Gamma)
if (round.sensorGrid) {
recycled.push(...round.sensorGrid);
}
Result: Module Gamma now runs cleanly with 66.5% Lt vs Cdr win rate ✅
2. Module Alpha (Continuum) — Tile Recycling Bug
Problem: During this calibration run, discovered spacedock tiles were going missing when continuum wager was pending. The continuumWagerPending.options array holds two tiles that weren’t being collected.
Fix: Added continuum wager tile collection in libs/engine/src/lib/setup/create-game.ts:
// Collect continuum wager tiles (Module Alpha)
if (round.continuumWagerPending) {
recycled.push(...round.continuumWagerPending.options);
}
Result: Module Alpha now runs cleanly with 81.7% higher-skill win rate ✅
Module Delta Journey
Original Design (Failed)
- Mechanics: Warp Drive Spool + Longest Trail Bonus + Hazard Marker + Overdrive
- Problem: Skill ordering inverted — Commander beat Lieutenant 77% (expected ~30%)
- Root cause: Unlimited spool amplified skill advantages
Failed Rescue Attempts
- Variable trail bonus: Lt wins 19-23% ❌
- Fixed -1 trail bonus: Lt wins 23% ❌
- 3-tile spool limit: Lt wins 22.5% ❌
- Hazard penalty adjustments: No improvement ❌
Simplified Solution (Success)
- Mechanics: Pure “Hot Potato”
- Hazard marker transfers on Neutral Zone contact
- +5 penalty per PASS while holding marker
- Round starter gets marker initially
- ❌ Removed: Warp Drive Spool, Longest Trail, Overdrive
- Result: Lt beats Cdr ~67% — skill ordering restored ✅
- Human playability: Excellent — one simple rule, dramatic tension
Position Balance Analysis
Most configurations stay close to 50% seat-A win rate, indicating minimal positional advantage.
Notable outliers:
- Alpha+Beta: 58.7% seat-A (slight advantage but within tolerance)
- Alpha+Beta+Delta: 47.0% seat-A (slight disadvantage but within tolerance)
These variations are within acceptable range (35-65%) and likely due to small sample size (100 games).
Interpretation
What These Numbers Mean
Higher-Skill Win Rate (79-85%):
- Consistently high across all configs
- Skill matters more than luck
- Modules add strategy without randomness
Implied ΔTEI (249-344):
- Similar to baseline (275)
- Modules preserve competitive balance
- No config artificially inflates/deflates skill gaps
Seat-A Win Rate (47-59%):
- All within acceptable tolerance
- Turn order advantage minimal
- Fair for human play
Production Readiness
✅ Ready to Ship
- Module Alpha (Continuum) — Bug fixed, stable
- Module Beta (Salamander Penalty) — Already shipped, validated
- Module Gamma (Sensor Grid) — Bug fixed, validated
- Module Delta (Hot Potato) — Simplified version validated
- Official Warp Core (A+B+G+D) — All four modules together
⏸️ Deferred
- Module Epsilon (Drafting) — Requires
dealRoundFromDraftintegration - Module Zeta (Squadrons) — Not yet implemented
- Module Eta — Redesign needed (original concept too risky)
Remaining Test Cleanup
The following old spool tests still fail and need deletion/updating:
warp-drive-spool.spec.ts(8 failed tests)warp-drive-spool-integration.spec.ts(1 failed test)warp-drive-spool-overdrive.spec.ts(1 failed test)warp-drive-spool-scoring.spec.ts(3 failed tests)
These test the removed spool mechanics and should be deleted or updated to test the simplified Hot Potato mechanics instead.
Next Steps
- ✅ Run full 500-game calibration — In progress
- Update RULES.md — Document all validated modules
- Clean up dead code — Remove old spool mechanics, tests
- Ship Module Delta — Deploy Hot Potato to production
- Design Module Eta — Fresh start with lessons learned
- Implement Module Epsilon — Draft integration
- Implement Module Zeta — Squadron play
Methodology Notes
- Deterministic tests: Fixed seed (12000 + config offset) for reproducibility
- Head-to-head matchups: 2-player games isolate skill effects
- Completion rate: All configs achieve >80% decisive outcomes
- Sample size: 100 games quick validation, 500 games for final results
- Expected skill ordering: Based on 200-Elo gaps (Ensign=1400, Lt=1600, Cdr=1800)
Conclusion
All tested module configurations are production-ready. They add strategic depth without compromising the core skill-vs-luck balance. The simplified Hot Potato mechanic successfully rescued Module Delta and provides a template for future module design: keep it simple, keep it deterministic, keep it human-friendly.
The “Official Warp Core” (Alpha+Beta+Gamma+Delta) shows the highest skill differentiation (84.7%) while maintaining fair position balance (52.0% seat-A) — an excellent configuration for competitive play.