measure: bench=hibernate prints why an idle harness stayed up

Merged
TE
9d ago
+4-1

bench=hibernate now also prints why an idle harness stayed up.

Why: a fleet run (measure Mac, n=4, Claude and Codex) compared the tip at 0d7d2dde against the parent of #26127. Neither side hibernated a single chat:

  • every agent process was still running after 135 s idle;
  • the next prompt answered in 15-80 ms, with no respawn;
  • the bench printed no LOG line, because it kept only the daemon's hibernated/woke/wake failed lines.

The idle pass logs a refusal when its census finds a process under the harness that isn't one of its MCP servers (idle_census.rs note_refusal: "idle harness stays up: ..."). The bench now keeps those lines too, so the next run names the process that held each harness up.

What changes: one filter in scripts/cmux-next/acpmux-overhead-bench.py (hibernate_main). Nothing else.

Leo's words for the stack this measures: "also when it comes to hibernation...can't you hibernate the agent but not hibernate the bg tasks?"

Risk: none for the product. This is measurement only.

No capture: no UI.

Review (codex gpt-6-astra high, fast): SHIP at f9534045e2ffac003eaba4d4e99cd01cc87943b5.

Agent session: agent session

šŸ¤– Generated with Claude Code