Skip to content

Restore legacy slot link mutations - #15666

Draft
DrJKL wants to merge 3 commits into
audit/ecs-test-failsfrom
fix/legacy-link-restoration
Draft

Restore legacy slot link mutations#15666
DrJKL wants to merge 3 commits into
audit/ecs-test-failsfrom
fix/legacy-link-restoration

Conversation

@DrJKL

@DrJKL DrJKL commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Restores previously observed links when deprecated slot mirrors re-add their IDs while keeping the link store authoritative.

Changes

  • What: Retains detached topology as compatibility-command input for input.link and the existing output.links mutation view.
  • Safety: Rejects restoration when an endpoint is missing, the target is occupied, the ID is live, or the ID came from another slot.
  • Tests: Covers input and output restoration, fan-out, conflicts, copied IDs, and removed endpoints.

Review Focus

Please focus on the restoration validation boundary and whether retaining detached LLink instances on legacy slots is sufficiently narrow for compatibility.

Red-Green Verification

  • 9586adbadf adds the failing restoration cases.
  • b52a4503fc implements store-authoritative restoration.

@coderabbitai

coderabbitai Bot commented Aug 23, 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: 58c6b500-1ff2-4d5e-8b26-fc8987e1af4b

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

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

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

🎭 Playwright: ❌ 1907 passed, 42 failed · 1 flaky

❌ Failed Tests

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

🎨 Storybook: ✅ Built — View Storybook

Details

