feat(kvflash): snapshot ledger + QK-pool restore-seed + consume-restored-KV
Wave-1 KVFlash deep-context — the warm-prefill payoff.
New commits: snapshot ledger + QK-pool restore-seed (f457afbc, lib+tests); consume-restored-KV on pooled restore instead of re-prefill (cfbf8ede, env KVFLASH_RESTORE_CONSUME, default-on); drafter-history reconstruction from ledger (14b295e1).
Stacks on: #445 (cache-persistence), then #430 core, #429 pager, #428 reservation. Lower commits in this diff are those predecessors; review/merge in order — this rebases to drop them as they land.
Reviewer caveat (correctness): KVFLASH_RESTORE_CONSUME=1 output diverges from the no-consume AR path between ~35K and ~60K tokens. Root cause: chunk-to-block placement permutation changes the FlashAttention key-reduction order, FP non-associativity perturbs the logits, and a near-tie greedy argmax flips. See bench/abc_cache_harness/phase3_divergence_rootcause.md. It is an accepted reuse-vs-recompute flip, NOT a correctness bug — but output is NOT bit-identical at long ctx and there is NO agentic gate yet.
The ~0.1s warm-turn speedup is synthetic NIAH single-needle, not a published result. A real-CLI multi-turn output-equivalence capture is the open follow-up before defaulting this on for any widely-read claim.