PGN output does not show evaluation for all moves
Using LC0 has no issues. Using Stockfish 17 with autoevaluate, although it creates evaluation for all moves, the PGN output does not show evaluation for all moves. Here is the output (there is evaluation missing like for move 5 for black):
Using the latest version of Nibbler
[Event "Live Chess"]
[Site "Chess.com"]
[Date "2024.11.01"]
[Round "?"]
[White "redacted"]
[Black "redacted"]
[Result "0-1"]
1. e4 {EV: 55.5%, CP: +0.38} c6 2. Nc3 {EV: 54.4%, CP: +0.31} d5 {EV: 46.0%, CP:
+0.29} 3. Nf3 {EV: 53.0%, CP: +0.22} Bg4 {EV: 46.7%, CP: +0.25} 4. Be2 {EV:
53.5%, CP: +0.26} e6 {EV: 46.3%, CP: +0.27} 5. d4 {EV: 53.1%, CP: +0.23} Bxf3 6.
Bxf3 {EV: 57.9%, CP: +0.52} c5 7. O-O {EV: 99.1%, CP: +2.09} cxd4 {EV: 3.9%, CP:
+1.67} 8. Qxd4 {EV: 97.0%, CP: +1.74} Bd6 9. exd5 {EV: 99.9%, CP: +3.68} Nc6
{EV: 0.1%, CP: +4.06} 10. dxc6 {EV: 99.9%, CP: +4.77} Bxh2+ {EV: 4.7%, CP:
+1.53} 11. Kxh2 {EV: 96.0%, CP: +1.57} Qxd4 {EV: 6.3%, CP: +1.42} 12. Nb5 Qe5+
{EV: 99.9%, CP: -2.49} 13. Kg1 {EV: 0.1%, CP: -2.65} Qxb5 {EV: 99.9%, CP: -2.68}
14. cxb7 {EV: 0.1%, CP: -2.73} Rb8 {EV: 99.9%, CP: -2.74} 15. a4 {EV: 0.1%, CP:
-2.88} Qc5 16. c3 Qc7 {EV: 99.9%, CP: -3.41} 17. g3 {EV: 0.1%, CP: -3.68} Nf6
18. Bf4 {EV: 0.1%, CP: -3.33} e5 {EV: 99.9%, CP: -3.33} 19. Bxe5 {EV: 0.1%, CP:
-3.21} Qxe5 {EV: 99.9%, CP: -3.42} 20. Rae1 {EV: 0.1%, CP: -3.44} Qxe1 {EV:
99.9%, CP: -3.46} 21. Rxe1+ {EV: 0.1%, CP: -3.51} Kd7 {EV: 99.9%, CP: -3.26} 22.
g4 Rhe8 {EV: 99.9%, CP: -3.96} 23. Rd1+ {EV: 0.1%, CP: -3.95} Kc7 {EV: 99.9%,
CP: -3.96} 24. b4 {EV: 0.1%, CP: -4.01} a6 25. b5 {EV: 0.1%, CP: -3.30} axb5
{EV: 99.9%, CP: -3.89} 26. axb5 {EV: 0.1%, CP: -3.87} Nxg4 27. Bxg4 {EV: 2.6%,
CP: -1.49} Kxb7 {EV: 91.6%, CP: -1.27} 28. Rd7+ {EV: 8.5%, CP: -1.26} Kb6 {EV:
99.8%, CP: -1.89} 29. Rxf7 {EV: 0.2%, CP: -1.94} Rb7 {EV: 99.9%, CP: -2.64} 30.
Rf5 {EV: 0.1%, CP: -2.68} Re1+ {EV: 99.9%, CP: -2.77} 31. Kg2 {EV: 0.1%, CP:
-3.14} Rbe7 {EV: 99.9%, CP: -2.12} 32. c4 {EV: 0.1%, CP: -2.40} R1e5 33. Rf8
{EV: 1.2%, CP: -1.61} Rg5 {EV: 61.8%, CP: -0.81} 34. Kh3 {EV: 23.9%, CP: -1.01}
Re1 {EV: 78.8%, CP: -1.05} 35. f4 Rc5 {EV: 99.9%, CP: -2.25} 36. Rb8+ {EV: 0.1%,
CP: -2.40} Ka7 {EV: 99.9%, CP: -2.52} 37. Rh8 Rxc4 {EV: 99.9%, CP: -3.31} 38.
Rxh7 Rh1+ {EV: 99.9%, CP: -199.84} 0-1
Interesting.
Note to self: If we say foo is the node in question, it seems foo.parent.table.moveinfo[foo.move].__touched is false in these cases, leading to the early return here: https://github.com/rooklift/nibbler/blob/master/files/src/renderer/51_node.js#L310-L312
Ah, thinking about it, I think this is what happens when Stockfish never analysed the move that was actually played, at the position where it was an option.
Ideally it should be able to tell you about the value of the move by looking at the position that was actually reached. At this time I can't quite remember why it works the way it does.
Thank you! It seems to show the score for all the moves in the graph and in the infobox