Problem
A deep-research task can legitimately run 20–30 minutes. Today it emits nothing while running, so "still digging" and "hung" look identical from the outside. Stall-detection thresholds in batch harnesses end up being guesswork, and every team wraps Raven in its own ad-hoc watchdog.
Proposal
A periodic, machine-readable heartbeat (configurable interval, e.g. 30 s) to stdout / log / callback:
{ "event": "heartbeat", "turn": 12, "tool_calls": 34, "last_activity_ts": 1789000000, "tokens_in_context": 41200 }
last_activity_ts alone would already let a supervisor distinguish "in progress" from "wedged".
- Turn / tool-call counters additionally enable cheap online progress dashboards for batch runs.
Pairs with #149: heartbeat covers the run's lifetime, termination reason covers its end.
Problem
A deep-research task can legitimately run 20–30 minutes. Today it emits nothing while running, so "still digging" and "hung" look identical from the outside. Stall-detection thresholds in batch harnesses end up being guesswork, and every team wraps Raven in its own ad-hoc watchdog.
Proposal
A periodic, machine-readable heartbeat (configurable interval, e.g. 30 s) to stdout / log / callback:
{ "event": "heartbeat", "turn": 12, "tool_calls": 34, "last_activity_ts": 1789000000, "tokens_in_context": 41200 }last_activity_tsalone would already let a supervisor distinguish "in progress" from "wedged".Pairs with #149: heartbeat covers the run's lifetime, termination reason covers its end.