2fb0aa1c0e
The post-begin_commit() waiter previously called unbounded future.result(), so the advertised compression.context_total_ceiling_seconds was silently unenforced for commit-phase hangs. The commit still must complete (abandoning an in-flight SessionDB mutation would diverge live messages from durable state), but the wait is now bounded in increments against the remaining ceiling: on ceiling breach the overrun is logged (WARNING escalating to ERROR), surfaced once through the user-visible warning channel via the new on_commit_overrun callback (wired to _emit_warning in run_agent.py), and the host keeps waiting in bounded slices until the commit finishes. Documented guarantee (config comment + docs, en/zh): summary phase bounded by the ceiling; commit phase logged + surfaced if it exceeds it — never silently hung, never abandoned mid-commit. Test updated to assert the surfacing fires (previously accepted a silent over-ceiling wait); adds coverage that a raising overrun callback cannot break the commit wait.