Skip to content

feat: 3/x record RUM workflow execution vitals#13767

Open
huang47 wants to merge 2 commits into
codex/rum-workflow-outcomesfrom
codex/datadog-rum-workflow-execution-vital
Open

feat: 3/x record RUM workflow execution vitals#13767
huang47 wants to merge 2 commits into
codex/rum-workflow-outcomesfrom
codex/datadog-rum-workflow-execution-vital

Conversation

@huang47

@huang47 huang47 commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Reports one workflow_execution Datadog RUM duration vital when a queued workflow reaches a terminal state.

Changes

  • Capture performance.now() before prompt construction and retain it on the queued job.
  • Reuse the execution store's existing pending-status handling for terminal events that arrive before the queue response.
  • Send one outcome to a stateless Datadog provider; no provider-side job maps or buffering.

Origin-view attribution remains in #13764.

Verification

  • pnpm exec vitest run src/platform/telemetry/providers/cloud/DatadogRumTelemetryProvider.test.ts src/stores/executionStore.test.ts (97 tests)
  • pnpm typecheck
  • pnpm lint
  • pnpm format:check
  • pnpm knip

Created by Codex


Note

Low Risk
Observability-only changes gated on optional DD_RUM; execution status and queue behavior are unchanged aside from storing an optional timestamp and firing telemetry at terminal states.

Overview
Adds end-to-end workflow execution timing for cloud: one Datadog RUM workflow_execution duration vital per queued run when the job reaches a terminal state (completed or failed).

Queue → store: queuePrompt now records performance.now() before prompt construction and passes that startTime into executionStore.storeJob with the queued job metadata.

Terminal reporting: The execution store calls trackExecutionOutcome when workflow status settles (not on running), reusing the existing pending-status path so WebSocket terminal events that arrive before the queue HTTP response still emit telemetry once storeJob runs.

Datadog: DatadogRumTelemetryProvider maps outcomes to DD_RUM.addDurationVital with duration, absolute start time (performance.timeOrigin + startTime), and context (outcome, product: cloud_generation). Global types declare DD_RUM on window.

Reviewed by Cursor Bugbot for commit 65f51ff. Bugbot is set up for automated code reviews on this repo. Configure here.

@github-actions

github-actions Bot commented Jul 17, 2026

Copy link
Copy Markdown

🎭 Playwright: ✅ 1711 passed, 0 failed · 2 flaky

