8bf4cb9a98
The cold-chat cost, measured on this box: every `coli chat` spawns a private engine (34-136 s of resident load) and starts with an empty expert cache (hit 4% cold vs 55% warm). Quitting throws both away. `coli chat` now probes localhost:8000 first (~1 ms when nothing listens) and, if a `coli serve` answers, runs the REPL over plain OpenAI SSE against it: stdlib urllib only, engine byte-protocol untouched. --attach [URL] forces it, --no-attach restores a private engine. reasoning_content keepalive pings are filtered; :reset starts a new conversation client-side (the server's KV slots reuse prefixes per conversation on their own). Verified against a mock SSE server (pings ignored, markdown rendered, :reset, clean exit) and against the real 744B model: two consecutive sessions, second attach instant with zero reload — the engine stayed resident at 15.7 GB across both. Honest limit: warmth carry-over BETWEEN different conversations is small here because cap=3 slots/layer is a short memory; the structural wins are the load never being repaid and same-conversation continuation. LOCAL ONLY for now — not pushed, per the current working rule. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit aa406ccab8a4501b924bc3a9f4725dd1d18a685d)