Skip to content

feat(observability): summarize runs and sessions - #397

Merged
ShubyM merged 1 commit into
openrl-dev:mainfrom
ShubyM:observability/agent-summaries
Oct 30, 2026
Merged

ShubyM merged 1 commit into
openrl-dev:mainfrom
ShubyM:observability/agent-summaries

Conversation

@ShubyM

@ShubyM ShubyM commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Phase 8 of #390. Give agents one call that answers "why is this run not behaving".

What changed

  • /api/v1/inspect/runs lists one line per run, with failure and SDK error counts.
  • /api/v1/inspect/runs/{run_id}/summary returns facts in blocks that appear only when they have content: pace, goodput, lost and unanswered requests with their holder, failures with a pointer to their logs, saves, non-finite metrics, samplers, config mismatches and placement.
  • /api/v1/inspect/sessions/{session_id}/summary returns a session's runs and its SDK errors.
  • The API server records each session (created, last seen, metadata) and the SDK's error events.

What you configure

Nothing.

Verification

  • make test and make lint pass. Tests cover eight scenarios through the routes: a lost request, a request held by a dead worker, step pace, a config mismatch, a failure with its log pointer, a non-finite metric, sampler sends, and a session with SDK errors.
  • Against the cluster's records, run and session summaries render, including an unanswered save_state held by a dead trainer.

@ShubyM
ShubyM force-pushed the observability/agent-summaries branch from a01ea1d to 699cf24 Compare October 30, 2026 18:24
@ShubyM
ShubyM marked this pull request as ready for review October 30, 2026 20:13
Add three inspection routes. /api/v1/inspect/runs gives each run in one
line from small records. /runs/<id>/summary gives the facts recorded
about one run, and /sessions/<id>/summary the facts about one client
session. A summary shows a block only when it has content.

The API server now keeps each session's record and the SDK's error
events through the telemetry buffer. Session models come from the
model records, which bind_session already writes.

Ages count from the request and never go negative. An ended run shows
no ages. Goodput splits the trainer's idle time into GPU wait, queued,
rollout and client. The ledger reports a lost request only after the
gap has held across reads more than a flush apart. Log pointers use the
/logs arguments run_id, pod, since and until.
@ShubyM
ShubyM force-pushed the observability/agent-summaries branch from 699cf24 to fa56944 Compare October 30, 2026 20:32
@ShubyM
ShubyM merged commit 03d331b into openrl-dev:main Oct 30, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants