9de7dfe1cc
The progress-hook streaming from #71508 only activated when a CompressionCommitFence was present (gateway session hygiene). CLI /compress and in-loop auto-compression still used the plain non-streaming summary call, where the SDK timeout is inactivity-based — a byte-trickling provider that keeps the connection alive could outlive auxiliary.compression.timeout indefinitely (the gap #69192/#41397 were built to close). Fenceless compression callers now install a no-op progress hook, which routes their summary call onto the same streamed path: the configured timeout acts on inactivity (slow models finish instead of being cut off mid-generation), and a degenerate trickle stream is bounded by the streamed total ceiling (max(600s, 4× the task timeout)) instead of running forever. No config knob needed — the ceiling machinery ships with the streaming layer and applies uniformly. Supersedes the opt-in wall-clock deadline approaches in PR #69192 (@JabberELF) and PR #41397: same guarantee (bounded total compression wall time even while bytes move) without a daemonized watchdog thread or a new config surface, and without punishing slow-but-healthy models.