@@ -196,6 +196,30 @@ When any subkey is enabled, model and tool spans get bounded, redacted
196196- ` openclaw.session.stuck_age_ms ` (histogram, attrs: ` openclaw.state ` ; emitted only for stale session bookkeeping with no active work)
197197- ` openclaw.run.attempt ` (counter, attrs: ` openclaw.attempt ` )
198198
199+ ### Session liveness telemetry
200+
201+ ` diagnostics.stuckSessionWarnMs ` is the no-progress age threshold for session
202+ liveness diagnostics. A ` processing ` session does not age toward this threshold
203+ while OpenClaw observes reply, tool, status, block, or ACP runtime progress.
204+ Typing keepalives are not counted as progress, so a silent model or harness can
205+ still be detected.
206+
207+ OpenClaw classifies sessions by the work it can still observe:
208+
209+ - ` session.long_running ` : active embedded work, model calls, or tool calls are
210+ still making progress.
211+ - ` session.stalled ` : active work exists, but the active run has not reported
212+ recent progress.
213+ - ` session.stuck ` : stale session bookkeeping with no active work. This is the
214+ only liveness classification that releases the affected session lane.
215+
216+ Only ` session.stuck ` emits the ` openclaw.session.stuck ` counter, the
217+ ` openclaw.session.stuck_age_ms ` histogram, and the ` openclaw.session.stuck `
218+ span. Repeated ` session.stuck ` diagnostics back off while the session remains
219+ unchanged, so dashboards should alert on sustained increases rather than every
220+ heartbeat tick. For the config knob and defaults, see
221+ [ Configuration reference] ( /gateway/configuration-reference#diagnostics ) .
222+
199223### Harness lifecycle
200224
201225- ` openclaw.harness.duration_ms ` (histogram, attrs: ` openclaw.harness.id ` , ` openclaw.harness.plugin ` , ` openclaw.outcome ` , ` openclaw.harness.phase ` on errors)
0 commit comments