You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- ⚠️ KLUSS order-2 neighborhood is still simplified
350
-
- ⚠️ Resolve/Maxmargin gadget details are incomplete
351
-
- 🔲 Instrumentation (Appendix B.4 metrics)
352
-
353
-
354
373
355
374
### Current Limitations
356
375
357
-
358
-
359
-
**What Works**:
360
-
361
-
- The engine runs FoW search and returns moves
362
-
- UCI options are properly parsed and applied
363
-
- Multi-threaded CFR solver and expanders run correctly
364
-
- The fog_fen command parses and stores partial observations
365
-
366
-
**What Doesn't Work Yet**:
367
-
368
-
1.**Belief diversity limits**: Enumeration permutes hidden opponent pieces from the current position and caps at 1024 states; it does not yet model captures beyond the observed piece set or piece-in-hand drops for crazyhouse variants.
369
-
370
-
2.**KLUSS neighborhood**: The KLUSS computation is still a placeholder and does not freeze/unfreeze infosets per the paper's order-2 definition.
371
-
372
-
3.**Purification and gadgets**: Action purification and Resolve/Maxmargin gadget details remain simplified, so play quality may vary in tricky information sets.
- Castling/visibility corner cases (e.g., exotic variants) need additional coverage.
378
+
- Performance tuning is ongoing; long searches may still be slow on very dense belief sets.
373
379
374
380
### Practical Usage
375
381
376
-
**Current best use case**: Using `position fog_fen` to explore imperfect-information situations where hidden opponent pieces could be on multiple unseen squares. The engine will enumerate those possibilities and search them, but higher-level gadgets and purification are still simplified.
377
-
378
-
**Not yet suitable for**: Positions that rely on advanced KLUSS freezing/unfreezing logic or deep purification requirements (e.g., adversarial bluffing scenarios and crazyhouse drop speculation).
379
-
380
-
For development status and technical details, see `OBSCURO_FOW_IMPLEMENTATION.md`.
382
+
- Use `position fog_fen` for partial observations; the engine will prune beliefs incrementally as play continues.
383
+
- Run `tests/fow_incremental.sh` after building `src/stockfish` to smoke-test the FoW pipeline.
384
+
- For deeper implementation details, see `OBSCURO_FOW_IMPLEMENTATION.md`.
Depth-1 child evaluation is wired into Stockfish's evaluator and normalized to [-1, +1]; remaining work is focused on FoW-specific averaging over the belief set and caching repeated states.
195
-
196
-
197
-
198
-
**Implementation Tasks**:
199
-
200
-
1. Complete `Evaluator::evaluate()` to call Stockfish search
201
-
202
-
2. Implement `evaluate_belief_state()` that averages over positions
203
-
204
-
3. Add caching to avoid re-evaluating same positions
205
-
206
-
4. Handle terminal position detection
194
+
Depth-1 child evaluation now uses a shallow Stockfish search (depth = 1) with terminal detection and normalization to [-1, +1]. `Evaluator::evaluate()` caches results by Zobrist key to avoid re-running searches on duplicate states, and `evaluate_belief_state()` walks the belief set to return the averaged score. Terminal states (mate/draw/stalemate and variant-specific endings) are intercepted before search to keep heuristics stable.
- Planner statistics now record exploitability approximation using the mean positive regret across infosets, action entropy at the root, peak node counts, and a timeline of node sizes.
205
+
- Time is broken down across construction, search, and selection so the UCI `info string` can report where FoW time was spent.
0 commit comments