⏰ Completed at: 08/23/2026, 03:03:09 AM 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 · 63.1 MB heap
canvas-mouse-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 63.2 MB heap
canvas-zoom-sweep: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 71.6 MB heap
dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 61.7 MB heap
large-graph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 73.9 MB heap
large-graph-pan: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 8ms TBT · 63.6 MB heap
large-graph-zoom: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 18ms TBT · 87.7 MB heap
legacy-node-drag: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 2ms TBT · 87.3 MB heap
minimap-idle: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 0ms TBT · 73.9 MB heap
subgraph-dom-widget-clipping: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 64.1 MB heap
subgraph-idle: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 74.5 MB heap
subgraph-mouse-sweep: · 60.0 avg FPS · 59.5 P5 FPS ✅ (target: ≥52) · 0ms TBT · 70.9 MB heap
subgraph-transition-enter: · 60.0 avg FPS · 59.9 P5 FPS ✅ (target: ≥52) · 147ms TBT · 91.7 MB heap
viewport-pan-sweep: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 73.6 MB heap
vue-large-graph-idle: · 56.3 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 167.7 MB heap
vue-large-graph-pan: · 56.3 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 98ms TBT · 167.1 MB heap
workflow-execution: · 60.0 avg FPS · 59.7 P5 FPS ✅ (target: ≥52) · 0ms TBT · 68.2 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 8
canvas-idle: task duration 506ms
canvas-idle: script duration 9ms
canvas-idle: TBT 0ms
canvas-idle: heap used 63.1 MB
canvas-idle: DOM nodes -279
canvas-idle: event listeners -170
canvas-mouse-sweep: avg frame time 17ms
canvas-mouse-sweep: p95 frame time 17ms
canvas-mouse-sweep: layout duration 4ms
canvas-mouse-sweep: style recalc duration 46ms
canvas-mouse-sweep: layout count 12
canvas-mouse-sweep: style recalc count 82
canvas-mouse-sweep: task duration 1440ms
canvas-mouse-sweep: script duration 217ms
canvas-mouse-sweep: TBT 0ms
canvas-mouse-sweep: heap used 63.2 MB
canvas-mouse-sweep: DOM nodes -279
canvas-mouse-sweep: event listeners -170
canvas-zoom-sweep: avg frame time 17ms
canvas-zoom-sweep: p95 frame time 17ms
canvas-zoom-sweep: layout duration 1ms
canvas-zoom-sweep: style recalc duration 18ms
canvas-zoom-sweep: layout count 6
canvas-zoom-sweep: style recalc count 32
canvas-zoom-sweep: task duration 367ms
canvas-zoom-sweep: script duration 12ms
canvas-zoom-sweep: TBT 0ms
canvas-zoom-sweep: heap used 71.6 MB
canvas-zoom-sweep: DOM nodes 77
canvas-zoom-sweep: event listeners 20
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 7ms
dom-widget-clipping: layout count 0
dom-widget-clipping: style recalc count 10
dom-widget-clipping: task duration 465ms
dom-widget-clipping: script duration 34ms
dom-widget-clipping: TBT 0ms
dom-widget-clipping: heap used 61.7 MB
dom-widget-clipping: DOM nodes 16
dom-widget-clipping: event listeners 2
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 1ms
large-graph-idle: layout count 0
large-graph-idle: style recalc count 1
large-graph-idle: task duration 521ms
large-graph-idle: script duration 43ms
large-graph-idle: TBT 0ms
large-graph-idle: heap used 73.9 MB
large-graph-idle: DOM nodes -138
large-graph-idle: event listeners -75
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 8ms
large-graph-pan: layout count 0
large-graph-pan: style recalc count 63
large-graph-pan: task duration 3238ms
large-graph-pan: script duration 1287ms
large-graph-pan: TBT 8ms
large-graph-pan: heap used 63.6 MB
large-graph-pan: DOM nodes -139
large-graph-pan: event listeners -70
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 11ms
large-graph-zoom: layout count 60
large-graph-zoom: style recalc count 66
large-graph-zoom: task duration 3049ms
large-graph-zoom: script duration 1147ms
large-graph-zoom: TBT 18ms
large-graph-zoom: heap used 87.7 MB
large-graph-zoom: DOM nodes 24
large-graph-zoom: event listeners 13
legacy-node-drag: avg frame time 17ms
legacy-node-drag: p95 frame time 17ms
legacy-node-drag: layout duration 0ms
legacy-node-drag: style recalc duration 5ms
legacy-node-drag: layout count 0
legacy-node-drag: style recalc count 41
legacy-node-drag: task duration 2360ms
legacy-node-drag: script duration 234ms
legacy-node-drag: TBT 2ms
legacy-node-drag: heap used 87.3 MB
legacy-node-drag: DOM nodes 0
legacy-node-drag: event listeners 188
minimap-idle: avg frame time 17ms
minimap-idle: p95 frame time 17ms
minimap-idle: layout duration 0ms
minimap-idle: style recalc duration 1ms
minimap-idle: layout count 0
minimap-idle: style recalc count 1
minimap-idle: task duration 532ms
minimap-idle: script duration 39ms
minimap-idle: TBT 0ms
minimap-idle: heap used 73.9 MB
minimap-idle: DOM nodes -277
minimap-idle: event listeners -168
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 9ms
subgraph-dom-widget-clipping: layout count 0
subgraph-dom-widget-clipping: style recalc count 45
subgraph-dom-widget-clipping: task duration 536ms
subgraph-dom-widget-clipping: script duration 147ms
subgraph-dom-widget-clipping: TBT 0ms
subgraph-dom-widget-clipping: heap used 64.1 MB
subgraph-dom-widget-clipping: DOM nodes 16
subgraph-dom-widget-clipping: event listeners 8
subgraph-idle: avg frame time 17ms
subgraph-idle: p95 frame time 17ms
subgraph-idle: layout duration 0ms
subgraph-idle: style recalc duration 9ms
subgraph-idle: layout count 0
subgraph-idle: style recalc count 9
subgraph-idle: task duration 509ms
subgraph-idle: script duration 9ms
subgraph-idle: TBT 0ms
subgraph-idle: heap used 74.5 MB
subgraph-idle: DOM nodes -297
subgraph-idle: event listeners -216
subgraph-mouse-sweep: avg frame time 17ms
subgraph-mouse-sweep: p95 frame time 17ms
subgraph-mouse-sweep: layout duration 4ms
subgraph-mouse-sweep: style recalc duration 39ms
subgraph-mouse-sweep: layout count 16
subgraph-mouse-sweep: style recalc count 76
subgraph-mouse-sweep: task duration 1156ms
subgraph-mouse-sweep: script duration 129ms
subgraph-mouse-sweep: TBT 0ms
subgraph-mouse-sweep: heap used 70.9 MB
subgraph-mouse-sweep: DOM nodes -296
subgraph-mouse-sweep: event listeners -216
subgraph-transition-enter: avg frame time 17ms
subgraph-transition-enter: p95 frame time 17ms
subgraph-transition-enter: layout duration 15ms
subgraph-transition-enter: style recalc duration 32ms
subgraph-transition-enter: layout count 13
subgraph-transition-enter: style recalc count 18
subgraph-transition-enter: task duration 953ms
subgraph-transition-enter: script duration 35ms
subgraph-transition-enter: TBT 147ms
subgraph-transition-enter: heap used 91.7 MB
subgraph-transition-enter: DOM nodes 13671
subgraph-transition-enter: event listeners 2383
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 33ms
viewport-pan-sweep: layout count 0
viewport-pan-sweep: style recalc count 243
viewport-pan-sweep: task duration 11721ms
viewport-pan-sweep: script duration 4437ms
viewport-pan-sweep: TBT 0ms
viewport-pan-sweep: heap used 73.6 MB
viewport-pan-sweep: DOM nodes -276
viewport-pan-sweep: event listeners -135
vue-large-graph-idle: avg frame time 18ms
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 17134ms
vue-large-graph-idle: script duration 394ms
vue-large-graph-idle: TBT 0ms
vue-large-graph-idle: heap used 167.7 MB
vue-large-graph-idle: DOM nodes -6549
vue-large-graph-idle: event listeners -7472
vue-large-graph-pan: avg frame time 18ms
vue-large-graph-pan: p95 frame time 17ms
vue-large-graph-pan: layout duration 0ms
vue-large-graph-pan: style recalc duration 19ms
vue-large-graph-pan: layout count 0
vue-large-graph-pan: style recalc count 175
vue-large-graph-pan: task duration 21292ms
vue-large-graph-pan: script duration 1091ms
vue-large-graph-pan: TBT 98ms
vue-large-graph-pan: heap used 167.1 MB
vue-large-graph-pan: DOM nodes -6548
vue-large-graph-pan: event listeners -7468
workflow-execution: avg frame time 17ms
workflow-execution: p95 frame time 17ms
workflow-execution: layout duration 1ms
workflow-execution: style recalc duration 20ms
workflow-execution: layout count 2
workflow-execution: style recalc count 10
workflow-execution: task duration 105ms
workflow-execution: script duration 5ms
workflow-execution: TBT 0ms
workflow-execution: heap used 68.2 MB
workflow-execution: DOM nodes 111
workflow-execution: event listeners 49
Raw data
{
  "timestamp": "2026-08-23T03:23:51.018Z",
  "gitSha": "a09e8bd75d7f45c258948a2442ccaeeb4171fcaa",
  "branch": "fix/legacy-link-restoration",
  "measurements": [
    {
      "name": "canvas-idle",
      "durationMs": 2039.8799999999824,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 7.2970000000000015,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 511.55899999999997,
      "heapDeltaBytes": 801624,
      "heapUsedBytes": 73664672,
      "domNodes": -277,
      "jsHeapTotalBytes": 4292608,
      "scriptDurationMs": 9.776,
      "eventListeners": -185,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-idle",
      "durationMs": 2054.9649999999247,
      "styleRecalcs": 7,
      "styleRecalcDurationMs": 6.599000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 500.04,
      "heapDeltaBytes": -11740968,
      "heapUsedBytes": 58660180,
      "domNodes": -281,
      "jsHeapTotalBytes": 4710400,
      "scriptDurationMs": 9.015999999999998,
      "eventListeners": -155,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2576.4179999999897,
      "styleRecalcs": 84,
      "styleRecalcDurationMs": 49.044000000000004,
      "layouts": 12,
      "layoutDurationMs": 5.269,
      "taskDurationMs": 1569.031,
      "heapDeltaBytes": -11010656,
      "heapUsedBytes": 59916140,
      "domNodes": -277,
      "jsHeapTotalBytes": 6807552,
      "scriptDurationMs": 237.22099999999995,
      "eventListeners": -185,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-mouse-sweep",
      "durationMs": 2275.3870000000234,
      "styleRecalcs": 80,
      "styleRecalcDurationMs": 43.689,
      "layouts": 12,
      "layoutDurationMs": 3.509,
      "taskDurationMs": 1311.8049999999998,
      "heapDeltaBytes": 870384,
      "heapUsedBytes": 72552356,
      "domNodes": -281,
      "jsHeapTotalBytes": 6545408,
      "scriptDurationMs": 196.161,
      "eventListeners": -155,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1721.7650000000049,
      "styleRecalcs": 33,
      "styleRecalcDurationMs": 16.631,
      "layouts": 6,
      "layoutDurationMs": 0.551,
      "taskDurationMs": 361.904,
      "heapDeltaBytes": 4330284,
      "heapUsedBytes": 75093096,
      "domNodes": 77,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 11.475,
      "eventListeners": 19,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "canvas-zoom-sweep",
      "durationMs": 1755.198000000064,
      "styleRecalcs": 31,
      "styleRecalcDurationMs": 18.410000000000004,
      "layouts": 6,
      "layoutDurationMs": 0.6600000000000001,
      "taskDurationMs": 372.6149999999999,
      "heapDeltaBytes": 4367764,
      "heapUsedBytes": 75088448,
      "domNodes": 77,
      "jsHeapTotalBytes": 4980736,
      "scriptDurationMs": 12.194999999999999,
      "eventListeners": 21,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 726.0879999999474,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 6.677999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 458.1219999999999,
      "heapDeltaBytes": -6033108,
      "heapUsedBytes": 64635048,
      "domNodes": 16,
      "jsHeapTotalBytes": 6553600,
      "scriptDurationMs": 33.975,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "dom-widget-clipping",
      "durationMs": 754.4070000000147,
      "styleRecalcs": 10,
      "styleRecalcDurationMs": 7.288999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 471.058,
      "heapDeltaBytes": -6005792,
      "heapUsedBytes": 64749284,
      "domNodes": 16,
      "jsHeapTotalBytes": 5767168,
      "scriptDurationMs": 34.994,
      "eventListeners": 2,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2020.195000000001,
      "styleRecalcs": 1,
      "styleRecalcDurationMs": 1.0439999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 525.9849999999999,
      "heapDeltaBytes": 11993972,
      "heapUsedBytes": 76992688,
      "domNodes": -275,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 45.451,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "large-graph-idle",
      "durationMs": 2004.7899999999572,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 515.346,
      "heapDeltaBytes": 12655368,
      "heapUsedBytes": 77946336,
      "domNodes": 0,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 40.867,
      "eventListeners": 4,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "large-graph-pan",
      "durationMs": 4196.071000000018,
      "styleRecalcs": 62,
      "styleRecalcDurationMs": 7.996000000000003,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3115.674,
      "heapDeltaBytes": 546620,
      "heapUsedBytes": 66488732,
      "domNodes": 0,
      "jsHeapTotalBytes": 5242880,
      "scriptDurationMs": 1282.218,
      "eventListeners": 10,
      "totalBlockingTimeMs": 15,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-pan",
      "durationMs": 4244.446000000039,
      "styleRecalcs": 63,
      "styleRecalcDurationMs": 8.886999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 3359.5640000000003,
      "heapDeltaBytes": -21606060,
      "heapUsedBytes": 66851404,
      "domNodes": -277,
      "jsHeapTotalBytes": 4907008,
      "scriptDurationMs": 1292.581,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 5094.938000000013,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 11.46,
      "layouts": 60,
      "layoutDurationMs": 7.33,
      "taskDurationMs": 3066.03,
      "heapDeltaBytes": 20110072,
      "heapUsedBytes": 91179472,
      "domNodes": 24,
      "jsHeapTotalBytes": 3670016,
      "scriptDurationMs": 1159.595,
      "eventListeners": 12,
      "totalBlockingTimeMs": 24,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.80000000000109
    },
    {
      "name": "large-graph-zoom",
      "durationMs": 5008.366000000024,
      "styleRecalcs": 66,
      "styleRecalcDurationMs": 11.211000000000002,
      "layouts": 60,
      "layoutDurationMs": 7.379000000000001,
      "taskDurationMs": 3031.6229999999996,
      "heapDeltaBytes": 24807812,
      "heapUsedBytes": 92701492,
      "domNodes": 24,
      "jsHeapTotalBytes": 3407872,
      "scriptDurationMs": 1134.212,
      "eventListeners": 14,
      "totalBlockingTimeMs": 11,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 3335.8579999999733,
      "styleRecalcs": 41,
      "styleRecalcDurationMs": 4.837000000000001,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2366.5190000000002,
      "heapDeltaBytes": 22713356,
      "heapUsedBytes": 91587552,
      "domNodes": 0,
      "jsHeapTotalBytes": 1753088,
      "scriptDurationMs": 233.749,
      "eventListeners": 188,
      "totalBlockingTimeMs": 1,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "legacy-node-drag",
      "durationMs": 3410.494999999969,
      "styleRecalcs": 41,
      "styleRecalcDurationMs": 5.204999999999997,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 2353.3759999999997,
      "heapDeltaBytes": 22302432,
      "heapUsedBytes": 91566792,
      "domNodes": 0,
      "jsHeapTotalBytes": 2015232,
      "scriptDurationMs": 233.767,
      "eventListeners": 188,
      "totalBlockingTimeMs": 3,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2031.2450000000126,
      "styleRecalcs": 1,
      "styleRecalcDurationMs": 1.1049999999999984,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 529.8989999999999,
      "heapDeltaBytes": -12018468,
      "heapUsedBytes": 77448080,
      "domNodes": -275,
      "jsHeapTotalBytes": -860160,
      "scriptDurationMs": 38.601,
      "eventListeners": -183,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "minimap-idle",
      "durationMs": 2032.6200000000654,
      "styleRecalcs": 1,
      "styleRecalcDurationMs": 1.0579999999999998,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 534.2719999999999,
      "heapDeltaBytes": -12195424,
      "heapUsedBytes": 77468676,
      "domNodes": -278,
      "jsHeapTotalBytes": -1122304,
      "scriptDurationMs": 39.71100000000001,
      "eventListeners": -153,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 765.0789999999574,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 9.082,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 536.4830000000001,
      "heapDeltaBytes": -6005200,
      "heapUsedBytes": 67214980,
      "domNodes": 16,
      "jsHeapTotalBytes": 6815744,
      "scriptDurationMs": 146.815,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-dom-widget-clipping",
      "durationMs": 756.1920000000555,
      "styleRecalcs": 45,
      "styleRecalcDurationMs": 8.84,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 536.426,
      "heapDeltaBytes": -6000052,
      "heapUsedBytes": 67222192,
      "domNodes": 16,
      "jsHeapTotalBytes": 6291456,
      "scriptDurationMs": 146.54999999999998,
      "eventListeners": 8,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2030.7149999999865,
      "styleRecalcs": 8,
      "styleRecalcDurationMs": 8.602000000000002,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 504.456,
      "heapDeltaBytes": 7275092,
      "heapUsedBytes": 79559152,
      "domNodes": -297,
      "jsHeapTotalBytes": 4710400,
      "scriptDurationMs": 8.028,
      "eventListeners": -201,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "subgraph-idle",
      "durationMs": 2031.3600000000633,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 8.921999999999999,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 513.732,
      "heapDeltaBytes": 3461824,
      "heapUsedBytes": 76576180,
      "domNodes": -296,
      "jsHeapTotalBytes": 6021120,
      "scriptDurationMs": 9.41,
      "eventListeners": -231,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1889.04500000001,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.498999999999995,
      "layouts": 16,
      "layoutDurationMs": 4.574999999999999,
      "taskDurationMs": 1152.797,
      "heapDeltaBytes": 9929140,
      "heapUsedBytes": 82114772,
      "domNodes": -295,
      "jsHeapTotalBytes": 6283264,
      "scriptDurationMs": 129.14700000000002,
      "eventListeners": -231,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333332,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-mouse-sweep",
      "durationMs": 1914.9419999999964,
      "styleRecalcs": 76,
      "styleRecalcDurationMs": 38.717,
      "layouts": 16,
      "layoutDurationMs": 4.388000000000001,
      "taskDurationMs": 1158.3110000000001,
      "heapDeltaBytes": -5960132,
      "heapUsedBytes": 66471100,
      "domNodes": -296,
      "jsHeapTotalBytes": 7069696,
      "scriptDurationMs": 129.258,
      "eventListeners": -201,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.66333333333335,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "subgraph-transition-enter",
      "durationMs": 1418.137999999999,
      "styleRecalcs": 18,
      "styleRecalcDurationMs": 31.924999999999994,
      "layouts": 13,
      "layoutDurationMs": 14.540999999999999,
      "taskDurationMs": 953.1049999999999,
      "heapDeltaBytes": 255524,
      "heapUsedBytes": 96119936,
      "domNodes": 13671,
      "jsHeapTotalBytes": 11010048,
      "scriptDurationMs": 34.884,
      "eventListeners": 2383,
      "totalBlockingTimeMs": 147,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 15346.396000000026,
      "styleRecalcs": 243,
      "styleRecalcDurationMs": 33.372,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11617.626,
      "heapDeltaBytes": -6710136,
      "heapUsedBytes": 80598860,
      "domNodes": -274,
      "jsHeapTotalBytes": 5623808,
      "scriptDurationMs": 4377.945,
      "eventListeners": -121,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "viewport-pan-sweep",
      "durationMs": 15637.815000000046,
      "styleRecalcs": 242,
      "styleRecalcDurationMs": 32.723,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 11825.113,
      "heapDeltaBytes": 8622168,
      "heapUsedBytes": 73747532,
      "domNodes": -278,
      "jsHeapTotalBytes": 6029312,
      "scriptDurationMs": 4495.495,
      "eventListeners": -149,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17951.22299999997,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17123.291999999998,
      "heapDeltaBytes": -33790608,
      "heapUsedBytes": 175146232,
      "domNodes": -6549,
      "jsHeapTotalBytes": -3211264,
      "scriptDurationMs": 412.62,
      "eventListeners": -7471,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666763,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "vue-large-graph-idle",
      "durationMs": 17969.679999999928,
      "styleRecalcs": 0,
      "styleRecalcDurationMs": 0,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 17145.485,
      "heapDeltaBytes": -37551256,
      "heapUsedBytes": 176530188,
      "domNodes": -6548,
      "jsHeapTotalBytes": -7110656,
      "scriptDurationMs": 374.756,
      "eventListeners": -7473,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21779.91899999995,
      "styleRecalcs": 176,
      "styleRecalcDurationMs": 19.055000000000017,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21414.069,
      "heapDeltaBytes": -43718492,
      "heapUsedBytes": 166947188,
      "domNodes": -6548,
      "jsHeapTotalBytes": -5410816,
      "scriptDurationMs": 1100.434,
      "eventListeners": -7469,
      "totalBlockingTimeMs": 63,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.799999999999272
    },
    {
      "name": "vue-large-graph-pan",
      "durationMs": 21476.54799999998,
      "styleRecalcs": 173,
      "styleRecalcDurationMs": 19.738000000000007,
      "layouts": 0,
      "layoutDurationMs": 0,
      "taskDurationMs": 21169.920000000002,
      "heapDeltaBytes": -25737936,
      "heapUsedBytes": 183383772,
      "domNodes": -6548,
      "jsHeapTotalBytes": -2756608,
      "scriptDurationMs": 1081.892,
      "eventListeners": -7467,
      "totalBlockingTimeMs": 132,
      "frameDurationMs": 17.776666666666642,
      "p95FrameDurationMs": 16.700000000000728
    },
    {
      "name": "workflow-execution",
      "durationMs": 151.90899999993235,
      "styleRecalcs": 11,
      "styleRecalcDurationMs": 21.325000000000003,
      "layouts": 2,
      "layoutDurationMs": 0.7039999999999998,
      "taskDurationMs": 114.80600000000001,
      "heapDeltaBytes": 3801508,
      "heapUsedBytes": 71602344,
      "domNodes": 113,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 5.402,
      "eventListeners": 49,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.670000000000012,
      "p95FrameDurationMs": 16.800000000000182
    },
    {
      "name": "workflow-execution",
      "durationMs": 127.34199999999873,
      "styleRecalcs": 9,
      "styleRecalcDurationMs": 17.865,
      "layouts": 2,
      "layoutDurationMs": 0.5499999999999999,
      "taskDurationMs": 94.78599999999999,
      "heapDeltaBytes": 3760336,
      "heapUsedBytes": 71331536,
      "domNodes": 108,
      "jsHeapTotalBytes": 0,
      "scriptDurationMs": 5.112,
      "eventListeners": 49,
      "totalBlockingTimeMs": 0,
      "frameDurationMs": 16.666666666666668,
      "p95FrameDurationMs": 16.700000000000728
    }
  ]
}

