62bec4b3f8
When two consecutive compactions each failed to clear the threshold, the anti-thrashing breaker blocked automatic compaction PERMANENTLY for the life of the session: nothing decremented _ineffective_compression_count (or _fallback_compression_streak) while blocked, so a session whose middle region was briefly too small to compact never auto-compacted again — it grew unbounded until the provider's hard context limit, and only /new or /reset recovered it. Recovery is a probation probe, not amnesty: after _ANTI_THRASH_RECOVERY_SECONDS (300s) of continuous block the gate grants exactly ONE attempt by dropping tripped counters to 1 strike (persisted, so sibling agents on the same session row — gateway hygiene — unblock too). An ineffective probe re-trips the guard on the next real-usage verdict and the next recovery waits a full fresh window, so the worst case in a truly incompressible session is one compaction attempt per window — bounded, not thrash. The recovery clock is armed lazily on the first BLOCKED evaluation and is deliberately not durable: a restart that loads a durable tripped counter (#69872) starts a full fresh window blocked, preserving the restart-must-never-disarm contract (#54923). Fixes #14694