70d0b1fffb
Addresses the review on #93996: - gateway: hygiene and manual /compress load the memory provider only when compression.checkpoint_required is enabled (skip_memory=not required). The historical fast path — no provider init, no best-effort hook — is back for everyone who did not opt in, so default behavior is truly unchanged. - conversation_compression: assistant messages carrying both prose and tool_calls keep their prose in the checkpoint evidence (the tool_calls payload is stripped, the original message is not mutated); pure tool-call wrappers without prose are still dropped. - tests: legacy-database regression proving the _compressed_summary column is added by the declarative _reconcile_columns() path on a plain reopen (no version-gated migration needed — append_message works right after), plus coverage for the prose-preserving filter. - docs: providers must implement idempotent, content-keyed checkpoint writes — a fail-closed block means the next attempt re-runs on_pre_compress over largely the same transcript. Refs #93986