@github-actions github-actions Bot added the risk:R2 PR risk grade (advisory shadow check; grader-owned) label Aug 23, 2026
@codecov

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 87.09677% with 8 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/lib/litegraph/src/node/restoreLegacyLink.ts 77.77% 8 Missing ⚠️
@@                  Coverage Diff                   @@
##           audit/ecs-test-fails   #15666    +/-   ##
======================================================
  Coverage                 82.27%   82.27%            
======================================================
  Files                      1908     1909     +1     
  Lines                    108345   108399    +54     
  Branches                  30250    29805   -445     
======================================================
+ Hits                      89137    89183    +46     
- Misses                    18877    18889    +12     
+ Partials                    331      327     -4     
Flag Coverage Δ
e2e 67.51% <36.20%> (-0.01%) ⬇️
unit 74.07% <88.52%> (+<0.01%) ⬆️

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

Files with missing lines Coverage Δ
src/lib/litegraph/src/node/NodeInputSlot.ts 98.03% <100.00%> (+0.42%) ⬆️
src/lib/litegraph/src/node/NodeOutputSlot.ts 93.58% <100.00%> (+0.94%) ⬆️
src/lib/litegraph/src/node/restoreLegacyLink.ts 77.77% <77.77%> (ø)

... and 10 files with indirect coverage changes

🚀 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.

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

Labels

risk:R2 PR risk grade (advisory shadow check; grader-owned)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants