Implements three high-impact improvements from NCS-43:
1. Incremental L1 accumulator — L1 pre-activations are maintained
per-ply on a stack and updated by column-add/subtract when pieces
move, reducing L1 cost from O(768×1536) to O(pieces×1536) for root
init and O(changed_pieces×1536) per node. Column-major weight
transposition (l1WeightsT) makes each update sequential in memory.
2. Eval cache — a 256 K direct-mapped cache keyed by Zobrist hash
skips the L2-L5 forward pass for positions seen during quiescence,
where the same position often recurs across capture sequences.
3. Dynamic time allocation — NNUEBot now grants 1 500 ms in complex
positions (> 30 legal moves) and 500 ms in nearly-terminal ones
(< 5 moves), instead of a fixed 1 000 ms budget.
Accumulator hooks (initAccumulator, pushAccumulator, copyAccumulator,
evaluateAccumulator) are added to the Evaluation trait with no-op
defaults, so ClassicalBot and HybridBot are unaffected.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>