📊 Browser Reports
  • chromium: View Report (✅ 1692 / ❌ 0 / ⚠️ 1 / ⏭️ 5)
  • chromium-2x: View Report (✅ 2 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • chromium-0.5x: View Report (✅ 1 / ❌ 0 / ⚠️ 0 / ⏭️ 0)
  • mobile-chrome: View Report (✅ 16 / ❌ 0 / ⚠️ 1 / ⏭️ 0)

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 07/17/2026, 09:32:52 PM UTC

Links

📦 Bundle Size

⏳ Size data collection in progress…

⚡ Performance Report

canvas-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.6 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 48.2 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.2 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.0 MB heap
large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.7 MB heap
large-graph-pan: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 78.6 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.2 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 57.1 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 60.8 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 46.7 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 49.3 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 130ms TBT · 95.0 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 66.4 MB heap
vue-large-graph-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 162.6 MB heap
vue-large-graph-pan: · 58.1 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 161.2 MB heap
workflow-execution: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 48.8 MB heap

ℹ️ No baseline found — significance unavailable.

Absolute values
Metric Value
canvas-idle: avg frame time 17ms
canvas-idle: p95 frame time 17ms
canvas-idle: layout duration 0ms
canvas-idle: style recalc duration 7ms
canvas-idle: layout count 0
canvas-idle: style recalc count 10
canvas-idle: task duration 370ms
canvas-idle: script duration 14ms
canvas-idle: TBT 0ms
canvas-idle: heap used 60.6 MB
canvas-idle: DOM nodes -275
canvas-idle: event listeners -197
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 3ms
canvas-mouse-sweep: style recalc duration 28ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 71
canvas-mouse-sweep: task duration 666ms
canvas-mouse-sweep: script duration 90ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 48.2 MB
canvas-mouse-sweep: DOM nodes -109
canvas-mouse-sweep: event listeners -98
canvas-zoom-sweep: avg frame time 17ms
canvas-zoom-sweep: p95 frame time 17ms
canvas-zoom-sweep: layout duration 0ms
canvas-zoom-sweep: style recalc duration 13ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 31
canvas-zoom-sweep: task duration 303ms
canvas-zoom-sweep: script duration 15ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 64.2 MB
canvas-zoom-sweep: DOM nodes -221
canvas-zoom-sweep: event listeners -181
dom-widget-clipping: avg frame time 17ms
dom-widget-clipping: p95 frame time 17ms
dom-widget-clipping: layout duration 0ms
dom-widget-clipping: style recalc duration 6ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 12
dom-widget-clipping: task duration 299ms
dom-widget-clipping: script duration 40ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 57.0 MB
dom-widget-clipping: DOM nodes -289
dom-widget-clipping: event listeners -202
large-graph-idle: avg frame time 17ms
large-graph-idle: p95 frame time 17ms
large-graph-idle: layout duration 0ms
large-graph-idle: style recalc duration 6ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 10
large-graph-idle: task duration 456ms
large-graph-idle: script duration 62ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 57.7 MB
large-graph-idle: DOM nodes -263
large-graph-idle: event listeners -197
large-graph-pan: avg frame time 17ms
large-graph-pan: p95 frame time 17ms
large-graph-pan: layout duration 0ms
large-graph-pan: style recalc duration 13ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 68
large-graph-pan: task duration 827ms
large-graph-pan: script duration 281ms
large-graph-pan: TBT 0ms
large-graph-pan: heap used 78.6 MB
large-graph-pan: DOM nodes -130
large-graph-pan: event listeners -98
large-graph-zoom: avg frame time 17ms
large-graph-zoom: p95 frame time 17ms
large-graph-zoom: layout duration 7ms
large-graph-zoom: style recalc duration 15ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 65
large-graph-zoom: task duration 991ms
large-graph-zoom: script duration 339ms
large-graph-zoom: TBT 0ms
large-graph-zoom: heap used 64.2 MB
large-graph-zoom: DOM nodes 11
large-graph-zoom: event listeners 7
minimap-idle: avg frame time 17ms
minimap-idle: p95 frame time 17ms
minimap-idle: layout duration 0ms
minimap-idle: style recalc duration 4ms
minimap-idle: layout count 0
minimap-idle: style recalc count 7
minimap-idle: task duration 424ms
minimap-idle: script duration 56ms
minimap-idle: TBT 0ms
minimap-idle: heap used 57.1 MB
minimap-idle: DOM nodes -276
minimap-idle: event listeners -198
subgraph-dom-widget-clipping: avg frame time 17ms
subgraph-dom-widget-clipping: p95 frame time 17ms
subgraph-dom-widget-clipping: layout duration 0ms
subgraph-dom-widget-clipping: style recalc duration 8ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 48
subgraph-dom-widget-clipping: task duration 307ms
subgraph-dom-widget-clipping: script duration 94ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 60.8 MB
subgraph-dom-widget-clipping: DOM nodes -134
subgraph-dom-widget-clipping: event listeners -94
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 6ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 10
subgraph-idle: task duration 346ms
subgraph-idle: script duration 12ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 46.7 MB
subgraph-idle: DOM nodes -290
subgraph-idle: event listeners -197
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 3ms
subgraph-mouse-sweep: style recalc duration 29ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 77
subgraph-mouse-sweep: task duration 562ms
subgraph-mouse-sweep: script duration 64ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 49.3 MB
subgraph-mouse-sweep: DOM nodes -83
subgraph-mouse-sweep: event listeners -97
subgraph-transition-enter: avg frame time 17ms
subgraph-transition-enter: p95 frame time 17ms
subgraph-transition-enter: layout duration 10ms
subgraph-transition-enter: style recalc duration 24ms
subgraph-transition-enter: layout count 15
subgraph-transition-enter: style recalc count 19
subgraph-transition-enter: task duration 643ms
subgraph-transition-enter: script duration 22ms
subgraph-transition-enter: TBT 130ms
subgraph-transition-enter: heap used 95.0 MB
subgraph-transition-enter: DOM nodes 13673
subgraph-transition-enter: event listeners 2533
viewport-pan-sweep: avg frame time 17ms
viewport-pan-sweep: p95 frame time 17ms
viewport-pan-sweep: layout duration 0ms
viewport-pan-sweep: style recalc duration 38ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 249
viewport-pan-sweep: task duration 2812ms
viewport-pan-sweep: script duration 846ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 66.4 MB
viewport-pan-sweep: DOM nodes -272
viewport-pan-sweep: event listeners -183
vue-large-graph-idle: avg frame time 17ms
vue-large-graph-idle: p95 frame time 17ms
vue-large-graph-idle: layout duration 0ms
vue-large-graph-idle: style recalc duration 0ms
vue-large-graph-idle: layout count 0
vue-large-graph-idle: style recalc count 0
vue-large-graph-idle: task duration 8094ms
vue-large-graph-idle: script duration 402ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 162.6 MB
vue-large-graph-idle: DOM nodes -3300
vue-large-graph-idle: event listeners -16375
vue-large-graph-pan: avg frame time 17ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 20ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 65
vue-large-graph-pan: task duration 10600ms
vue-large-graph-pan: script duration 681ms
vue-large-graph-pan: TBT 0ms
vue-large-graph-pan: heap used 161.2 MB
vue-large-graph-pan: DOM nodes -3301
vue-large-graph-pan: event listeners -16382
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 14ms
workflow-execution: layout count 3
workflow-execution: style recalc count 13
workflow-execution: task duration 116ms
workflow-execution: script duration 6ms
workflow-execution: TBT 0ms
workflow-execution: heap used 48.8 MB
workflow-execution: DOM nodes -32
workflow-execution: event listeners -54
Raw data
{
  "timestamp": "2026-07-17T21:41:36.282Z",
  "gitSha": "502c38209dde87b3d8a2941862c4fd80c7e18c61",
  "branch": "codex/datadog-rum-workflow-execution-vital",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2067.157000000009,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 8.043999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 389.41,
      "heapDeltaBytes": -6382732,
      "heapUsedBytes": 63929756,
      "domNodes": -273,
      "jsHeapTotalBytes": 18231296,
      "scriptDurationMs": 13.967,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "canvas-idle",
      "durationMs": 2012.0429999999487,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.873000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 349.639,
      "heapDeltaBytes": -6989924,
      "heapUsedBytes": 63170344,
      "domNodes": -276,
      "jsHeapTotalBytes": 19017728,
      "scriptDurationMs": 13.19,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1808.1599999999867,
      "styleRecalcs": 71,
      "styleRecalcDurationMs": 31.142,
      "layouts": 12,
      "layoutDurationMs": 3.3360000000000003,
      "taskDurationMs": 739.6279999999999,
      "heapDeltaBytes": -4117692,
      "heapUsedBytes": 48421508,
      "domNodes": -270,
      "jsHeapTotalBytes": 17952768,
      "scriptDurationMs": 95.2,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 1699.324000000047,
      "styleRecalcs": 71,
      "styleRecalcDurationMs": 25.509999999999998,
      "layouts": 12,
      "layoutDurationMs": 2.5719999999999996,
      "taskDurationMs": 591.68,
      "heapDeltaBytes": -6397500,
      "heapUsedBytes": 52635548,
      "domNodes": 53,
      "jsHeapTotalBytes": 25427968,
      "scriptDurationMs": 84.093,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1740.4699999999593,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 12.427,
      "layouts": 6,
      "layoutDurationMs": 0.51,
      "taskDurationMs": 304.454,
      "heapDeltaBytes": -2734204,
      "heapUsedBytes": 67538920,
      "domNodes": -221,
      "jsHeapTotalBytes": 14299136,
      "scriptDurationMs": 14.957999999999998,
      "eventListeners": -180,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1735.7019999999466,
      "styleRecalcs": 30,
      "styleRecalcDurationMs": 13.984,
      "layouts": 6,
      "layoutDurationMs": 0.46799999999999997,
      "taskDurationMs": 300.845,
      "heapDeltaBytes": -3243396,
      "heapUsedBytes": 67034564,
      "domNodes": -221,
      "jsHeapTotalBytes": 14036992,
      "scriptDurationMs": 14.365,
      "eventListeners": -182,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 512.4989999999912,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 5.885,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 325.702,
      "heapDeltaBytes": 4043380,
      "heapUsedBytes": 56758284,
      "domNodes": -288,
      "jsHeapTotalBytes": 13758464,
      "scriptDurationMs": 45.032999999999994,
      "eventListeners": -203,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 434.3059999999923,
      "styleRecalcs": 12,
      "styleRecalcDurationMs": 5.8469999999999995,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 272.281,
      "heapDeltaBytes": 10115596,
      "heapUsedBytes": 62704236,
      "domNodes": -289,
      "jsHeapTotalBytes": 6418432,
      "scriptDurationMs": 35.348,
      "eventListeners": -201,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2020.3500000000076,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.750000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 459.618,
      "heapDeltaBytes": -24642448,
      "heapUsedBytes": 61086780,
      "domNodes": -263,
      "jsHeapTotalBytes": 1904640,
      "scriptDurationMs": 65.415,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2016.255000000001,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 5.801,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 452.351,
      "heapDeltaBytes": -8194188,
      "heapUsedBytes": 59921588,
      "domNodes": -263,
      "jsHeapTotalBytes": -1327104,
      "scriptDurationMs": 59.32000000000001,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2068.4029999999893,
      "styleRecalcs": 68,
      "styleRecalcDurationMs": 14.081,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 866.936,
      "heapDeltaBytes": 11373276,
      "heapUsedBytes": 80765248,
      "domNodes": -272,
      "jsHeapTotalBytes": -1384448,
      "scriptDurationMs": 292.821,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 2038.347999999985,
      "styleRecalcs": 67,
      "styleRecalcDurationMs": 12.024,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 786.278,
      "heapDeltaBytes": 29405352,
      "heapUsedBytes": 84138672,
      "domNodes": 12,
      "jsHeapTotalBytes": 1777664,
      "scriptDurationMs": 269.596,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3035.7099999999946,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 16.866,
      "layouts": 60,
      "layoutDurationMs": 7.81,
      "taskDurationMs": 1056.3740000000003,
      "heapDeltaBytes": 12166744,
      "heapUsedBytes": 67878280,
      "domNodes": 12,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 357.875,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 3030.282999999997,
      "styleRecalcs": 64,
      "styleRecalcDurationMs": 12.995,
      "layouts": 60,
      "layoutDurationMs": 6.023000000000001,
      "taskDurationMs": 925.2310000000001,
      "heapDeltaBytes": 12271600,
      "heapUsedBytes": 66667472,
      "domNodes": 10,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 319.81,
      "eventListeners": 6,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2014.9700000000053,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 4.134000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 426.804,
      "heapDeltaBytes": -3588632,
      "heapUsedBytes": 59762696,
      "domNodes": -276,
      "jsHeapTotalBytes": -835584,
      "scriptDurationMs": 57.30499999999999,
      "eventListeners": -199,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2015.1400000000876,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 4.649000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 421.171,
      "heapDeltaBytes": -3368660,
      "heapUsedBytes": 59940008,
      "domNodes": -275,
      "jsHeapTotalBytes": -835584,
      "scriptDurationMs": 55.532000000000004,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 515.0520000000256,
      "styleRecalcs": 47,
      "styleRecalcDurationMs": 8.198000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 333.048,
      "heapDeltaBytes": 7420908,
      "heapUsedBytes": 59987012,
      "domNodes": -289,
      "jsHeapTotalBytes": 10612736,
      "scriptDurationMs": 98.73899999999999,
      "eventListeners": -195,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999727
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 488.37399999990794,
      "styleRecalcs": 48,
      "styleRecalcDurationMs": 7.725,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 281.023,
      "heapDeltaBytes": 8152888,
      "heapUsedBytes": 67504176,
      "domNodes": 22,
      "jsHeapTotalBytes": 19922944,
      "scriptDurationMs": 88.46900000000001,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.663333333333338,
      "p95FrameDurationMs": 16.700000000000273
    },
    {
      "name": "subgraph-idle",
      "durationMs": 1997.9379999999765,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 5.213000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 352.24600000000004,
      "heapDeltaBytes": -4069112,
      "heapUsedBytes": 48095568,
      "domNodes": -291,
      "jsHeapTotalBytes": 18214912,
      "scriptDurationMs": 11.796999999999999,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2009.635000000003,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 5.896,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 340.07000000000005,
      "heapDeltaBytes": -2664040,
      "heapUsedBytes": 49895660,
      "domNodes": -289,
      "jsHeapTotalBytes": 16904192,
      "scriptDurationMs": 11.674,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1719.2099999999755,
      "styleRecalcs": 78,
      "styleRecalcDurationMs": 34.458999999999996,
      "layouts": 16,
      "layoutDurationMs": 3.7199999999999998,
      "taskDurationMs": 617.548,
      "heapDeltaBytes": -16430092,
      "heapUsedBytes": 53808096,
      "domNodes": -230,
      "jsHeapTotalBytes": 19804160,
      "scriptDurationMs": 68.133,
      "eventListeners": -197,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66999999999998,
      "p95FrameDurationMs": 16.699999999999818
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1700.9140000000116,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 24.407999999999998,
      "layouts": 16,
      "layoutDurationMs": 2.689,
      "taskDurationMs": 506.35599999999994,
      "heapDeltaBytes": -9565580,
      "heapUsedBytes": 49535652,
      "domNodes": 65,
      "jsHeapTotalBytes": 25165824,
      "scriptDurationMs": 60.471000000000004,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 914.873,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 24.208000000000002,
      "layouts": 15,
      "layoutDurationMs": 9.869000000000002,
      "taskDurationMs": 642.625,
      "heapDeltaBytes": 27655328,
      "heapUsedBytes": 99572240,
      "domNodes": 13673,
      "jsHeapTotalBytes": 16252928,
      "scriptDurationMs": 22.225,
      "eventListeners": 2533,
      "totalBlockingTimeMs": 130,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8074.995000000001,
      "styleRecalcs": 248,
      "styleRecalcDurationMs": 37.064,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2818.287,
      "heapDeltaBytes": 17561600,
      "heapUsedBytes": 71244340,
      "domNodes": -271,
      "jsHeapTotalBytes": 2564096,
      "scriptDurationMs": 853.74,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 8105.7450000000135,
      "styleRecalcs": 250,
      "styleRecalcDurationMs": 38.884,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2804.955,
      "heapDeltaBytes": 6576744,
      "heapUsedBytes": 67951680,
      "domNodes": -272,
      "jsHeapTotalBytes": 679936,
      "scriptDurationMs": 838.2630000000001,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 8380.847000000016,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 8355.542,
      "heapDeltaBytes": -45085344,
      "heapUsedBytes": 166754512,
      "domNodes": -3300,
      "jsHeapTotalBytes": -6029312,
      "scriptDurationMs": 423.08399999999995,
      "eventListeners": -16372,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 7873.254000000088,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 7832.487,
      "heapDeltaBytes": -30093164,
      "heapUsedBytes": 174141452,
      "domNodes": -3300,
      "jsHeapTotalBytes": 3641344,
      "scriptDurationMs": 380.009,
      "eventListeners": -16378,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 10905.637000000013,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 21.63100000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 10883.348999999998,
      "heapDeltaBytes": -27030804,
      "heapUsedBytes": 182696612,
      "domNodes": -3300,
      "jsHeapTotalBytes": 1982464,
      "scriptDurationMs": 701.329,
      "eventListeners": -16378,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 10340.57299999995,
      "styleRecalcs": 65,
      "styleRecalcDurationMs": 18.093999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 10315.755,
      "heapDeltaBytes": -71164668,
      "heapUsedBytes": 155281228,
      "domNodes": -3301,
      "jsHeapTotalBytes": 13864960,
      "scriptDurationMs": 661.4209999999999,
      "eventListeners": -16385,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.220000000000073,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "workflow-execution",
      "durationMs": 448.3889999999633,
      "styleRecalcs": 19,
      "styleRecalcDurationMs": 19.543,
      "layouts": 3,
      "layoutDurationMs": 1.04,
      "taskDurationMs": 179.046,
      "heapDeltaBytes": -22467184,
      "heapUsedBytes": 47070060,
      "domNodes": -167,
      "jsHeapTotalBytes": 5648384,
      "scriptDurationMs": 8.128000000000002,
      "eventListeners": -140,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 79.4380000000956,
      "styleRecalcs": 6,
      "styleRecalcDurationMs": 9.144000000000002,
      "layouts": 2,
      "layoutDurationMs": 0.4699999999999999,
      "taskDurationMs": 53.07500000000001,
      "heapDeltaBytes": 2892528,
      "heapUsedBytes": 55343384,
      "domNodes": 104,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 3.8209999999999997,
      "eventListeners": 33,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    }
  ]
}

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 590afddf-efa5-4583-abfb-7a6e59b4790c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/datadog-rum-workflow-execution-vital

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@                      Coverage Diff                      @@
##           codex/rum-workflow-outcomes   #13767    +/-   ##
=============================================================
  Coverage                        78.31%   78.31%            
