Generated on 2026-07-05T20:55:20+08:00
All 15 CI scenarios passed (15/15, 100%). The PR introduces a VLM-primary scene graph where an image-grounded VLM call owns relational/semantic edges, while a fast geometric loop (3 Hz) handles only reachable_by. Object identity is stabilized via cross-tick re-bind, soft eviction with TTL, and new merge passes (same-class proximity, cross-class geometric collapse, configurable class groups). The pilot's RTDL parser now tolerates prose preamble around JSON. The scene-graph LLM enrichment ran but all VLM calls to the fake-vlm endpoint returned empty JSON, so no semantic edges were produced; the geometric loop and object registry functioned correctly.
| Source | Line | Excerpt |
|---|---|---|
| 5 | "failed": 0, | |
| 250 | 07-05 12:53:21.820 W scene [scene-graph-llm] request failed: JSONDecodeError: Expecting value: line 1 column 1 (char 0) | |
| 4 | failed — persistence OFF for this | |
| 1 | {"objects":[{"id":"scene.object.potted_plant_001","short_id":"potted_plant_001","cls":"potted_plant","pose":{"x":1.3788100595234163,"y":0.18861834707415223,"z":0.9535420492940094,"yaw":0.09825888521080683},"bbox":{"size_x":0.49310681558660924,"size_y":0.34721167011339704,"size_z":0.687749185640638,"yaw":0.09825888521080683},"confidence":0.688478285266507,"observation_count":34,"missing":false},{"id":"scene.object.robot_001","short_id":"robot_001","cls":"robot","pose":{"x":4.724330421092038e-10,"y":1.970265666254972e-15,"z":0.0,"yaw":5.259165653058311e-07},"bbox":{"size_x":0.6,"size_y":0.6,"size_z":1.5,"yaw":0.0},"confidence":1.0,"observation_count":21,"missing":false}],"relations":[],"scene_graph":{"edges":[],"updated_at":1783255896.606643},"robot":{"x":4.724330421092038e-10,"y":1.970265666254972e-15,"z":0.0,"yaw":5.259165653058311e-07},"occupancy":{"width":66,"height":51,"resolution":0.05000000074505806,"origin_x":-0.5249999761581421,"origin_y":-1.1249991655349731,"stamp_ms":178325589 |
| Generated On | 2026-07-05T20:55:20+08:00 |
|---|---|
| Test Report Generated On | 2026-07-05T20:54:20+08:00 |
| Run Id | 28741232169 |
| Workflow | Robonix CI Bot |
| Event | issue_comment |
| Repository | syswonder/robonix |
| Tested Commit | f5ddd1c08c14 |
| Tested Commit Subject | Merge remote-tracking branch 'refs/remotes/robonix-pr/116/head' into dev |
| Tested Commit Author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> |
| Tested Commit Date | 2026-07-05T20:47:53+08:00 |
| Pr Number | #116 |
| Pr Title | feat(scene): VLM-primary scene graph + stable object identity |
| Pr Author | HeartLinked |
| Pr Url | https://github.com/syswonder/robonix/pull/116 |
| Pr Head Ref | dev-sc-rebase |
| Pr Head Repo | HeartLinked/robonix |
| Triggered By | enkerewpo |
| Actor | enkerewpo |
| Triggering Actor | enkerewpo |
| Runner Name | robonix-runner-pku-rtx5090-x64 |
| Runner Os | Linux |
| Runner Arch | X64 |
| Origin Url | https://github.com/syswonder/robonix |
| Run Attempt | 1 |
| Ref | refs/heads/dev |
| Sha | 03528d89c627 |
| Pr Base Ref | dev |
| Pr Head Sha | 0887c97ecf091807a5a1a49d16b46dc34ac5215a |
| Report Id | 28741232169 |
| Test Ref | refs/heads/dev |
| Hostname | user-NF5468M6 |
|---|---|
| Os Pretty Name | Ubuntu 22.04.5 LTS |
| Kernel | Linux 6.8.0-124-generic x86_64 GNU/Linux |
| Arch | x86_64 |
| Cpu Model | Intel(R) Xeon(R) Platinum 8368Q CPU @ 2.60GHz |
| Cpu Cores | 152 |
| Mem Total | 125Gi |
| Gpu Summary | 0, NVIDIA GeForce RTX 5090, 32607 MiB, 580.65.06;1, NVIDIA GeForce RTX 5090, 32607 MiB, 580.65.06;2, NVIDIA GeForce RTX 5090, 32607 MiB, 580.65.06;3, NVIDIA GeForce RTX 5090, 32607 MiB, 580.65.06 |
| Nvidia Driver | 580.65.06 |
| Cuda Version | 13.0 |
| Docker Version | 29.2.1 |
| Docker Compose Version | 5.0.2 |
| Webots Version | webots package 2025a |
| Ros Distro | humble |
| Ros Domain Id | 159 |
| Sim Container | ci-28741232169-sim |
| Sim Image | ci-28741232169-sim |
| Webots Stream Port | 23169 |
| Webots Viewer Port | 24169 |
| Python Version | Python 3.10.12 |
| Rustc Version | rustc 1.95.0 (59807616e 2026-04-14) |
| Rbnx Version | rbnx 0.1.0 |
| Status | Suite | Scenario | Rounds | Dispatched contracts | Failures | Log |
|---|---|---|---|---|---|---|
| PASS | builtin | fault_recovery_builtin | 3 | robonix/system/executor/builtin/read_file robonix/system/executor/builtin/write_file | - | |
| PASS | builtin | file_roundtrip | 1 | robonix/system/executor/builtin/list_dir robonix/system/executor/builtin/read_file robonix/system/executor/builtin/write_file | - | |
| PASS | builtin | plan_control_builtins | 1 | robonix/system/executor/builtin/get_all_plans robonix/system/executor/builtin/get_plan_status robonix/system/executor/builtin/stop_plan_at | - | |
| PASS | builtin | run_command | 1 | robonix/system/executor/builtin/run_command | - | |
| PASS | cap | camera_snapshot | 1 | robonix/primitive/camera/snapshot | - | |
| PASS | cap | explore_smoke | 2 | robonix/skill/explore/explore robonix/skill/explore/explore/cancel robonix/skill/explore/explore/status | - | |
| PASS | cap | lidar_snapshot | 1 | robonix/primitive/lidar/snapshot | - | |
| PASS | cap | mapping_save | 1 | robonix/service/map/save_map | - | |
| PASS | cap | memory_roundtrip | 1 | robonix/service/memory/save robonix/service/memory/search | - | |
| PASS | cap | scene_object_fixture | 1 | robonix/system/scene/list_objects | - | |
| PASS | cap | speech_speak | 1 | robonix/service/speech/speak | - | |
| PASS | cap | voiceprint_list | 1 | robonix/service/voiceprint/list | - | |
| PASS | flow | fault_recovery | 4 | robonix/service/memory/save | - | |
| PASS | flow | object_navigation | 4 | robonix/service/navigation/navigate robonix/skill/explore/explore robonix/system/scene/goal_near robonix/system/scene/list_objects | - | |
| PASS | flow | patrol_observe | 3 | robonix/primitive/camera/snapshot robonix/primitive/lidar/snapshot robonix/service/memory/save robonix/service/memory/search | - |
Each scenario step is one VLM planning round. The tree below is the RTDL returned for that round; every do leaf has its own expected runtime contract and output checks.
Build stdout is embedded as sim_logs/build-webots-deployment.log when the build step starts. The deploy supervisor output with the Robonix boot banner is embedded as rbnx-boot.log.
No log selected.Contracts observed by the scenario runner in executor leaf results. This shows which runtime contract ids were exercised by this run; it is not a full API inventory.
| Area | Contract id |
|---|---|
| robonix/primitive/camera | robonix/primitive/camera/snapshot |
| robonix/primitive/lidar | robonix/primitive/lidar/snapshot |
| robonix/service/map | robonix/service/map/save_map |
| robonix/service/memory | robonix/service/memory/save |
| robonix/service/memory | robonix/service/memory/search |
| robonix/service/navigation | robonix/service/navigation/navigate |
| robonix/service/speech | robonix/service/speech/speak |
| robonix/service/voiceprint | robonix/service/voiceprint/list |
| robonix/skill/explore | robonix/skill/explore/explore |
| robonix/skill/explore | robonix/skill/explore/explore/cancel |
| robonix/skill/explore | robonix/skill/explore/explore/status |
| robonix/system/executor | robonix/system/executor/builtin/get_all_plans |
| robonix/system/executor | robonix/system/executor/builtin/get_plan_status |
| robonix/system/executor | robonix/system/executor/builtin/list_dir |
| robonix/system/executor | robonix/system/executor/builtin/read_file |
| robonix/system/executor | robonix/system/executor/builtin/run_command |
| robonix/system/executor | robonix/system/executor/builtin/stop_plan_at |
| robonix/system/executor | robonix/system/executor/builtin/write_file |
| robonix/system/scene | robonix/system/scene/goal_near |
| robonix/system/scene | robonix/system/scene/list_objects |