diff --git a/dev/macos-cpu/index.html b/dev/macos-cpu/index.html
index ea3b66c..ff13a85 100644
--- a/dev/macos-cpu/index.html
+++ b/dev/macos-cpu/index.html
@@ -935,7 +935,7 @@
@@ -974,7 +974,7 @@
pass
- 40.69s
+ 33.86s
@@ -1040,9 +1040,9 @@
});
}
- const workflowData = {"merge_splats": {"src": "screenshots/merge_splats_executed.png", "title": "merge_splats", "status": "pass", "duration": "40.69", "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.7s)\n [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True\n Frame 3 saved (frame_002.jpg, t=4.4s)\n [capture-periodic] freeze=2ms shot=148ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:09, 2.77it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:06, 3.90it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:05, 4.24it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:04, 4.88it/s]\n [capture-loop] iter=50 t=8.3s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.7/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=89% browser_rss=0.77GB\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:01<00:04, 5.05it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:01<00:04, 4.81it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:04, 4.78it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:04, 4.62it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:03, 4.75it/s]\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:02<00:03, 4.83it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:02<00:03, 5.22it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:02<00:02, 5.38it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:02<00:02, 5.76it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:02<00:02, 6.11it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:02, 5.73it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:03<00:01, 5.74it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:03<00:01, 6.02it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:03<00:01, 5.65it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:03<00:01, 5.75it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:03<00:01, 5.29it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:04<00:01, 5.61it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:04<00:00, 5.64it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:04<00:00, 5.55it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:04<00:00, 5.29it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:04<00:00, 5.42it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:04<00:00, 5.66it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 6.03it/s]\n [capture-loop] iter=100 t=14.2s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=93% browser_rss=0.77GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 5.30it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 6.53it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 6.41it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 6.42it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 6.61it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 5.46it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:01, 5.95it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:01<00:01, 5.71it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:01, 5.43it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 5.83it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 6.23it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 6.53it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 6.43it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:02<00:00, 6.60it/s]\n [capture-loop] iter=150 t=20.0s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=88% browser_rss=0.76GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:02<00:00, 6.50it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 22.39 seconds\n Node executed (2 total), capturing...\n Frame 4 saved (frame_003.jpg, t=23.0s)\n [capture-node] freeze=15ms shot=126ms unfreeze=0ms saved=True\n Execution complete (t=23.0s)\n [3d-wait] Phase 1: Waiting for 'Loading 3D Model' text to disappear...\n [3d-wait] Phase 1 done in 0.0s\n [3d-wait] Phase 2: iframes=2\n [3d-wait] iframe viewer_ready=True (matched 1 console logs)\n [3d-wait] Unfrozen in 0.008s, rendering for 5s...\n [3d-wait] JS halted via CDP after 5.0s\n [3d-wait] Re-frozen in 6.2s\n [3d-wait] Total 3D wait: 6.2s\n Captured 4 unique frames over 29.38s\n [debug] iframes: 2\n [debug] iframe[0]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True\n [debug] iframe[1]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True\n [timing] trigger_3d_previews: 0.0s\n Saved high-quality screenshot: merge_splats_executed.png\n [timing] final_screenshot: 0.4s\n Captured 5 video frames", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit", "cpu": "arm"}}};
+ const workflowData = {"merge_splats": {"src": "screenshots/merge_splats_executed.png", "title": "merge_splats", "status": "pass", "duration": "33.86", "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True\n Frame 3 saved (frame_002.jpg, t=3.6s)\n [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n Frame 4 saved (frame_003.jpg, t=5.9s)\n [capture-periodic] freeze=3ms shot=124ms unfreeze=6ms saved=True\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:06, 3.74it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:04, 5.42it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:04, 5.93it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:03, 6.77it/s]\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:00<00:02, 7.34it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:00<00:02, 7.31it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:02, 7.56it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:02, 7.74it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:02, 7.84it/s]\n [capture-loop] iter=50 t=7.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=77% browser_rss=0.79GB\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:01<00:02, 8.01it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:01<00:01, 8.06it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:01<00:01, 7.88it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:01<00:01, 7.90it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:01<00:01, 7.96it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:01, 8.14it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:02<00:01, 8.27it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:02<00:01, 8.20it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:02<00:01, 8.22it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:02<00:00, 8.25it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:02<00:00, 8.12it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:02<00:00, 8.01it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:02<00:00, 8.06it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:03<00:00, 7.93it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:03<00:00, 8.02it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:03<00:00, 8.13it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:03<00:00, 7.97it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.34it/s]\n [capture-loop] iter=100 t=13.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=8 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=81% browser_rss=0.79GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.61it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 7.78it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 7.87it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 7.77it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 7.57it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 7.81it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:00, 8.04it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:00<00:00, 8.18it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:00, 7.82it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 7.75it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 7.99it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 8.16it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 8.15it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:01<00:00, 7.87it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:01<00:00, 8.30it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 17.87 seconds\n Node executed (2 total), capturing...\n Frame 5 saved (frame_004.jpg, t=18.3s)\n [capture-node] freeze=13ms shot=162ms unfreeze=0ms saved=True\n Execution complete (t=18.3s)\n [3d-wait] Phase 1: Waiting for 'Loading 3D Model' text to disappear...\n [3d-wait] Phase 1 done in 0.3s\n [3d-wait] Phase 2: iframes=2\n [3d-wait] iframe viewer_ready=True (matched 1 console logs)\n [3d-wait] Unfrozen in 0.002s, rendering for 5s...\n [3d-wait] JS halted via CDP after 5.2s\n [3d-wait] Re-frozen in 6.3s\n [3d-wait] Total 3D wait: 6.7s\n Captured 5 unique frames over 25.24s\n [debug] iframes: 2\n [debug] iframe[0]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True\n [debug] iframe[1]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True\n [timing] trigger_3d_previews: 0.0s\n Saved high-quality screenshot: merge_splats_executed.png\n [timing] final_screenshot: 0.2s\n Captured 6 video frames", "hardware": {"os": "macOS-15.7.4-arm64-arm-64bit-Mach-O", "cpu": "arm"}}};
const workflowNames = Object.keys(workflowData);
- const videoData = {"merge_splats": {"frames": [{"file": "frame_000.jpg", "time": 0.0, "log": "Capturing execution frames: merge_splats.json"}, {"file": "frame_001.jpg", "time": 0.72, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply"}, {"file": "frame_002.jpg", "time": 4.44, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.7s)\n [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True"}, {"file": "frame_003.jpg", "time": 22.99, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.7s)\n [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True\n Frame 3 saved (frame_002.jpg, t=4.4s)\n [capture-periodic] freeze=2ms shot=148ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:09, 2.77it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:06, 3.90it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:05, 4.24it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:04, 4.88it/s]\n [capture-loop] iter=50 t=8.3s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.7/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=89% browser_rss=0.77GB\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:01<00:04, 5.05it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:01<00:04, 4.81it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:04, 4.78it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:04, 4.62it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:03, 4.75it/s]\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:02<00:03, 4.83it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:02<00:03, 5.22it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:02<00:02, 5.38it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:02<00:02, 5.76it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:02<00:02, 6.11it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:02, 5.73it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:03<00:01, 5.74it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:03<00:01, 6.02it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:03<00:01, 5.65it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:03<00:01, 5.75it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:03<00:01, 5.29it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:04<00:01, 5.61it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:04<00:00, 5.64it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:04<00:00, 5.55it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:04<00:00, 5.29it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:04<00:00, 5.42it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:04<00:00, 5.66it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 6.03it/s]\n [capture-loop] iter=100 t=14.2s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=93% browser_rss=0.77GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 5.30it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 6.53it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 6.41it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 6.42it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 6.61it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 5.46it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:01, 5.95it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:01<00:01, 5.71it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:01, 5.43it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 5.83it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 6.23it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 6.53it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 6.43it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:02<00:00, 6.60it/s]\n [capture-loop] iter=150 t=20.0s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=88% browser_rss=0.76GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:02<00:00, 6.50it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 22.39 seconds"}, {"file": "frame_004.jpg", "time": 31.820918083190918, "log": "Final screenshot"}], "total_time": 29.38}};
+ const videoData = {"merge_splats": {"frames": [{"file": "frame_000.jpg", "time": 0.0, "log": "Capturing execution frames: merge_splats.json"}, {"file": "frame_001.jpg", "time": 0.42, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply"}, {"file": "frame_002.jpg", "time": 3.62, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True"}, {"file": "frame_003.jpg", "time": 5.86, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True\n Frame 3 saved (frame_002.jpg, t=3.6s)\n [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True"}, {"file": "frame_004.jpg", "time": 18.33, "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True\n Frame 3 saved (frame_002.jpg, t=3.6s)\n [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n Frame 4 saved (frame_003.jpg, t=5.9s)\n [capture-periodic] freeze=3ms shot=124ms unfreeze=6ms saved=True\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:06, 3.74it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:04, 5.42it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:04, 5.93it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:03, 6.77it/s]\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:00<00:02, 7.34it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:00<00:02, 7.31it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:02, 7.56it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:02, 7.74it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:02, 7.84it/s]\n [capture-loop] iter=50 t=7.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=77% browser_rss=0.79GB\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:01<00:02, 8.01it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:01<00:01, 8.06it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:01<00:01, 7.88it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:01<00:01, 7.90it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:01<00:01, 7.96it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:01, 8.14it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:02<00:01, 8.27it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:02<00:01, 8.20it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:02<00:01, 8.22it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:02<00:00, 8.25it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:02<00:00, 8.12it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:02<00:00, 8.01it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:02<00:00, 8.06it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:03<00:00, 7.93it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:03<00:00, 8.02it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:03<00:00, 8.13it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:03<00:00, 7.97it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.34it/s]\n [capture-loop] iter=100 t=13.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=8 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=81% browser_rss=0.79GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.61it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 7.78it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 7.87it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 7.77it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 7.57it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 7.81it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:00, 8.04it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:00<00:00, 8.18it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:00, 7.82it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 7.75it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 7.99it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 8.16it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 8.15it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:01<00:00, 7.87it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:01<00:00, 8.30it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 17.87 seconds"}, {"file": "frame_005.jpg", "time": 27.46103811264038, "log": "Final screenshot"}], "total_time": 25.24}};
const inIframe = window !== window.top;
let currentWorkflow = null;
diff --git a/dev/macos-cpu/logs/merge_splats.log b/dev/macos-cpu/logs/merge_splats.log
index 11b2de3..2af1c22 100644
--- a/dev/macos-cpu/logs/merge_splats.log
+++ b/dev/macos-cpu/logs/merge_splats.log
@@ -11,22 +11,22 @@ Capturing execution frames: merge_splats.json
[ComfyUI] Node 3: GaussianMerge
[ComfyUI] Inputs: {"target_count": 100000, "output_filename": "merged", "opacity_threshold": 0, "k": 24, "ply_path": ["1", 0]}
[ComfyUI] Node 4: PreviewGaussians
+ Queuing workflow for execution...
[ComfyUI] Inputs: {"fov_degrees": 50, "image_width": 512, "image_height": 512, "renderer": "spark", "transport_format": "ply", "ply_path": ["3", 0]}
- [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb
+ [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68
[ComfyUI] Calling execution.validate_prompt()...
[ComfyUI] Validation result: valid=True
[ComfyUI] === Validation PASSED ===
- Queuing workflow for execution...
[ComfyUI] got prompt
- [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
- [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
+ [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
+ [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
Node executed (1 total), capturing...
- Frame 2 saved (frame_001.jpg, t=0.7s)
- [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True
- Frame 3 saved (frame_002.jpg, t=4.4s)
- [capture-periodic] freeze=2ms shot=148ms unfreeze=2ms saved=True
+ Frame 2 saved (frame_001.jpg, t=0.4s)
+ [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True
+ Frame 3 saved (frame_002.jpg, t=3.6s)
+ [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True
[ComfyUI]
- [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
+ [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
[ComfyUI] Initial splats: 200000
[ComfyUI] Pruned splats: 200000, target: 100000
[ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207
@@ -34,76 +34,77 @@ Capturing execution frames: merge_splats.json
[ComfyUI] Original count: 200000, after opacity pruning: 200000
[ComfyUI] After opacity pruning, 200000 splats remain.
[ComfyUI] Pass 1: 200000 splats
+ Frame 4 saved (frame_003.jpg, t=5.9s)
+ [capture-periodic] freeze=3ms shot=124ms unfreeze=6ms saved=True
[ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]
- [ComfyUI] Edge costs: 4%|▎ | 1/27 [00:00<00:09, 2.77it/s]
- [ComfyUI] Edge costs: 7%|▋ | 2/27 [00:00<00:06, 3.90it/s]
- [ComfyUI] Edge costs: 11%|█ | 3/27 [00:00<00:05, 4.24it/s]
- [ComfyUI] Edge costs: 15%|█▍ | 4/27 [00:00<00:04, 4.88it/s]
- [capture-loop] iter=50 t=8.3s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.7/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=89% browser_rss=0.77GB
- [ComfyUI] Edge costs: 19%|█▊ | 5/27 [00:01<00:04, 5.05it/s]
- [ComfyUI] Edge costs: 22%|██▏ | 6/27 [00:01<00:04, 4.81it/s]
- [ComfyUI] Edge costs: 26%|██▌ | 7/27 [00:01<00:04, 4.78it/s]
- [ComfyUI] Edge costs: 30%|██▉ | 8/27 [00:01<00:04, 4.62it/s]
- [ComfyUI] Edge costs: 33%|███▎ | 9/27 [00:01<00:03, 4.75it/s]
- [ComfyUI] Edge costs: 37%|███▋ | 10/27 [00:02<00:03, 4.83it/s]
- [ComfyUI] Edge costs: 41%|████ | 11/27 [00:02<00:03, 5.22it/s]
- [ComfyUI] Edge costs: 44%|████▍ | 12/27 [00:02<00:02, 5.38it/s]
- [ComfyUI] Edge costs: 48%|████▊ | 13/27 [00:02<00:02, 5.76it/s]
- [ComfyUI] Edge costs: 52%|█████▏ | 14/27 [00:02<00:02, 6.11it/s]
- [ComfyUI] Edge costs: 56%|█████▌ | 15/27 [00:02<00:02, 5.73it/s]
- [ComfyUI] Edge costs: 59%|█████▉ | 16/27 [00:03<00:01, 5.74it/s]
- [ComfyUI] Edge costs: 63%|██████▎ | 17/27 [00:03<00:01, 6.02it/s]
- [ComfyUI] Edge costs: 67%|██████▋ | 18/27 [00:03<00:01, 5.65it/s]
- [ComfyUI] Edge costs: 70%|███████ | 19/27 [00:03<00:01, 5.75it/s]
- [ComfyUI] Edge costs: 74%|███████▍ | 20/27 [00:03<00:01, 5.29it/s]
- [ComfyUI] Edge costs: 78%|███████▊ | 21/27 [00:04<00:01, 5.61it/s]
- [ComfyUI] Edge costs: 81%|████████▏ | 22/27 [00:04<00:00, 5.64it/s]
- [ComfyUI] Edge costs: 85%|████████▌ | 23/27 [00:04<00:00, 5.55it/s]
- [ComfyUI] Edge costs: 89%|████████▉ | 24/27 [00:04<00:00, 5.29it/s]
- [ComfyUI] Edge costs: 93%|█████████▎| 25/27 [00:04<00:00, 5.42it/s]
- [ComfyUI] Edge costs: 96%|█████████▋| 26/27 [00:04<00:00, 5.66it/s]
- [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:05<00:00, 6.03it/s]
- [capture-loop] iter=100 t=14.2s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=93% browser_rss=0.77GB
- [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:05<00:00, 5.30it/s]
+ [ComfyUI] Edge costs: 4%|▎ | 1/27 [00:00<00:06, 3.74it/s]
+ [ComfyUI] Edge costs: 7%|▋ | 2/27 [00:00<00:04, 5.42it/s]
+ [ComfyUI] Edge costs: 11%|█ | 3/27 [00:00<00:04, 5.93it/s]
+ [ComfyUI] Edge costs: 15%|█▍ | 4/27 [00:00<00:03, 6.77it/s]
+ [ComfyUI] Edge costs: 19%|█▊ | 5/27 [00:00<00:02, 7.34it/s]
+ [ComfyUI] Edge costs: 22%|██▏ | 6/27 [00:00<00:02, 7.31it/s]
+ [ComfyUI] Edge costs: 26%|██▌ | 7/27 [00:01<00:02, 7.56it/s]
+ [ComfyUI] Edge costs: 30%|██▉ | 8/27 [00:01<00:02, 7.74it/s]
+ [ComfyUI] Edge costs: 33%|███▎ | 9/27 [00:01<00:02, 7.84it/s]
+ [capture-loop] iter=50 t=7.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=77% browser_rss=0.79GB
+ [ComfyUI] Edge costs: 37%|███▋ | 10/27 [00:01<00:02, 8.01it/s]
+ [ComfyUI] Edge costs: 41%|████ | 11/27 [00:01<00:01, 8.06it/s]
+ [ComfyUI] Edge costs: 44%|████▍ | 12/27 [00:01<00:01, 7.88it/s]
+ [ComfyUI] Edge costs: 48%|████▊ | 13/27 [00:01<00:01, 7.90it/s]
+ [ComfyUI] Edge costs: 52%|█████▏ | 14/27 [00:01<00:01, 7.96it/s]
+ [ComfyUI] Edge costs: 56%|█████▌ | 15/27 [00:02<00:01, 8.14it/s]
+ [ComfyUI] Edge costs: 59%|█████▉ | 16/27 [00:02<00:01, 8.27it/s]
+ [ComfyUI] Edge costs: 63%|██████▎ | 17/27 [00:02<00:01, 8.20it/s]
+ [ComfyUI] Edge costs: 67%|██████▋ | 18/27 [00:02<00:01, 8.22it/s]
+ [ComfyUI] Edge costs: 70%|███████ | 19/27 [00:02<00:00, 8.25it/s]
+ [ComfyUI] Edge costs: 74%|███████▍ | 20/27 [00:02<00:00, 8.12it/s]
+ [ComfyUI] Edge costs: 78%|███████▊ | 21/27 [00:02<00:00, 8.01it/s]
+ [ComfyUI] Edge costs: 81%|████████▏ | 22/27 [00:02<00:00, 8.06it/s]
+ [ComfyUI] Edge costs: 85%|████████▌ | 23/27 [00:03<00:00, 7.93it/s]
+ [ComfyUI] Edge costs: 89%|████████▉ | 24/27 [00:03<00:00, 8.02it/s]
+ [ComfyUI] Edge costs: 93%|█████████▎| 25/27 [00:03<00:00, 8.13it/s]
+ [ComfyUI] Edge costs: 96%|█████████▋| 26/27 [00:03<00:00, 7.97it/s]
+ [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:03<00:00, 7.34it/s]
+ [capture-loop] iter=100 t=13.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=8 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=81% browser_rss=0.79GB
+ [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:03<00:00, 7.61it/s]
[ComfyUI] edges: 2697139, pairs: 97792 (need 100000)
[ComfyUI]
[ComfyUI] Merging 97792 pairs
[ComfyUI] Pass 2: 102208 splats
[ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]
- [ComfyUI] Edge costs: 7%|▋ | 1/14 [00:00<00:01, 6.53it/s]
- [ComfyUI] Edge costs: 14%|█▍ | 2/14 [00:00<00:01, 6.41it/s]
- [ComfyUI] Edge costs: 21%|██▏ | 3/14 [00:00<00:01, 6.42it/s]
- [ComfyUI] Edge costs: 29%|██▊ | 4/14 [00:00<00:01, 6.61it/s]
- [ComfyUI] Edge costs: 36%|███▌ | 5/14 [00:00<00:01, 5.46it/s]
- [ComfyUI] Edge costs: 43%|████▎ | 6/14 [00:00<00:01, 5.95it/s]
- [ComfyUI] Edge costs: 50%|█████ | 7/14 [00:01<00:01, 5.71it/s]
- [ComfyUI] Edge costs: 57%|█████▋ | 8/14 [00:01<00:01, 5.43it/s]
- [ComfyUI] Edge costs: 64%|██████▍ | 9/14 [00:01<00:00, 5.83it/s]
- [ComfyUI] Edge costs: 71%|███████▏ | 10/14 [00:01<00:00, 6.23it/s]
- [ComfyUI] Edge costs: 79%|███████▊ | 11/14 [00:01<00:00, 6.53it/s]
- [ComfyUI] Edge costs: 86%|████████▌ | 12/14 [00:01<00:00, 6.43it/s]
- [ComfyUI] Edge costs: 93%|█████████▎| 13/14 [00:02<00:00, 6.60it/s]
- [capture-loop] iter=150 t=20.0s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=88% browser_rss=0.76GB
- [ComfyUI] Edge costs: 100%|██████████| 14/14 [00:02<00:00, 6.50it/s]
- [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)
- [ComfyUI] Prompt executed in 22.39 seconds
+ [ComfyUI] Edge costs: 7%|▋ | 1/14 [00:00<00:01, 7.78it/s]
+ [ComfyUI] Edge costs: 14%|█▍ | 2/14 [00:00<00:01, 7.87it/s]
+ [ComfyUI] Edge costs: 21%|██▏ | 3/14 [00:00<00:01, 7.77it/s]
+ [ComfyUI] Edge costs: 29%|██▊ | 4/14 [00:00<00:01, 7.57it/s]
+ [ComfyUI] Edge costs: 36%|███▌ | 5/14 [00:00<00:01, 7.81it/s]
+ [ComfyUI] Edge costs: 43%|████▎ | 6/14 [00:00<00:00, 8.04it/s]
+ [ComfyUI] Edge costs: 50%|█████ | 7/14 [00:00<00:00, 8.18it/s]
+ [ComfyUI] Edge costs: 57%|█████▋ | 8/14 [00:01<00:00, 7.82it/s]
+ [ComfyUI] Edge costs: 64%|██████▍ | 9/14 [00:01<00:00, 7.75it/s]
+ [ComfyUI] Edge costs: 71%|███████▏ | 10/14 [00:01<00:00, 7.99it/s]
+ [ComfyUI] Edge costs: 79%|███████▊ | 11/14 [00:01<00:00, 8.16it/s]
+ [ComfyUI] Edge costs: 86%|████████▌ | 12/14 [00:01<00:00, 8.15it/s]
+ [ComfyUI] Edge costs: 93%|█████████▎| 13/14 [00:01<00:00, 7.87it/s]
+ [ComfyUI] Edge costs: 100%|██████████| 14/14 [00:01<00:00, 8.30it/s]
+ [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)
+ [ComfyUI] Prompt executed in 17.87 seconds
Node executed (2 total), capturing...
- Frame 4 saved (frame_003.jpg, t=23.0s)
- [capture-node] freeze=15ms shot=126ms unfreeze=0ms saved=True
- Execution complete (t=23.0s)
+ Frame 5 saved (frame_004.jpg, t=18.3s)
+ [capture-node] freeze=13ms shot=162ms unfreeze=0ms saved=True
+ Execution complete (t=18.3s)
[3d-wait] Phase 1: Waiting for 'Loading 3D Model' text to disappear...
- [3d-wait] Phase 1 done in 0.0s
+ [3d-wait] Phase 1 done in 0.3s
[3d-wait] Phase 2: iframes=2
[3d-wait] iframe viewer_ready=True (matched 1 console logs)
- [3d-wait] Unfrozen in 0.008s, rendering for 5s...
- [3d-wait] JS halted via CDP after 5.0s
- [3d-wait] Re-frozen in 6.2s
- [3d-wait] Total 3D wait: 6.2s
- Captured 4 unique frames over 29.38s
+ [3d-wait] Unfrozen in 0.002s, rendering for 5s...
+ [3d-wait] JS halted via CDP after 5.2s
+ [3d-wait] Re-frozen in 6.3s
+ [3d-wait] Total 3D wait: 6.7s
+ Captured 5 unique frames over 25.24s
[debug] iframes: 2
- [debug] iframe[0]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
- [debug] iframe[1]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
+ [debug] iframe[0]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
+ [debug] iframe[1]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
[timing] trigger_3d_previews: 0.0s
Saved high-quality screenshot: merge_splats_executed.png
- [timing] final_screenshot: 0.4s
- Captured 5 video frames
\ No newline at end of file
+ [timing] final_screenshot: 0.2s
+ Captured 6 video frames
\ No newline at end of file
diff --git a/dev/macos-cpu/logs/merge_splats_console.log b/dev/macos-cpu/logs/merge_splats_console.log
index da44f96..7ac3c95 100644
--- a/dev/macos-cpu/logs/merge_splats_console.log
+++ b/dev/macos-cpu/logs/merge_splats_console.log
@@ -10,11 +10,11 @@
[Console-warning] THREE.WARNING: Multiple instances of Three.js being imported.
[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "three". Relati…ences must start with either "/", "./", or "../".}
[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "three". Relati…ences must start with either "/", "./", or "../".}
-[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "playcanvas". R…ences must start with either "/", "./", or "../".}
+[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "three". Relati…ences must start with either "/", "./", or "../".}
[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "playcanvas". R…ences must start with either "/", "./", or "../".}
[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "playcanvas". R…ences must start with either "/", "./", or "../".}
[Console-log] [GaussianPack] Loading extension...
-[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "three". Relati…ences must start with either "/", "./", or "../".}
+[Console-error] [vite:preloadError] {url: null, fileType: unknown, chunkName: null, message: Failed to resolve module specifier "playcanvas". R…ences must start with either "/", "./", or "../".}
[Console-warning] [MaskEditor] ComfyApp.open_maskeditor is deprecated. Plugins should migrate to using the command system or direct node context menu integration.
[Console-log] [GaussianPack] Registering Preview Gaussians node
[Console-log] [GaussianViewer] Ready — waiting for LOAD_MESH_DATA
@@ -24,16 +24,11 @@
[Console-log] [GaussianPack] Resized node to: 512 x 572 (aspect ratio: 1.00 )
[Console-log] [GaussianPack] fetch start: /view?filename=apple.ply&type=input&subfolder=
[Console-log] [GaussianPack] fetch response 200; content-length=49601531
-[Console-log] [GaussianPack] download 20% 9.7/47.3 MB
[Console-log] [GaussianPack] download 25% 12.0/47.3 MB
-[Console-log] [GaussianPack] download 30% 14.4/47.3 MB
-[Console-log] [GaussianPack] download 35% 16.6/47.3 MB
-[Console-log] [GaussianPack] download 40% 18.9/47.3 MB
-[Console-log] [GaussianPack] download 45% 21.6/47.3 MB
[Console-log] [GaussianPack] download 50% 24.0/47.3 MB
[Console-log] [GaussianPack] download 80% 38.0/47.3 MB
[Console-log] [GaussianPack] download 100% 47.3/47.3 MB
-[Console-log] [GaussianPack] fetch done: 49601531 bytes in 541 ms (87.4 MB/s)
+[Console-log] [GaussianPack] fetch done: 49601531 bytes in 463 ms (102.2 MB/s)
[Console-log] [GaussianPack] posting LOAD_MESH_DATA to iframe, renderer: spark filename: apple.ply
[Console-log] [GaussianViewer] Received LOAD_MESH_DATA, size: 49601531 renderer: spark
[Console-log] [GaussianViewer] ensureRenderer('spark') starting...
@@ -43,11 +38,13 @@
[Console-log] [GaussianViewer] Adapter ready: spark
[Console-log] [GaussianViewer] Loading splat (49,601,531 bytes) via spark...
[Console-log] [Spark] new SplatMesh url=apple.ply
+[Console-log] [Spark] parse 40%
[Console-log] [Spark] parse 51%
[Console-log] [Spark] parse 80%
+[Console-log] [Spark] parse 90%
[Console-log] [Spark] parse 100%
-[Console-log] [Spark] loaded 200000 splats in 724 ms
-[Console-log] [GaussianViewer] adapter.loadSplat resolved in 725 ms
+[Console-log] [Spark] loaded 200000 splats in 435 ms
+[Console-log] [GaussianViewer] adapter.loadSplat resolved in 436 ms
[Console-log] [GaussianViewer] frameOnBounds: bounds center=(0.002, -0.005, -0.015) size=(1.808, 1.857, 1.969)
[Console-log] [GaussianViewer] Framed: cam=(0.00, -0.01, -2.44) target=(0.00, -0.01, -0.02) maxExtent=1.97 radius=2.43 fov=50
[Console-log] [GaussianViewer] Loaded successfully
@@ -57,9 +54,8 @@
[Console-log] [GaussianPack] fetch response 200; content-length=24801531
[Console-log] [GaussianPack] download 25% 6.0/23.7 MB
[Console-log] [GaussianPack] download 50% 12.0/23.7 MB
-[Console-log] [GaussianPack] download 70% 16.8/23.7 MB
[Console-log] [GaussianPack] download 100% 23.7/23.7 MB
-[Console-log] [GaussianPack] fetch done: 24801531 bytes in 940 ms (25.2 MB/s)
+[Console-log] [GaussianPack] fetch done: 24801531 bytes in 488 ms (48.4 MB/s)
[Console-log] [GaussianPack] posting LOAD_MESH_DATA to iframe, renderer: spark filename: merged.ply
[Console-log] [GaussianViewer] Received LOAD_MESH_DATA, size: 24801531 renderer: spark
[Console-log] [GaussianViewer] ensureRenderer('spark') starting...
@@ -69,10 +65,12 @@
[Console-log] [GaussianViewer] Adapter ready: spark
[Console-log] [GaussianViewer] Loading splat (24,801,531 bytes) via spark...
[Console-log] [Spark] new SplatMesh url=merged.ply
+[Console-log] [Spark] parse 10%
[Console-log] [Spark] parse 51%
+[Console-log] [Spark] parse 80%
[Console-log] [Spark] parse 100%
-[Console-log] [Spark] loaded 100000 splats in 542 ms
-[Console-log] [GaussianViewer] adapter.loadSplat resolved in 543 ms
+[Console-log] [Spark] loaded 100000 splats in 292 ms
+[Console-log] [GaussianViewer] adapter.loadSplat resolved in 292 ms
[Console-log] [GaussianViewer] frameOnBounds: bounds center=(0.001, -0.005, -0.015) size=(1.807, 1.857, 1.968)
[Console-log] [GaussianViewer] Framed: cam=(0.00, -0.01, -2.44) target=(0.00, -0.01, -0.02) maxExtent=1.97 radius=2.43 fov=50
[Console-log] [GaussianViewer] Loaded successfully
\ No newline at end of file
diff --git a/dev/macos-cpu/logs/merge_splats_resources.csv b/dev/macos-cpu/logs/merge_splats_resources.csv
index 27742fc..660b119 100644
--- a/dev/macos-cpu/logs/merge_splats_resources.csv
+++ b/dev/macos-cpu/logs/merge_splats_resources.csv
@@ -1,40 +1,33 @@
# total_ram_gb=7.0
t,ram_gb,vram_gb
-0.0,0.51,
-1.0,0.52,
-2.2,0.52,
-3.2,0.52,
-4.3,0.52,
-5.4,0.52,
-6.5,0.52,
-7.6,0.52,
-8.6,0.52,
-9.7,0.7,
-10.7,0.8,
-11.8,0.78,
-12.9,0.78,
-14.0,0.78,
-15.1,0.78,
-16.2,0.85,
-17.4,0.89,
-18.5,0.89,
-19.5,0.89,
-20.6,0.89,
-21.7,0.93,
-22.8,0.93,
-23.9,0.95,
-24.9,0.95,
-26.1,0.94,
-27.2,0.96,
-28.2,0.96,
-29.3,0.95,
-30.4,0.95,
-31.5,0.95,
-32.5,0.94,
-33.6,0.93,
-34.7,0.93,
-35.7,0.93,
-36.8,0.93,
-37.9,0.93,
-39.1,0.93,
-40.1,0.93,
+0.0,0.5,
+1.1,0.51,
+2.3,0.51,
+3.3,0.51,
+4.4,0.51,
+5.4,0.51,
+6.5,0.51,
+7.5,0.71,
+8.6,0.76,
+9.8,0.76,
+10.9,0.76,
+11.9,0.76,
+13.1,0.86,
+14.2,0.89,
+15.2,0.89,
+16.4,0.94,
+17.5,0.93,
+18.6,0.94,
+19.7,0.94,
+20.8,0.95,
+21.9,0.96,
+23.1,0.96,
+24.2,0.96,
+25.2,0.94,
+26.3,0.94,
+27.4,0.94,
+28.5,0.94,
+29.6,0.94,
+30.6,0.94,
+31.7,0.94,
+32.8,0.94,
diff --git a/dev/macos-cpu/results.json b/dev/macos-cpu/results.json
index e40a2e0..d7b47ed 100644
--- a/dev/macos-cpu/results.json
+++ b/dev/macos-cpu/results.json
@@ -1,12 +1,12 @@
{
- "timestamp": "2026-05-16T18:08:42.312640+00:00",
+ "timestamp": "2026-05-16T18:49:48.512464+00:00",
"platform": "macos",
"hardware": {
- "os": "macOS-15.7.4-arm64-arm-64bit",
+ "os": "macOS-15.7.4-arm64-arm-64bit-Mach-O",
"cpu": "arm"
},
- "commit_hash": "b8de26b68c86492ec5a22cb7d73b11a347f6f1d3",
- "run_url": "https://github.com/PozzettiAndrea/comfy-gpu-ci/actions/runs/25969150936",
+ "commit_hash": "dbfe9ebfc35df61b0a91eee45eb331cfaf398146",
+ "run_url": "https://github.com/PozzettiAndrea/comfy-gpu-ci/actions/runs/25969964901",
"success": true,
"summary": {
"total": 1,
@@ -17,10 +17,10 @@
{
"name": "merge_splats",
"status": "pass",
- "duration_seconds": 40.69,
+ "duration_seconds": 33.86,
"error": null,
"hardware": {
- "os": "macOS-15.7.4-arm64-arm-64bit",
+ "os": "macOS-15.7.4-arm64-arm-64bit-Mach-O",
"cpu": "arm"
},
"resources": {
@@ -29,7 +29,7 @@
"avg": 0.81
},
"total_ram_gb": 7.0,
- "samples": 38
+ "samples": 31
}
}
]
diff --git a/dev/macos-cpu/screenshots/merge_splats_executed.png b/dev/macos-cpu/screenshots/merge_splats_executed.png
index 397d24e..8420f20 100644
Binary files a/dev/macos-cpu/screenshots/merge_splats_executed.png and b/dev/macos-cpu/screenshots/merge_splats_executed.png differ
diff --git a/dev/macos-cpu/session.log b/dev/macos-cpu/session.log
index 699e65f..283455f 100644
--- a/dev/macos-cpu/session.log
+++ b/dev/macos-cpu/session.log
@@ -1,4 +1,4 @@
-[00:00] Crash dump logging enabled: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1806/dev/macos-cpu/crash_dump.log
+[00:00] Crash dump logging enabled: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1848/dev/macos-cpu/crash_dump.log
[00:00]
[00:00] [1/5] SYNTAX
[00:00] ----------------------------------------
@@ -17,230 +17,231 @@
[00:00]
Setting up ComfyUI...
[00:00] Cloning ComfyUI (latest)...
-[00:00] Running: git clone --depth 1 https://github.com/comfyanonymous/ComfyUI.git /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI
-[00:02] Creating virtual environment...
-[00:02] Running: /Library/Frameworks/Python.framework/Versions/3.11/bin/python -m venv /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv
-[00:06] Installing uv into venv...
-[00:06] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/bin/python -m pip install uv
-[00:07] Installing PyTorch...
-[00:07] Pinning torch family: torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0
-[00:07] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/bin/python -m uv pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0
-[00:17] Installing ComfyUI requirements...
-[00:17] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/bin/python -m uv pip install -r /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/requirements.txt
-[00:29]
+[00:00] Running: git clone --depth 1 https://github.com/comfyanonymous/ComfyUI.git /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI
+[00:01] Creating virtual environment...
+[00:01] Running: /Library/Frameworks/Python.framework/Versions/3.13/bin/python -m venv /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv
+[00:02] Installing uv into venv...
+[00:02] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/bin/python -m pip install uv
+[00:03] Installing PyTorch...
+[00:03] Pinning torch family: torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0
+[00:03] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/bin/python -m uv pip install torch==2.10.0 torchvision==0.25.0 torchaudio==2.10.0
+[00:10] Installing ComfyUI requirements...
+[00:10] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/bin/python -m uv pip install -r /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/requirements.txt
+[00:18]
Installing custom node...
-[00:29] Copying ComfyUI-GaussianPack to custom_nodes/...
-[00:29] Installing node requirements...
-[00:29] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/bin/python -m uv pip install -r /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/ComfyUI-GaussianPack/requirements.txt
-[00:33] Installing validation endpoint...
-[00:33] Cloning PozzettiAndrea/ComfyUI-validate-endpoint...
-[00:33] Running: git clone --depth 1 https://x-access-token:***@github.com/PozzettiAndrea/ComfyUI-validate-endpoint.git /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/ComfyUI-validate-endpoint
-[00:33] [INSTALL] PASSED
-[00:33]
-[00:33] [3/5] REGISTRATION
-[00:33] ----------------------------------------
-[00:33]
+[00:18] Copying ComfyUI-GaussianPack to custom_nodes/...
+[00:18] Installing node requirements...
+[00:18] Running: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/bin/python -m uv pip install -r /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/ComfyUI-GaussianPack/requirements.txt
+[00:20] Installing validation endpoint...
+[00:20] Cloning PozzettiAndrea/ComfyUI-validate-endpoint...
+[00:20] Running: git clone --depth 1 https://x-access-token:***@github.com/PozzettiAndrea/ComfyUI-validate-endpoint.git /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/ComfyUI-validate-endpoint
+[00:20] [INSTALL] PASSED
+[00:20]
+[00:20] [3/5] REGISTRATION
+[00:20] ----------------------------------------
+[00:20]
[DEBUG] server=None, api=None
-[00:33]
+[00:20]
Starting ComfyUI server...
-[00:33] Starting ComfyUI server on port 41888...
-[00:33] Starting ComfyUI server on port 41888...
-[00:33] Waiting for server to be ready (timeout: 600s)...
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.schemas
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.tables
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.types
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.constraints
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.defaults
-[00:35] [ComfyUI] setup plugin alembic.autogenerate.comments
-[00:35] [ComfyUI] Could not autodetect AIMDO implementation, assuming Nvidia
-[00:35] [ComfyUI] comfy-aimdo unsupported operating system: Darwin
-[00:35] [ComfyUI] NOTE: comfy-aimdo currently only supports Windows and Linux
+[00:20] Starting ComfyUI server on port 41896...
+[00:20] Starting ComfyUI server on port 41896...
+[00:20] Waiting for server to be ready (timeout: 600s)...
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.schemas
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.tables
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.types
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.constraints
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.defaults
+[00:21] [ComfyUI] setup plugin alembic.autogenerate.comments
+[00:22] [ComfyUI] Could not autodetect AIMDO implementation, assuming Nvidia
+[00:22] [ComfyUI] comfy-aimdo unsupported operating system: Darwin
+[00:22] [ComfyUI] NOTE: comfy-aimdo currently only supports Windows and Linux
+[00:22] [ComfyUI]
+[00:22] [ComfyUI] Prestartup times for custom nodes:
+[00:22] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/ComfyUI-GaussianPack
+[00:22] [ComfyUI]
+[00:27] [ComfyUI] Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_mxfp8', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_mxfp8', 'scaled_mm_nvfp4']}
+[00:27] [ComfyUI] Found comfy_kitchen backend cuda: {'available': False, 'disabled': True, 'unavailable_reason': 'Extension file not found: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/lib/python3.13/site-packages/comfy_kitchen/backends/cuda/_C.abi3.so', 'capabilities': []}
+[00:27] [ComfyUI] Found comfy_kitchen backend triton: {'available': False, 'disabled': True, 'unavailable_reason': "ImportError: No module named 'triton'", 'capabilities': []}
+[00:27] [ComfyUI] Checkpoint files will always be loaded safely.
+[00:27] [ComfyUI] Total VRAM 7168 MB, total RAM 7168 MB
+[00:27] [ComfyUI] pytorch version: 2.10.0
+[00:27] [ComfyUI] Mac Version (15, 7, 4)
+[00:27] [ComfyUI] Set vram state to: SHARED
+[00:27] [ComfyUI] Device: mps
+[00:28] [ComfyUI] Using sub quadratic optimization for attention, if you have memory or speed issues try using: --use-split-cross-attention
+[00:33] [ComfyUI] Python version: 3.13.13 (v3.13.13:01104ce1beb, Apr 7 2026, 14:43:30) [Clang 16.0.0 (clang-1600.0.26.6)]
+[00:33] [ComfyUI] ComfyUI version: 0.21.1
+[00:33] [ComfyUI] comfy-aimdo version: 0.3.0
+[00:33] [ComfyUI] comfy-kitchen version: 0.2.8
+[00:33] [ComfyUI] ****** User settings have been changed to be stored on the server instead of browser storage. ******
+[00:33] [ComfyUI] ****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******
+[00:33] [ComfyUI] comfyui-frontend-package version: 1.43.18
+[00:33] [ComfyUI] comfyui-workflow-templates version: 0.9.77
+[00:33] [ComfyUI] comfyui-embedded-docs version: 0.5.0
+[00:33] [ComfyUI] comfy-kitchen version: 0.2.8
+[00:33] [ComfyUI] comfy-aimdo version: 0.3.0
+[00:33] [ComfyUI] [Prompt Server] web root: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/venv/lib/python3.13/site-packages/comfyui_frontend_package/static
+[00:33] [ComfyUI] Asset seeder disabled
+[00:35] [ComfyUI] loading...
[00:35] [ComfyUI]
-[00:35] [ComfyUI] Prestartup times for custom nodes:
-[00:35] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/ComfyUI-GaussianPack
+[00:35] [ComfyUI] Import times for custom nodes:
+[00:35] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/websocket_image_save.py
+[00:35] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/ComfyUI-validate-endpoint
+[00:35] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/custom_nodes/ComfyUI-GaussianPack
[00:35] [ComfyUI]
-[00:41] [ComfyUI] Found comfy_kitchen backend eager: {'available': True, 'disabled': False, 'unavailable_reason': None, 'capabilities': ['apply_rope', 'apply_rope1', 'dequantize_mxfp8', 'dequantize_nvfp4', 'dequantize_per_tensor_fp8', 'quantize_mxfp8', 'quantize_nvfp4', 'quantize_per_tensor_fp8', 'scaled_mm_mxfp8', 'scaled_mm_nvfp4']}
-[00:41] [ComfyUI] Found comfy_kitchen backend triton: {'available': False, 'disabled': True, 'unavailable_reason': "ImportError: No module named 'triton'", 'capabilities': []}
-[00:41] [ComfyUI] Found comfy_kitchen backend cuda: {'available': False, 'disabled': True, 'unavailable_reason': 'Extension file not found: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/lib/python3.11/site-packages/comfy_kitchen/backends/cuda/_C.abi3.so', 'capabilities': []}
-[00:41] [ComfyUI] Checkpoint files will always be loaded safely.
-[00:41] [ComfyUI] Total VRAM 7168 MB, total RAM 7168 MB
-[00:41] [ComfyUI] pytorch version: 2.10.0
-[00:41] [ComfyUI] Mac Version (15, 7, 4)
-[00:41] [ComfyUI] Set vram state to: SHARED
-[00:41] [ComfyUI] Device: mps
-[00:42] [ComfyUI] Using sub quadratic optimization for attention, if you have memory or speed issues try using: --use-split-cross-attention
-[00:49] [ComfyUI] Python version: 3.11.9 (v3.11.9:de54cf5be3, Apr 2 2024, 07:12:50) [Clang 13.0.0 (clang-1300.0.29.30)]
-[00:49] [ComfyUI] ComfyUI version: 0.21.1
-[00:49] [ComfyUI] comfy-aimdo version: 0.3.0
-[00:49] [ComfyUI] comfy-kitchen version: 0.2.8
-[00:49] [ComfyUI] ****** User settings have been changed to be stored on the server instead of browser storage. ******
-[00:49] [ComfyUI] ****** For multi-user setups add the --multi-user CLI argument to enable multiple user profiles. ******
-[00:49] [ComfyUI] comfyui-frontend-package version: 1.43.18
-[00:49] [ComfyUI] comfyui-workflow-templates version: 0.9.77
-[00:49] [ComfyUI] comfyui-embedded-docs version: 0.5.0
-[00:49] [ComfyUI] comfy-kitchen version: 0.2.8
-[00:49] [ComfyUI] comfy-aimdo version: 0.3.0
-[00:49] [ComfyUI] [Prompt Server] web root: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/venv/lib/python3.11/site-packages/comfyui_frontend_package/static
-[00:49] [ComfyUI] Asset seeder disabled
-[00:52] [ComfyUI] loading...
-[00:52] [ComfyUI]
-[00:52] [ComfyUI] Import times for custom nodes:
-[00:52] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/websocket_image_save.py
-[00:52] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/ComfyUI-validate-endpoint
-[00:52] [ComfyUI] 0.0 seconds: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/custom_nodes/ComfyUI-GaussianPack
-[00:52] [ComfyUI]
-[00:52] [ComfyUI] Context impl SQLiteImpl.
-[00:52] [ComfyUI] Will assume non-transactional DDL.
-[00:52] [ComfyUI] Context impl SQLiteImpl.
-[00:52] [ComfyUI] Will assume non-transactional DDL.
-[00:52] [ComfyUI] Running upgrade -> 0001_assets, Initial assets schema
-[00:52] [ComfyUI] Revision ID: 0001_assets
-[00:52] [ComfyUI] Revises: None
-[00:52] [ComfyUI] Create Date: 2025-12-10 00:00:00
-[00:52] [ComfyUI] Running upgrade 0001_assets -> 0002_merge_to_asset_references, Merge AssetInfo and AssetCacheState into unified asset_references table.
-[00:52] [ComfyUI] Running upgrade 0002_merge_to_asset_references -> 0003_add_metadata_job_id, Add system_metadata and job_id columns to asset_references.
-[00:52] [ComfyUI] Change preview_id FK from assets.id to asset_references.id.
-[00:52] [ComfyUI] Database upgraded from None to 0003_add_metadata_job_id
-[00:52] [ComfyUI] Starting server
-[00:52] [ComfyUI]
-[00:52] [ComfyUI] To see the GUI go to: http://127.0.0.1:41888
-[00:53] Server responding, waiting for nodes to load...
-[01:13] Server is ready!
-[01:13] Checking for import errors in server logs...
-[01:13] No import errors detected
-[01:13] Found 726 registered nodes
-[01:13] [REGISTRATION] PASSED
-[01:13]
-[01:13] [4/5] INSTANTIATION
-[01:13] ----------------------------------------
-[01:13]
-[DEBUG] server=, api=
-[01:13] Testing node constructors...
-[01:19] All 5 node(s) instantiated successfully!
-[01:19] [INSTANTIATION] PASSED
-[01:19]
-[01:19] [5/5] EXECUTION
-[01:19] ----------------------------------------
-[01:19]
-[DEBUG] server=, api=
-[01:19] CPU runner - will execute 1 workflow(s)
-[01:19] Running 1 workflow(s) (all with videos)...
-[01:19] Installing screenshot dependencies (playwright, pillow)...
-[01:21] Packages installed, downloading chromium browser...
-[01:30] Screenshot dependencies installed successfully
-[01:31] Starting headless browser...
-[01:31] macOS -- using Apple Metal GPU via ANGLE
-[01:32] Capturing execution frames: merge_splats.json
-[01:41] Frame 1 saved (frame_000.jpg, t=0.0s)
-[01:41] Validating workflow...
-[01:41] [ComfyUI] === /validate endpoint called ===
-[01:41] [ComfyUI] Received JSON with keys: ['prompt']
-[01:41] [ComfyUI] Prompt has 4 nodes
-[01:41] [ComfyUI] Node 1: LoadPLY
-[01:41] [ComfyUI] Inputs: {"ply_file": "apple.ply"}
-[01:41] [ComfyUI] Node 2: PreviewGaussians
-[01:41] [ComfyUI] Inputs: {"fov_degrees": 50, "image_width": 512, "image_height": 512, "renderer": "spark", "transport_format": "ply", "ply_path": ["1", 0]}
-[01:41] [ComfyUI] Node 3: GaussianMerge
-[01:41] [ComfyUI] Inputs: {"target_count": 100000, "output_filename": "merged", "opacity_threshold": 0, "k": 24, "ply_path": ["1", 0]}
-[01:41] [ComfyUI] Node 4: PreviewGaussians
-[01:41] [ComfyUI] Inputs: {"fov_degrees": 50, "image_width": 512, "image_height": 512, "renderer": "spark", "transport_format": "ply", "ply_path": ["3", 0]}
-[01:41] [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb
-[01:41] [ComfyUI] Calling execution.validate_prompt()...
-[01:41] [ComfyUI] Validation result: valid=True
-[01:41] [ComfyUI] === Validation PASSED ===
-[01:41] Queuing workflow for execution...
-[01:41] [ComfyUI] got prompt
-[01:41] [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
-[01:41] [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
-[01:41] Node executed (1 total), capturing...
-[01:43] Frame 2 saved (frame_001.jpg, t=0.7s)
-[01:43] [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True
-[01:45] Frame 3 saved (frame_002.jpg, t=4.4s)
-[01:45] [capture-periodic] freeze=2ms shot=148ms unfreeze=2ms saved=True
-[01:48] [ComfyUI]
-[01:48] [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply
-[01:48] [ComfyUI] Initial splats: 200000
-[01:48] [ComfyUI] Pruned splats: 200000, target: 100000
-[01:48] [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207
-[01:48] [ComfyUI] Pruning splats with opacity below 0.0000
-[01:48] [ComfyUI] Original count: 200000, after opacity pruning: 200000
-[01:48] [ComfyUI] After opacity pruning, 200000 splats remain.
-[01:48] [ComfyUI] Pass 1: 200000 splats
-[01:48] [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]
-[01:48] [ComfyUI] Edge costs: 4%|▎ | 1/27 [00:00<00:09, 2.77it/s]
-[01:48] [ComfyUI] Edge costs: 7%|▋ | 2/27 [00:00<00:06, 3.90it/s]
-[01:49] [ComfyUI] Edge costs: 11%|█ | 3/27 [00:00<00:05, 4.24it/s]
-[01:49] [ComfyUI] Edge costs: 15%|█▍ | 4/27 [00:00<00:04, 4.88it/s]
-[01:49] [capture-loop] iter=50 t=8.3s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.7/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=89% browser_rss=0.77GB
-[01:49] [ComfyUI] Edge costs: 19%|█▊ | 5/27 [00:01<00:04, 5.05it/s]
-[01:49] [ComfyUI] Edge costs: 22%|██▏ | 6/27 [00:01<00:04, 4.81it/s]
-[01:49] [ComfyUI] Edge costs: 26%|██▌ | 7/27 [00:01<00:04, 4.78it/s]
-[01:50] [ComfyUI] Edge costs: 30%|██▉ | 8/27 [00:01<00:04, 4.62it/s]
-[01:50] [ComfyUI] Edge costs: 33%|███▎ | 9/27 [00:01<00:03, 4.75it/s]
-[01:50] [ComfyUI] Edge costs: 37%|███▋ | 10/27 [00:02<00:03, 4.83it/s]
-[01:50] [ComfyUI] Edge costs: 41%|████ | 11/27 [00:02<00:03, 5.22it/s]
-[01:50] [ComfyUI] Edge costs: 44%|████▍ | 12/27 [00:02<00:02, 5.38it/s]
-[01:50] [ComfyUI] Edge costs: 48%|████▊ | 13/27 [00:02<00:02, 5.76it/s]
-[01:51] [ComfyUI] Edge costs: 52%|█████▏ | 14/27 [00:02<00:02, 6.11it/s]
-[01:51] [ComfyUI] Edge costs: 56%|█████▌ | 15/27 [00:02<00:02, 5.73it/s]
-[01:51] [ComfyUI] Edge costs: 59%|█████▉ | 16/27 [00:03<00:01, 5.74it/s]
-[01:51] [ComfyUI] Edge costs: 63%|██████▎ | 17/27 [00:03<00:01, 6.02it/s]
-[01:51] [ComfyUI] Edge costs: 67%|██████▋ | 18/27 [00:03<00:01, 5.65it/s]
-[01:52] [ComfyUI] Edge costs: 70%|███████ | 19/27 [00:03<00:01, 5.75it/s]
-[01:52] [ComfyUI] Edge costs: 74%|███████▍ | 20/27 [00:03<00:01, 5.29it/s]
-[01:52] [ComfyUI] Edge costs: 78%|███████▊ | 21/27 [00:04<00:01, 5.61it/s]
-[01:52] [ComfyUI] Edge costs: 81%|████████▏ | 22/27 [00:04<00:00, 5.64it/s]
-[01:52] [ComfyUI] Edge costs: 85%|████████▌ | 23/27 [00:04<00:00, 5.55it/s]
-[01:52] [ComfyUI] Edge costs: 89%|████████▉ | 24/27 [00:04<00:00, 5.29it/s]
-[01:53] [ComfyUI] Edge costs: 93%|█████████▎| 25/27 [00:04<00:00, 5.42it/s]
-[01:53] [ComfyUI] Edge costs: 96%|█████████▋| 26/27 [00:04<00:00, 5.66it/s]
-[01:53] [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:05<00:00, 6.03it/s]
-[01:55] [capture-loop] iter=100 t=14.2s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=93% browser_rss=0.77GB
-[01:58] [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:05<00:00, 5.30it/s]
-[01:58] [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)
-[01:58] [ComfyUI]
-[01:58] [ComfyUI] Merging 97792 pairs
-[01:58] [ComfyUI] Pass 2: 102208 splats
-[01:58] [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]
-[01:58] [ComfyUI] Edge costs: 7%|▋ | 1/14 [00:00<00:01, 6.53it/s]
-[01:58] [ComfyUI] Edge costs: 14%|█▍ | 2/14 [00:00<00:01, 6.41it/s]
-[01:58] [ComfyUI] Edge costs: 21%|██▏ | 3/14 [00:00<00:01, 6.42it/s]
-[01:59] [ComfyUI] Edge costs: 29%|██▊ | 4/14 [00:00<00:01, 6.61it/s]
-[01:59] [ComfyUI] Edge costs: 36%|███▌ | 5/14 [00:00<00:01, 5.46it/s]
-[01:59] [ComfyUI] Edge costs: 43%|████▎ | 6/14 [00:00<00:01, 5.95it/s]
-[01:59] [ComfyUI] Edge costs: 50%|█████ | 7/14 [00:01<00:01, 5.71it/s]
-[01:59] [ComfyUI] Edge costs: 57%|█████▋ | 8/14 [00:01<00:01, 5.43it/s]
-[01:59] [ComfyUI] Edge costs: 64%|██████▍ | 9/14 [00:01<00:00, 5.83it/s]
-[02:00] [ComfyUI] Edge costs: 71%|███████▏ | 10/14 [00:01<00:00, 6.23it/s]
-[02:00] [ComfyUI] Edge costs: 79%|███████▊ | 11/14 [00:01<00:00, 6.53it/s]
-[02:00] [ComfyUI] Edge costs: 86%|████████▌ | 12/14 [00:01<00:00, 6.43it/s]
-[02:00] [ComfyUI] Edge costs: 93%|█████████▎| 13/14 [00:02<00:00, 6.60it/s]
-[02:01] [capture-loop] iter=150 t=20.0s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=88% browser_rss=0.76GB
-[02:03] [ComfyUI] Edge costs: 100%|██████████| 14/14 [00:02<00:00, 6.50it/s]
-[02:03] [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)
-[02:03] [ComfyUI] Prompt executed in 22.39 seconds
-[02:03] Node executed (2 total), capturing...
-[02:04] Frame 4 saved (frame_003.jpg, t=23.0s)
-[02:04] [capture-node] freeze=15ms shot=126ms unfreeze=0ms saved=True
-[02:04] Execution complete (t=23.0s)
-[02:04] [3d-wait] Phase 1: Waiting for 'Loading 3D Model' text to disappear...
-[02:04] [3d-wait] Phase 1 done in 0.0s
-[02:04] [3d-wait] Phase 2: iframes=2
-[02:04] [3d-wait] iframe viewer_ready=True (matched 1 console logs)
-[02:04] [3d-wait] Unfrozen in 0.008s, rendering for 5s...
-[02:09] [3d-wait] JS halted via CDP after 5.0s
-[02:10] [3d-wait] Re-frozen in 6.2s
-[02:10] [3d-wait] Total 3D wait: 6.2s
-[02:10] Captured 4 unique frames over 29.38s
-[02:10] [debug] iframes: 2
-[02:10] [debug] iframe[0]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
-[02:10] [debug] iframe[1]: src=http://127.0.0.1:41888/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
-[02:10] [timing] trigger_3d_previews: 0.0s
-[02:12] Saved high-quality screenshot: merge_splats_executed.png
-[02:12] [timing] final_screenshot: 0.4s
-[02:13] Results saved to /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1806/dev/macos-cpu/results.json
-[02:13] Saved: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1806/dev/macos-cpu/index.html
-[02:13] [EXECUTION] PASSED
-[02:13]
+[00:35] [ComfyUI] Context impl SQLiteImpl.
+[00:35] [ComfyUI] Will assume non-transactional DDL.
+[00:35] [ComfyUI] Context impl SQLiteImpl.
+[00:35] [ComfyUI] Will assume non-transactional DDL.
+[00:35] [ComfyUI] Running upgrade -> 0001_assets, Initial assets schema
+[00:35] [ComfyUI] Revision ID: 0001_assets
+[00:35] [ComfyUI] Revises: None
+[00:35] [ComfyUI] Create Date: 2025-12-10 00:00:00
+[00:36] [ComfyUI] Running upgrade 0001_assets -> 0002_merge_to_asset_references, Merge AssetInfo and AssetCacheState into unified asset_references table.
+[00:36] [ComfyUI] Running upgrade 0002_merge_to_asset_references -> 0003_add_metadata_job_id, Add system_metadata and job_id columns to asset_references.
+[00:36] [ComfyUI] Change preview_id FK from assets.id to asset_references.id.
+[00:36] [ComfyUI] Database upgraded from None to 0003_add_metadata_job_id
+[00:36] [ComfyUI] Starting server
+[00:36] [ComfyUI]
+[00:36] [ComfyUI] To see the GUI go to: http://127.0.0.1:41896
+[00:36] Server responding, waiting for nodes to load...
+[00:56] Server is ready!
+[00:56] Checking for import errors in server logs...
+[00:56] No import errors detected
+[00:57] Found 726 registered nodes
+[00:57] [REGISTRATION] PASSED
+[00:57]
+[00:57] [4/5] INSTANTIATION
+[00:57] ----------------------------------------
+[00:57]
+[DEBUG] server=, api=
+[00:57] Testing node constructors...
+[01:02] All 5 node(s) instantiated successfully!
+[01:02] [INSTANTIATION] PASSED
+[01:02]
+[01:02] [5/5] EXECUTION
+[01:02] ----------------------------------------
+[01:02]
+[DEBUG] server=, api=
+[01:02] CPU runner - will execute 1 workflow(s)
+[01:02] Running 1 workflow(s) (all with videos)...
+[01:02] Installing screenshot dependencies (playwright, pillow)...
+[01:03] Packages installed, downloading chromium browser...
+[01:10] Screenshot dependencies installed successfully
+[01:10] Starting headless browser...
+[01:10] macOS -- using Apple Metal GPU via ANGLE
+[01:11] Capturing execution frames: merge_splats.json
+[01:17] Frame 1 saved (frame_000.jpg, t=0.0s)
+[01:17] Validating workflow...
+[01:17] [ComfyUI] === /validate endpoint called ===
+[01:17] [ComfyUI] Received JSON with keys: ['prompt']
+[01:17] [ComfyUI] Prompt has 4 nodes
+[01:17] [ComfyUI] Node 1: LoadPLY
+[01:17] [ComfyUI] Inputs: {"ply_file": "apple.ply"}
+[01:17] [ComfyUI] Node 2: PreviewGaussians
+[01:17] [ComfyUI] Inputs: {"fov_degrees": 50, "image_width": 512, "image_height": 512, "renderer": "spark", "transport_format": "ply", "ply_path": ["1", 0]}
+[01:17] [ComfyUI] Node 3: GaussianMerge
+[01:17] [ComfyUI] Inputs: {"target_count": 100000, "output_filename": "merged", "opacity_threshold": 0, "k": 24, "ply_path": ["1", 0]}
+[01:17] [ComfyUI] Node 4: PreviewGaussians
+[01:17] [ComfyUI] Inputs: {"fov_degrees": 50, "image_width": 512, "image_height": 512, "renderer": "spark", "transport_format": "ply", "ply_path": ["3", 0]}
+[01:17] Queuing workflow for execution...
+[01:17] [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68
+[01:17] [ComfyUI] Calling execution.validate_prompt()...
+[01:17] [ComfyUI] Validation result: valid=True
+[01:17] [ComfyUI] === Validation PASSED ===
+[01:17] [ComfyUI] got prompt
+[01:17] [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
+[01:17] [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
+[01:17] Node executed (1 total), capturing...
+[01:18] Frame 2 saved (frame_001.jpg, t=0.4s)
+[01:18] [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True
+[01:21] Frame 3 saved (frame_002.jpg, t=3.6s)
+[01:21] [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True
+[01:23] [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply
+[01:23] [ComfyUI]
+[01:23] [ComfyUI] Initial splats: 200000
+[01:23] [ComfyUI] Pruned splats: 200000, target: 100000
+[01:23] [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207
+[01:23] [ComfyUI] Pruning splats with opacity below 0.0000
+[01:23] [ComfyUI] Original count: 200000, after opacity pruning: 200000
+[01:23] [ComfyUI] After opacity pruning, 200000 splats remain.
+[01:23] [ComfyUI] Pass 1: 200000 splats
+[01:23] Frame 4 saved (frame_003.jpg, t=5.9s)
+[01:23] [capture-periodic] freeze=3ms shot=124ms unfreeze=6ms saved=True
+[01:23] [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]
+[01:23] [ComfyUI] Edge costs: 4%|▎ | 1/27 [00:00<00:06, 3.74it/s]
+[01:23] [ComfyUI] Edge costs: 7%|▋ | 2/27 [00:00<00:04, 5.42it/s]
+[01:23] [ComfyUI] Edge costs: 11%|█ | 3/27 [00:00<00:04, 5.93it/s]
+[01:24] [ComfyUI] Edge costs: 15%|█▍ | 4/27 [00:00<00:03, 6.77it/s]
+[01:24] [ComfyUI] Edge costs: 19%|█▊ | 5/27 [00:00<00:02, 7.34it/s]
+[01:24] [ComfyUI] Edge costs: 22%|██▏ | 6/27 [00:00<00:02, 7.31it/s]
+[01:24] [ComfyUI] Edge costs: 26%|██▌ | 7/27 [00:01<00:02, 7.56it/s]
+[01:24] [ComfyUI] Edge costs: 30%|██▉ | 8/27 [00:01<00:02, 7.74it/s]
+[01:24] [ComfyUI] Edge costs: 33%|███▎ | 9/27 [00:01<00:02, 7.84it/s]
+[01:24] [capture-loop] iter=50 t=7.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=77% browser_rss=0.79GB
+[01:24] [ComfyUI] Edge costs: 37%|███▋ | 10/27 [00:01<00:02, 8.01it/s]
+[01:24] [ComfyUI] Edge costs: 41%|████ | 11/27 [00:01<00:01, 8.06it/s]
+[01:25] [ComfyUI] Edge costs: 44%|████▍ | 12/27 [00:01<00:01, 7.88it/s]
+[01:25] [ComfyUI] Edge costs: 48%|████▊ | 13/27 [00:01<00:01, 7.90it/s]
+[01:25] [ComfyUI] Edge costs: 52%|█████▏ | 14/27 [00:01<00:01, 7.96it/s]
+[01:25] [ComfyUI] Edge costs: 56%|█████▌ | 15/27 [00:02<00:01, 8.14it/s]
+[01:25] [ComfyUI] Edge costs: 59%|█████▉ | 16/27 [00:02<00:01, 8.27it/s]
+[01:25] [ComfyUI] Edge costs: 63%|██████▎ | 17/27 [00:02<00:01, 8.20it/s]
+[01:25] [ComfyUI] Edge costs: 67%|██████▋ | 18/27 [00:02<00:01, 8.22it/s]
+[01:25] [ComfyUI] Edge costs: 70%|███████ | 19/27 [00:02<00:00, 8.25it/s]
+[01:26] [ComfyUI] Edge costs: 74%|███████▍ | 20/27 [00:02<00:00, 8.12it/s]
+[01:26] [ComfyUI] Edge costs: 78%|███████▊ | 21/27 [00:02<00:00, 8.01it/s]
+[01:26] [ComfyUI] Edge costs: 81%|████████▏ | 22/27 [00:02<00:00, 8.06it/s]
+[01:26] [ComfyUI] Edge costs: 85%|████████▌ | 23/27 [00:03<00:00, 7.93it/s]
+[01:26] [ComfyUI] Edge costs: 89%|████████▉ | 24/27 [00:03<00:00, 8.02it/s]
+[01:26] [ComfyUI] Edge costs: 93%|█████████▎| 25/27 [00:03<00:00, 8.13it/s]
+[01:26] [ComfyUI] Edge costs: 96%|█████████▋| 26/27 [00:03<00:00, 7.97it/s]
+[01:26] [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:03<00:00, 7.34it/s]
+[01:30] [capture-loop] iter=100 t=13.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=8 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=81% browser_rss=0.79GB
+[01:30] [ComfyUI] Edge costs: 100%|██████████| 27/27 [00:03<00:00, 7.61it/s]
+[01:30] [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)
+[01:30] [ComfyUI]
+[01:30] [ComfyUI] Merging 97792 pairs
+[01:30] [ComfyUI] Pass 2: 102208 splats
+[01:31] [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]
+[01:31] [ComfyUI] Edge costs: 7%|▋ | 1/14 [00:00<00:01, 7.78it/s]
+[01:31] [ComfyUI] Edge costs: 14%|█▍ | 2/14 [00:00<00:01, 7.87it/s]
+[01:31] [ComfyUI] Edge costs: 21%|██▏ | 3/14 [00:00<00:01, 7.77it/s]
+[01:31] [ComfyUI] Edge costs: 29%|██▊ | 4/14 [00:00<00:01, 7.57it/s]
+[01:31] [ComfyUI] Edge costs: 36%|███▌ | 5/14 [00:00<00:01, 7.81it/s]
+[01:31] [ComfyUI] Edge costs: 43%|████▎ | 6/14 [00:00<00:00, 8.04it/s]
+[01:31] [ComfyUI] Edge costs: 50%|█████ | 7/14 [00:00<00:00, 8.18it/s]
+[01:32] [ComfyUI] Edge costs: 57%|█████▋ | 8/14 [00:01<00:00, 7.82it/s]
+[01:32] [ComfyUI] Edge costs: 64%|██████▍ | 9/14 [00:01<00:00, 7.75it/s]
+[01:32] [ComfyUI] Edge costs: 71%|███████▏ | 10/14 [00:01<00:00, 7.99it/s]
+[01:32] [ComfyUI] Edge costs: 79%|███████▊ | 11/14 [00:01<00:00, 8.16it/s]
+[01:32] [ComfyUI] Edge costs: 86%|████████▌ | 12/14 [00:01<00:00, 8.15it/s]
+[01:32] [ComfyUI] Edge costs: 93%|█████████▎| 13/14 [00:01<00:00, 7.87it/s]
+[01:35] [ComfyUI] Edge costs: 100%|██████████| 14/14 [00:01<00:00, 8.30it/s]
+[01:35] [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)
+[01:35] [ComfyUI] Prompt executed in 17.87 seconds
+[01:35] Node executed (2 total), capturing...
+[01:35] Frame 5 saved (frame_004.jpg, t=18.3s)
+[01:35] [capture-node] freeze=13ms shot=162ms unfreeze=0ms saved=True
+[01:35] Execution complete (t=18.3s)
+[01:35] [3d-wait] Phase 1: Waiting for 'Loading 3D Model' text to disappear...
+[01:36] [3d-wait] Phase 1 done in 0.3s
+[01:36] [3d-wait] Phase 2: iframes=2
+[01:36] [3d-wait] iframe viewer_ready=True (matched 1 console logs)
+[01:36] [3d-wait] Unfrozen in 0.002s, rendering for 5s...
+[01:41] [3d-wait] JS halted via CDP after 5.2s
+[01:42] [3d-wait] Re-frozen in 6.3s
+[01:42] [3d-wait] Total 3D wait: 6.7s
+[01:42] Captured 5 unique frames over 25.24s
+[01:42] [debug] iframes: 2
+[01:42] [debug] iframe[0]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
+[01:42] [debug] iframe[1]: src=http://127.0.0.1:41896/extensions/ComfyUI-GaussianPack/viewer_gaussian.html?v=17, canvas=486x225, rafFrozen=True
+[01:42] [timing] trigger_3d_previews: 0.0s
+[01:44] Saved high-quality screenshot: merge_splats_executed.png
+[01:44] [timing] final_screenshot: 0.2s
+[01:45] Results saved to /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1848/dev/macos-cpu/results.json
+[01:45] Saved: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/comfy-test-logs/GaussianPack-1848/dev/macos-cpu/index.html
+[01:45] [EXECUTION] PASSED
+[01:45]
macos: PASSED
-[02:13] Stopping ComfyUI server...
+[01:45] Stopping ComfyUI server...
diff --git a/dev/macos-cpu/videos/merge_splats/frame_000.jpg b/dev/macos-cpu/videos/merge_splats/frame_000.jpg
index 54a9d34..7e1ac0a 100644
Binary files a/dev/macos-cpu/videos/merge_splats/frame_000.jpg and b/dev/macos-cpu/videos/merge_splats/frame_000.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/frame_001.jpg b/dev/macos-cpu/videos/merge_splats/frame_001.jpg
index cf89341..43bf77a 100644
Binary files a/dev/macos-cpu/videos/merge_splats/frame_001.jpg and b/dev/macos-cpu/videos/merge_splats/frame_001.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/frame_002.jpg b/dev/macos-cpu/videos/merge_splats/frame_002.jpg
index 43f2e5e..a3bab71 100644
Binary files a/dev/macos-cpu/videos/merge_splats/frame_002.jpg and b/dev/macos-cpu/videos/merge_splats/frame_002.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/frame_003.jpg b/dev/macos-cpu/videos/merge_splats/frame_003.jpg
index d434b4d..18190dc 100644
Binary files a/dev/macos-cpu/videos/merge_splats/frame_003.jpg and b/dev/macos-cpu/videos/merge_splats/frame_003.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/frame_004.jpg b/dev/macos-cpu/videos/merge_splats/frame_004.jpg
index 4a57c9d..a12759b 100644
Binary files a/dev/macos-cpu/videos/merge_splats/frame_004.jpg and b/dev/macos-cpu/videos/merge_splats/frame_004.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/frame_005.jpg b/dev/macos-cpu/videos/merge_splats/frame_005.jpg
new file mode 100644
index 0000000..ee81daf
Binary files /dev/null and b/dev/macos-cpu/videos/merge_splats/frame_005.jpg differ
diff --git a/dev/macos-cpu/videos/merge_splats/metadata.json b/dev/macos-cpu/videos/merge_splats/metadata.json
index ba9507e..101208c 100644
--- a/dev/macos-cpu/videos/merge_splats/metadata.json
+++ b/dev/macos-cpu/videos/merge_splats/metadata.json
@@ -7,24 +7,29 @@
},
{
"file": "frame_001.jpg",
- "time": 0.72,
- "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply"
+ "time": 0.42,
+ "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply"
},
{
"file": "frame_002.jpg",
- "time": 4.44,
- "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.7s)\n [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True"
+ "time": 3.62,
+ "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True"
},
{
"file": "frame_003.jpg",
- "time": 22.99,
- "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 0dc762bb-5250-4345-baac-c4f74a3750fb\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n Queuing workflow for execution...\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.7s)\n [capture-node] freeze=33ms shot=1529ms unfreeze=5ms saved=True\n Frame 3 saved (frame_002.jpg, t=4.4s)\n [capture-periodic] freeze=2ms shot=148ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:09, 2.77it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:06, 3.90it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:05, 4.24it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:04, 4.88it/s]\n [capture-loop] iter=50 t=8.3s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=4 ram=3.7/7.0GB (59%) swap=0.0/0.0GB (0%) cpu=89% browser_rss=0.77GB\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:01<00:04, 5.05it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:01<00:04, 4.81it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:04, 4.78it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:04, 4.62it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:03, 4.75it/s]\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:02<00:03, 4.83it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:02<00:03, 5.22it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:02<00:02, 5.38it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:02<00:02, 5.76it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:02<00:02, 6.11it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:02, 5.73it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:03<00:01, 5.74it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:03<00:01, 6.02it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:03<00:01, 5.65it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:03<00:01, 5.75it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:03<00:01, 5.29it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:04<00:01, 5.61it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:04<00:00, 5.64it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:04<00:00, 5.55it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:04<00:00, 5.29it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:04<00:00, 5.42it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:04<00:00, 5.66it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 6.03it/s]\n [capture-loop] iter=100 t=14.2s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=93% browser_rss=0.77GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:05<00:00, 5.30it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 6.53it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 6.41it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 6.42it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 6.61it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 5.46it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:01, 5.95it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:01<00:01, 5.71it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:01, 5.43it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 5.83it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 6.23it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 6.53it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 6.43it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:02<00:00, 6.60it/s]\n [capture-loop] iter=150 t=20.0s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=5 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=88% browser_rss=0.76GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:02<00:00, 6.50it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1806/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 22.39 seconds"
+ "time": 5.86,
+ "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True\n Frame 3 saved (frame_002.jpg, t=3.6s)\n [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True"
},
{
"file": "frame_004.jpg",
- "time": 31.820918083190918,
+ "time": 18.33,
+ "log": "Capturing execution frames: merge_splats.json\n Frame 1 saved (frame_000.jpg, t=0.0s)\n Validating workflow...\n [ComfyUI] === /validate endpoint called ===\n [ComfyUI] Received JSON with keys: ['prompt']\n [ComfyUI] Prompt has 4 nodes\n [ComfyUI] Node 1: LoadPLY\n [ComfyUI] Inputs: {\"ply_file\": \"apple.ply\"}\n [ComfyUI] Node 2: PreviewGaussians\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 3: GaussianMerge\n [ComfyUI] Inputs: {\"target_count\": 100000, \"output_filename\": \"merged\", \"opacity_threshold\": 0, \"k\": 24, \"ply_path\": [\"1\", 0]}\n [ComfyUI] Node 4: PreviewGaussians\n Queuing workflow for execution...\n [ComfyUI] Inputs: {\"fov_degrees\": 50, \"image_width\": 512, \"image_height\": 512, \"renderer\": \"spark\", \"transport_format\": \"ply\", \"ply_path\": [\"3\", 0]}\n [ComfyUI] Generated prompt_id: 2d4aedde-7ee5-4e76-a3c6-c6c08e9d6a68\n [ComfyUI] Calling execution.validate_prompt()...\n [ComfyUI] Validation result: valid=True\n [ComfyUI] === Validation PASSED ===\n [ComfyUI] got prompt\n [ComfyUI] LoadPLY: apple.ply -> /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] GaussianMerge: 200000 -> 100000 splats (ratio=0.5000) via NanoGS MPMM on /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n Node executed (1 total), capturing...\n Frame 2 saved (frame_001.jpg, t=0.4s)\n [capture-node] freeze=16ms shot=1028ms unfreeze=21ms saved=True\n Frame 3 saved (frame_002.jpg, t=3.6s)\n [capture-periodic] freeze=2ms shot=114ms unfreeze=2ms saved=True\n [ComfyUI] \n [ComfyUI] Loading PLY: /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/input/apple.ply\n [ComfyUI] Initial splats: 200000\n [ComfyUI] Pruned splats: 200000, target: 100000\n [ComfyUI] Opacity Mean: 0.53443545 Median: 0.4836207\n [ComfyUI] Pruning splats with opacity below 0.0000\n [ComfyUI] Original count: 200000, after opacity pruning: 200000\n [ComfyUI] After opacity pruning, 200000 splats remain.\n [ComfyUI] Pass 1: 200000 splats\n Frame 4 saved (frame_003.jpg, t=5.9s)\n [capture-periodic] freeze=3ms shot=124ms unfreeze=6ms saved=True\n [ComfyUI] Edge costs: 0%| | 0/27 [00:00, ?it/s]\n [ComfyUI] Edge costs: 4%|\u258e | 1/27 [00:00<00:06, 3.74it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 2/27 [00:00<00:04, 5.42it/s]\n [ComfyUI] Edge costs: 11%|\u2588 | 3/27 [00:00<00:04, 5.93it/s]\n [ComfyUI] Edge costs: 15%|\u2588\u258d | 4/27 [00:00<00:03, 6.77it/s]\n [ComfyUI] Edge costs: 19%|\u2588\u258a | 5/27 [00:00<00:02, 7.34it/s]\n [ComfyUI] Edge costs: 22%|\u2588\u2588\u258f | 6/27 [00:00<00:02, 7.31it/s]\n [ComfyUI] Edge costs: 26%|\u2588\u2588\u258c | 7/27 [00:01<00:02, 7.56it/s]\n [ComfyUI] Edge costs: 30%|\u2588\u2588\u2589 | 8/27 [00:01<00:02, 7.74it/s]\n [ComfyUI] Edge costs: 33%|\u2588\u2588\u2588\u258e | 9/27 [00:01<00:02, 7.84it/s]\n [capture-loop] iter=50 t=7.4s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=3 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=77% browser_rss=0.79GB\n [ComfyUI] Edge costs: 37%|\u2588\u2588\u2588\u258b | 10/27 [00:01<00:02, 8.01it/s]\n [ComfyUI] Edge costs: 41%|\u2588\u2588\u2588\u2588 | 11/27 [00:01<00:01, 8.06it/s]\n [ComfyUI] Edge costs: 44%|\u2588\u2588\u2588\u2588\u258d | 12/27 [00:01<00:01, 7.88it/s]\n [ComfyUI] Edge costs: 48%|\u2588\u2588\u2588\u2588\u258a | 13/27 [00:01<00:01, 7.90it/s]\n [ComfyUI] Edge costs: 52%|\u2588\u2588\u2588\u2588\u2588\u258f | 14/27 [00:01<00:01, 7.96it/s]\n [ComfyUI] Edge costs: 56%|\u2588\u2588\u2588\u2588\u2588\u258c | 15/27 [00:02<00:01, 8.14it/s]\n [ComfyUI] Edge costs: 59%|\u2588\u2588\u2588\u2588\u2588\u2589 | 16/27 [00:02<00:01, 8.27it/s]\n [ComfyUI] Edge costs: 63%|\u2588\u2588\u2588\u2588\u2588\u2588\u258e | 17/27 [00:02<00:01, 8.20it/s]\n [ComfyUI] Edge costs: 67%|\u2588\u2588\u2588\u2588\u2588\u2588\u258b | 18/27 [00:02<00:01, 8.22it/s]\n [ComfyUI] Edge costs: 70%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588 | 19/27 [00:02<00:00, 8.25it/s]\n [ComfyUI] Edge costs: 74%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 20/27 [00:02<00:00, 8.12it/s]\n [ComfyUI] Edge costs: 78%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 21/27 [00:02<00:00, 8.01it/s]\n [ComfyUI] Edge costs: 81%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 22/27 [00:02<00:00, 8.06it/s]\n [ComfyUI] Edge costs: 85%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 23/27 [00:03<00:00, 7.93it/s]\n [ComfyUI] Edge costs: 89%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2589 | 24/27 [00:03<00:00, 8.02it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 25/27 [00:03<00:00, 8.13it/s]\n [ComfyUI] Edge costs: 96%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258b| 26/27 [00:03<00:00, 7.97it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.34it/s]\n [capture-loop] iter=100 t=13.1s state={'complete': False, 'error': None, 'executedCount': 1, 'wsState': 1} eval_ms=8 ram=3.7/7.0GB (60%) swap=0.0/0.0GB (0%) cpu=81% browser_rss=0.79GB\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 27/27 [00:03<00:00, 7.61it/s]\n [ComfyUI] edges: 2697139, pairs: 97792 (need 100000)\n [ComfyUI] \n [ComfyUI] Merging 97792 pairs\n [ComfyUI] Pass 2: 102208 splats\n [ComfyUI] Edge costs: 0%| | 0/14 [00:00, ?it/s]\n [ComfyUI] Edge costs: 7%|\u258b | 1/14 [00:00<00:01, 7.78it/s]\n [ComfyUI] Edge costs: 14%|\u2588\u258d | 2/14 [00:00<00:01, 7.87it/s]\n [ComfyUI] Edge costs: 21%|\u2588\u2588\u258f | 3/14 [00:00<00:01, 7.77it/s]\n [ComfyUI] Edge costs: 29%|\u2588\u2588\u258a | 4/14 [00:00<00:01, 7.57it/s]\n [ComfyUI] Edge costs: 36%|\u2588\u2588\u2588\u258c | 5/14 [00:00<00:01, 7.81it/s]\n [ComfyUI] Edge costs: 43%|\u2588\u2588\u2588\u2588\u258e | 6/14 [00:00<00:00, 8.04it/s]\n [ComfyUI] Edge costs: 50%|\u2588\u2588\u2588\u2588\u2588 | 7/14 [00:00<00:00, 8.18it/s]\n [ComfyUI] Edge costs: 57%|\u2588\u2588\u2588\u2588\u2588\u258b | 8/14 [00:01<00:00, 7.82it/s]\n [ComfyUI] Edge costs: 64%|\u2588\u2588\u2588\u2588\u2588\u2588\u258d | 9/14 [00:01<00:00, 7.75it/s]\n [ComfyUI] Edge costs: 71%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258f | 10/14 [00:01<00:00, 7.99it/s]\n [ComfyUI] Edge costs: 79%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258a | 11/14 [00:01<00:00, 8.16it/s]\n [ComfyUI] Edge costs: 86%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258c | 12/14 [00:01<00:00, 8.15it/s]\n [ComfyUI] Edge costs: 93%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258e| 13/14 [00:01<00:00, 7.87it/s]\n [ComfyUI] Edge costs: 100%|\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 14/14 [00:01<00:00, 8.30it/s]\n [ComfyUI] GaussianMerge: wrote /Users/runner/work/comfy-gpu-ci/comfy-gpu-ci/test_workspaces/GaussianPack-1848/ComfyUI/output/merged.ply (100000 splats, 23.7 MB)\n [ComfyUI] Prompt executed in 17.87 seconds"
+ },
+ {
+ "file": "frame_005.jpg",
+ "time": 27.46103811264038,
"log": "Final screenshot"
}
],
- "total_time": 29.38
+ "total_time": 25.24
}
\ No newline at end of file