Skip to content

[Bug]: diagnostics timeline omits provider request events #103063

Description

@vincentkoc

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Live embedded model calls do not emit the provider.request diagnostics timeline event required to prove real provider traffic.

Steps to reproduce

  1. Set OPENCLAW_DIAGNOSTICS=1 and OPENCLAW_DIAGNOSTICS_TIMELINE_PATH to a writable JSONL path.
  2. Run an embedded agent turn against a live provider.
  3. Inspect the timeline JSONL.
  4. Observe model-call diagnostics but no provider.request event, so Kova's openclaw-timeline provider collector cannot attribute the live request.

Expected behavior

The canonical embedded model-call wrapper emits one terminal provider.request event per provider call, including start timestamp, duration, provider, model, operation, outcome, and a stable call/span id.

Actual behavior

src/infra/diagnostics-timeline.ts has accepted provider.request since commit 097eed8cd8b44ef8a3d1cebddf319e9cebf5e10d on April 29, 2026, but current main has no runtime emitter for that event type.

OpenClaw version

a9578436dee47447213bbade63002f8f88666512 (main, July 9, 2026)

Operating system

Ubuntu 24.04 GitHub Actions / Blacksmith runner

Install method

Repository checkout with pnpm

Model

OpenAI GPT-5.5 release-validation lane

Provider / routing chain

OpenClaw embedded agent runner -> OpenAI

Additional provider/model setup details

The canonical embedded wrapper covers core model-provider streams and compaction calls. CLI-supervised Codex and Claude runtimes do not own the raw provider HTTP boundary and should not synthesize this event.

Logs

$ git grep -n 'provider.request' a9578436dee -- \
    src/infra/diagnostics-timeline.ts \
    src/agents/embedded-agent-runner/run/attempt.model-diagnostic-events.ts
a9578436dee:src/infra/diagnostics-timeline.ts:20:  | "provider.request"

Screenshots, recordings, and evidence

Kova's pinned collector accepts timeline events where type or name is provider.request, then uses timestamp, durationMs, provider, operation, spanId, ok, and model metadata for live request attribution. The release workflow currently cannot produce that evidence from OpenClaw.

Impact and severity

Affected: release validation and performance lanes that require live-provider proof.

Severity: High for release confidence; runtime model calls still work.

Frequency: Every embedded live-provider call with timeline diagnostics enabled.

Consequence: a lane can be configured as live without producing provider-boundary evidence, so live-versus-mock execution cannot be independently verified from the OpenClaw timeline.

Additional information

The fix should emit at the existing terminal model-call boundary and reuse its dedupe guard, so success, errors, iterator completion, and result() completion cannot double-count one provider request.

Metadata

Metadata

Assignees

Labels

P2Normal backlog priority with limited blast radius.bugSomething isn't workingclawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:otherThis issue has meaningful maintainer-visible impact outside the owned taxonomy.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.maintainerMaintainer-authored PRmaturity:stableIssue affects a taxonomy feature currently scored M4/M5.

Type

No type

Fields

Priority

None yet

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions