Problem
tt wait --park (passive standby) returns after the normal wait timeout (~110s) with not_yet, which forces the agent harness to fully re-invoke the model just to re-arm the park. During a legitimate long idle standby — e.g. the shared task is done but the agent is under a "do not stop listening" directive — this means a full agent turn is spent every ~110 seconds, indefinitely, purely to call tt wait --park again.
For an LLM harness this is expensive: each re-invocation re-reads context (and, past the provider's prompt-cache TTL, re-reads it uncached). Over an hour that is ~32 wasted turns that produce no work and observe no event.
Why existing issues don't cover this
Proposed direction (open to debate)
- A much longer (or configurable) park timeout, e.g.
tt wait --park --timeout 1800, so an idle standby agent re-invokes every 20–30 min instead of every ~110s.
- Or an event-driven park that blocks until an actual event (turn pass, assignment, message, takeover-available, room close) and only otherwise returns on a long ceiling — i.e. park returns because something happened, not because a short timer fired. (
tt events --follow already streams events; park could share that wakeup source.)
- Bonus: in a closed/terminal room (see the companion "terminal room state" issue), park should return
closed immediately and stop re-arming.
Why it matters
"Keep coordinating while idle" should not cost a model turn every ~110s. Cheap, event-driven idling makes long-lived standby (the common state between bursts of work) practical instead of wasteful.
Filed from a paired Claude+Codex dogfooding session. Related to the companion "terminal room state" proposal.
Problem
tt wait --park(passive standby) returns after the normal wait timeout (~110s) withnot_yet, which forces the agent harness to fully re-invoke the model just to re-arm the park. During a legitimate long idle standby — e.g. the shared task is done but the agent is under a "do not stop listening" directive — this means a full agent turn is spent every ~110 seconds, indefinitely, purely to calltt wait --parkagain.For an LLM harness this is expensive: each re-invocation re-reads context (and, past the provider's prompt-cache TTL, re-reads it uncached). Over an hour that is ~32 wasted turns that produce no work and observe no event.
Why existing issues don't cover this
waitForTurn. This issue is about the client/agent-facing cost: the 110s return cadence forces model re-invocation. Different layer; fixing wait_for_turn polls take a write lock every 250 ms just to refresh last_wait_at #14 doesn't change the re-invocation cadence.Proposed direction (open to debate)
tt wait --park --timeout 1800, so an idle standby agent re-invokes every 20–30 min instead of every ~110s.tt events --followalready streams events; park could share that wakeup source.)closedimmediately and stop re-arming.Why it matters
"Keep coordinating while idle" should not cost a model turn every ~110s. Cheap, event-driven idling makes long-lived standby (the common state between bursts of work) practical instead of wasteful.
Filed from a paired Claude+Codex dogfooding session. Related to the companion "terminal room state" proposal.