=============================================================
  Files                             1672     1673     +1     
  Lines                           104023   104035    +12     
  Branches                         36688    37361   +673     
=============================================================
+ Hits                             81465    81478    +13     
  Misses                           21775    21775            
+ Partials                           783      782     -1     
Flag Coverage Δ
unit 67.02% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...try/providers/cloud/DatadogRumTelemetryProvider.ts 100.00% <100.00%> (ø)
src/scripts/app.ts 73.31% <100.00%> (+0.01%) ⬆️
src/stores/executionStore.ts 94.72% <100.00%> (+0.36%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@huang47
huang47 force-pushed the codex/rum-workflow-outcomes branch from c614d58 to 4f3ff80 Compare July 17, 2026 19:46
@huang47
huang47 force-pushed the codex/datadog-rum-workflow-execution-vital branch from 8ebaebe to 0cd72df Compare July 17, 2026 19:46
@huang47
huang47 marked this pull request as ready for review July 17, 2026 19:59
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Jul 17, 2026
@cursor

cursor Bot commented Jul 17, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_14074658-9119-4bc3-a197-9bd51cd9d3e7)

@huang47
huang47 force-pushed the codex/rum-workflow-outcomes branch from 4f3ff80 to 3fdfc2a Compare July 17, 2026 20:38
@huang47
huang47 force-pushed the codex/datadog-rum-workflow-execution-vital branch from 0cd72df to 1f2f738 Compare July 17, 2026 20:38
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Jul 17, 2026
@cursor

cursor Bot commented Jul 17, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_37f6f858-315e-46aa-b26a-e773553611c6)

Comment thread src/platform/telemetry/providers/cloud/DatadogRumTelemetryProvider.ts Outdated
@cursor

cursor Bot commented Jul 17, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_7d3236b6-54e3-479f-a0db-5841cb5fbb64)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:M This PR changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants