Robonix Webots CI Report

ALL REPORTS >>

Generated on 2026-07-05T15:19:04+08:00

ResultFAIL
Scenarios14/15 passed
Failures1
Score93/100

LLM-Assisted Analysis

14/15 scenarios passed; scene_object_fixture fails on robot-only output

Provider: deepseek · Model: deepseek-chat · Generated On: 2026-07-05T07:19:03+00:00 · Stage: scenario · Confidence: high

The CI run tested 15 scenarios covering builtin, cap, and flow families. 14 passed; the single failure is `scene_object_fixture`, which calls `robonix/system/scene/list_objects` and expects at least one non-robot object (label != "robot") in the output. The scene service returned only the robot self-object (`scene.object.robot_001`) across all 45 rounds, causing the regex assertion `"label":\s*"(?!robot)[^"]+"` to fail. All other scenarios (camera/lidar snapshots, explore, navigation, memory, speech, voiceprint, mapping, fault recovery, patrol observe, object navigation) passed successfully.

PR Changes

Test Result

Likely Root Cause

Suggested Fix

Risks Or Watchouts

Evidence

SourceLineExcerpt
-scene_object_fixture: passed=false, failures=["steps[0] did not match any plan round from 0; ... output text did not match regex '"label":\\s*"(?!robot)[^"]+"': '{\n "objects": [\n {\n "id": "scene.object.robot_001",\n "label": "robot",\n ...']
-All 45 rounds return only robot_001 with label "robot".
4failed — persistence OFF for this session (no restore, no writes): No module named 'pymilvus'

Run Metadata

Generated On2026-07-05T15:19:04+08:00
Test Report Generated On2026-07-05T15:18:02+08:00
Run Id28732698436
WorkflowRobonix CI Bot
Eventissue_comment
Repositorysyswonder/robonix
Tested Commit630e367bbb32
Tested Commit SubjectMerge 0887c97ecf091807a5a1a49d16b46dc34ac5215a into f826c75e516b87ff0bfa577af2cb05d0851a5900
Tested Commit AuthorFeiyang Li <lifeiyang@zju.edu.cn>
Tested Commit Date2026-07-05T14:56:06+08:00
Pr Number#116
Pr Titlefeat(scene): VLM-primary scene graph + stable object identity
Pr AuthorHeartLinked
Pr Urlhttps://github.com/syswonder/robonix/pull/116
Pr Head Refdev-sc-rebase
Pr Head RepoHeartLinked/robonix
Triggered Byenkerewpo
Actorenkerewpo
Triggering Actorenkerewpo
Runner Namerobonix-runner-pku-rtx5090-x64
Runner OsLinux
Runner ArchX64
Origin Urlhttps://github.com/syswonder/robonix
Run Attempt1
Refrefs/heads/dev
Shaf826c75e516b
Pr Head Sha0887c97ecf091807a5a1a49d16b46dc34ac5215a
Report Id28732698436
Test Refrefs/pull/116/merge

Test Environment

Hostnameuser-NF5468M6
Os Pretty NameUbuntu 22.04.5 LTS
KernelLinux 6.8.0-124-generic x86_64 GNU/Linux
Archx86_64
Cpu ModelIntel(R) Xeon(R) Platinum 8368Q CPU @ 2.60GHz
Cpu Cores152
Mem Total125Gi
Gpu Summary0, 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 Driver580.65.06
Cuda Version13.0
Docker Version29.2.1
Docker Compose Version5.0.2
Webots Versionwebots package 2025a
Ros Distrohumble
Ros Domain Id126
Sim Containerci-28732698436-sim
Sim Imageci-28732698436-sim
Webots Stream Port23436
Webots Viewer Port24436
Python VersionPython 3.10.12
Rustc Versionrustc 1.95.0 (59807616e 2026-04-14)
Rbnx Versionrbnx 0.1.0

Scenarios

StatusSuiteScenarioRoundsDispatched contractsFailuresLog
PASSbuiltinfault_recovery_builtin3
robonix/system/executor/builtin/read_file
robonix/system/executor/builtin/write_file
-
PASSbuiltinfile_roundtrip1
robonix/system/executor/builtin/list_dir
robonix/system/executor/builtin/read_file
robonix/system/executor/builtin/write_file
-
PASSbuiltinplan_control_builtins1
robonix/system/executor/builtin/get_all_plans
robonix/system/executor/builtin/get_plan_status
robonix/system/executor/builtin/stop_plan_at
-
PASSbuiltinrun_command1
robonix/system/executor/builtin/run_command
-
PASScapcamera_snapshot1
robonix/primitive/camera/snapshot
-
PASScapexplore_smoke2
robonix/skill/explore/explore
robonix/skill/explore/explore/cancel
robonix/skill/explore/explore/status
-
PASScaplidar_snapshot1
robonix/primitive/lidar/snapshot
-
PASScapmapping_save1
robonix/service/map/save_map
-
PASScapmemory_roundtrip1
robonix/service/memory/save
robonix/service/memory/search
-
FAILcapscene_object_fixture45
robonix/system/scene/list_objects
steps[0] did not match any plan round from 0; expected contracts=['robonix/system/scene/list_objects']; observed round 0: calls=[('robonix/system/scene/list_objects', '1:0')]; rtdl.children[0]: expected leaf 'robonix/system/scene/list_objects' did not satisfy assertions: output text did not match regex '"label":\\s*"(?!robot)[^"]+"': '{\n "objects": [\n {\n "id": "scene.object.robot_001",\n "label": "robot",\n "x": 0.8348730142339194,\n "y": 0.06017307948532505,\n "z": 0.0,\n "yaw": 0.028103474504646838,\n "last_seen_unix": 1783235652.8944702\n }\n ],\n "stamp_unix": 1783235652.9372187\n}' | round 1: calls=[('robonix/system/scene/list_objects', '2:0')]; rtdl.children[0]: expected leaf 'robonix/system/scene/list_objects' did not satisfy assertions: output text did not match regex '"label":\\s*"(?!robot)[^"]+"': '{\n "objects": [\n {\n "id": "scene.object.robot_001",\n "label": "robot",\n "x": 0.8348729425601746,\n "y": 0.06017308072573091,\n "z": 0.0,\n "yaw": 0.02810347255964002,\n "last_seen_unix": 1783235655.9599469\n }\n ],\n "stamp_unix": 1783235656.0720274\n}' | round 2: calls=[('robonix/system/scene/list_objects', '3:0')]; rtdl.children[0]: expected leaf 'robonix/system/scene/list_objects' did not satisfy assertions: output text did not match regex '"label":\\s*"(?!robot)[^"]+"': '{\n "objects": [\n {\n "id": "scene.object.robot_001",\n "label": "robot",\n "x": 0.8348728670953223,\n "y": 0.0601730741073673,\n "z": 0.0,\n "yaw": 0.028103468457959246,\n "last_seen_unix": 1783235659.1963782\n }\n ],\n "stamp_unix": 1783235659.2010076\n}'
PASScapspeech_speak1
robonix/service/speech/speak
-
PASScapvoiceprint_list1
robonix/service/voiceprint/list
-
PASSflowfault_recovery4
robonix/service/memory/save
-
PASSflowobject_navigation4
robonix/service/navigation/navigate
robonix/skill/explore/explore
robonix/system/scene/goal_near
robonix/system/scene/list_objects
-
PASSflowpatrol_observe3
robonix/primitive/camera/snapshot
robonix/primitive/lidar/snapshot
robonix/service/memory/save
robonix/service/memory/search
-

RTDL Plan Trees

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.

PASSbuiltin/fault_recovery_builtin3 step(s), 3 leaf call(s)
step 0faulty read1 leaf
sequence faulty_read_step
do executor.builtin_read_file missing_read args {"path": "ci_never_created.txt"} expect robonix/system/executor/builtin/read_file failure
Observed plan round 0
FAIL1:0robonix/system/executor/builtin/read_fileargs {"path": "ci_never_created.txt"}No such file or directory (os error 2)
step 1recover by writing fallback1 leaf
sequence write_recovery_step
do executor.builtin_write_file write_recovery args {"content": "recovered charlie-3","path": "ci_recovered.txt"} expect robonix/system/executor/builtin/write_file success
Observed plan round 1
PASS2:0robonix/system/executor/builtin/write_fileargs {"content": "recovered charlie-3","path": "ci_recovered.txt"}wrote 19 bytes to /home/hanyulong/actions-runner/_work/robonix/robonix/examples/webots/ci_recovered.txt
step 2read fallback1 leaf
sequence read_recovery_step
do executor.builtin_read_file read_recovery args {"path": "ci_recovered.txt"} expect robonix/system/executor/builtin/read_file success
Observed plan round 2
PASS3:0robonix/system/executor/builtin/read_fileargs {"path": "ci_recovered.txt"}recovered charlie-3
PASSbuiltin/file_roundtrip1 step(s), 3 leaf call(s)
step 0write, read, and list probe file3 leafs
sequence file_roundtrip_tree
do executor.builtin_write_file write_probe args {"content": "robonix ci probe alpha-7","path": "ci_probe.txt"} expect robonix/system/executor/builtin/write_file success
do executor.builtin_read_file read_probe args {"path": "ci_probe.txt"} expect robonix/system/executor/builtin/read_file success
do executor.builtin_list_dir list_probe args {"path": "."} expect robonix/system/executor/builtin/list_dir success
Observed plan round 0
PASS1:0robonix/system/executor/builtin/write_fileargs {"content": "robonix ci probe alpha-7","path": "ci_probe.txt"}wrote 24 bytes to /home/hanyulong/actions-runner/_work/robonix/robonix/examples/webots/ci_probe.txt
PASS1:1robonix/system/executor/builtin/read_fileargs {"path": "ci_probe.txt"}robonix ci probe alpha-7
PASS1:2robonix/system/executor/builtin/list_dirargs {"path": "."}dir logs dir primitives dir rbnx-boot dir scripts dir services dir sim file .gitignore file README.md file ci_probe.txt file ci_recovered.txt file robonix_manifest.ci.generated.yaml file robonix_manifest.yaml file soma.yaml file start_rviz…
PASSbuiltin/plan_control_builtins1 step(s), 4 leaf call(s)
step 0inspect and stop current plan4 leafs
sequence inspect_and_stop_plan
do executor.builtin_get_all_plans list_active_plans args {} expect robonix/system/executor/builtin/get_all_plans success
do executor.builtin_get_plan_status inspect_current_plan args {"plan_id": "1"} expect robonix/system/executor/builtin/get_plan_status success
do executor.builtin_stop_plan_at stop_current_plan_on_complete args {"op_id": "1","plan_id": "1","when": "on_complete"} expect robonix/system/executor/builtin/stop_plan_at success
do executor.builtin_get_all_plans list_armed_stop_point args {} expect robonix/system/executor/builtin/get_all_plans success
Observed plan round 0
PASS1:0robonix/system/executor/builtin/get_all_plansargs {}{"count":1,"plans":[{"cancelled":false,"description":"inspect_and_stop_plan","op_count":5,"plan_id":"1","stop_points":0}]}
PASS1:1robonix/system/executor/builtin/get_plan_statusargs {"plan_id": "1"}{"cancelled":false,"ops":[{"description":"inspect_and_stop_plan","kind":"sequence","op_id":"16","state":"pending","stop_point":null},{"description":"list_active_plans","kind":"do","op_id":"17","state":"succeeded","stop_point":null},{"descr…
PASS1:2robonix/system/executor/builtin/stop_plan_atargs {"op_id": "1","plan_id": "1","when": "on_complete"}Stop point set: RTDL plan '1' will be cancelled on_complete op_id=1.
PASS1:3robonix/system/executor/builtin/get_all_plansargs {}{"count":1,"plans":[{"cancelled":false,"description":"inspect_and_stop_plan","op_count":5,"plan_id":"1","stop_points":1}]}
PASSbuiltin/run_command1 step(s), 1 leaf call(s)
step 0echo marker1 leaf
sequence echo_marker_step
do executor.builtin_run_command echo_marker args {"command": "echo robonix-ci-marker-bravo"} expect robonix/system/executor/builtin/run_command success
Observed plan round 0
PASS1:0robonix/system/executor/builtin/run_commandargs {"command": "echo robonix-ci-marker-bravo"}robonix-ci-marker-bravo
PASScap/camera_snapshot1 step(s), 1 leaf call(s)
step 0camera snapshot1 leaf
sequence camera_snapshot_step
do tiago_camera.camera_snapshot camera_snapshot args {} expect robonix/primitive/camera/snapshot success
Observed plan round 0
PASS1:0robonix/primitive/camera/snapshotargs {}{ "header": { "stamp": { "sec": 1783235528, "nanosec": 504052877 }, "frame_id": "head_front_camera_rgb_optical_frame" }, "height": 480, "width": 640, "encoding": "jpeg", "is_bigendian": 0, "step": 4451…
PASScap/explore_smoke2 step(s), 3 leaf call(s)
step 0start explore1 leaf
sequence start_explore_step
do explore.explore_explore start_explore args {"area_hint": "ci local room","max_speed_m_s": 0.1,"timeout_s": 5.0} expect robonix/skill/explore/explore failure
Observed plan round 0
FAIL1:0robonix/skill/explore/exploreargs {"area_hint": "ci local room","max_speed_m_s": 0.1,"timeout_s": 5.0}hit 5.0s ceiling
step 1poll and cancel explore2 leafs
sequence poll_cancel_explore
do explore.explore_status explore_status args {"run_id": ""} expect robonix/skill/explore/explore/status success
do explore.explore_cancel explore_cancel args {"run_id": ""} expect robonix/skill/explore/explore/cancel success
Observed plan round 1
PASS2:0robonix/skill/explore/explore/statusargs {"run_id": ""}{ "known": true, "state": "TIMEOUT", "area_m2": 0.9900000295042994, "frontiers_left": 12, "elapsed_s": 32.166473388671875, "eta_s": -1.0, "detail": "hit 5.0s ceiling" }
PASS2:1robonix/skill/explore/explore/cancelargs {"run_id": ""}{ "ok": true, "message": "task already in terminal state timeout (no-op)" }
PASScap/lidar_snapshot1 step(s), 1 leaf call(s)
step 0lidar snapshot1 leaf
sequence lidar_snapshot_step
do tiago_lidar.lidar_snapshot lidar_snapshot args {} expect robonix/primitive/lidar/snapshot success
Observed plan round 0
PASS1:0robonix/primitive/lidar/snapshotargs {}{ "header": { "stamp": { "sec": 144, "nanosec": 304086426 }, "frame_id": "hokuyo" }, "angle_min": -1.5700000524520874, "angle_max": 1.5700000524520874, "angle_increment": 0.0047647953033447266, "time_inc…
PASScap/mapping_save1 step(s), 1 leaf call(s)
step 0map save1 leaf
sequence map_save_step
do mapping.map_save_map map_save args {"map_id": "ci_test_map","note": "robonix ci"} expect robonix/service/map/save_map success
Observed plan round 0
PASS1:0robonix/service/map/save_mapargs {"map_id": "ci_test_map","note": "robonix ci"}{ "ok": true, "map_id": "ci_test_map", "database_path": "/mapping/maps/ci_test_map/rtabmap.db", "detail": "saved ci_test_map → /mapping/maps/ci_test_map" }
PASScap/memory_roundtrip1 step(s), 2 leaf call(s)
step 0memory save + search2 leafs
sequence memory_save_search
do memory.memory_save save_fact args {"data": "ci-fact: the test beacon is alpha-7"} expect robonix/service/memory/save success
do memory.memory_search search_fact args {"data": "test beacon"} expect robonix/service/memory/search success
Observed plan round 0
PASS1:0robonix/service/memory/saveargs {"data": "ci-fact: the test beacon is alpha-7"}{ "data": "Memory saved and indexed." }
PASS1:1robonix/service/memory/searchargs {"data": "test beacon"}{ "data": "Relevant memories:\n- ci-fact: the test beacon is alpha-7" }
FAILcap/scene_object_fixture1 step(s), 1 leaf call(s)
step 0scene list objects1 leaf
sequence scene_objects_step
do scene.scene_list_objects list_scene_objects args {} expect robonix/system/scene/list_objects success
Observed plan round 0
PASS1:0robonix/system/scene/list_objectsargs {}{ "objects": [ { "id": "scene.object.robot_001", "label": "robot", "x": 0.8348730142339194, "y": 0.06017307948532505, "z": 0.0, "yaw": 0.028103474504646838, "last_seen_unix": 1783235652.89447…
PASScap/speech_speak1 step(s), 1 leaf call(s)
step 0speak1 leaf
sequence speech_speak_step
do speech.speech_speak speech_speak args {"target": "","text": "robonix continuous integration test"} expect robonix/service/speech/speak success
Observed plan round 0
PASS1:0robonix/service/speech/speakargs {"target": "","text": "robonix continuous integration test"}{ "ok": true, "detail": "spoke 35 chars on audio_driver" }
PASScap/voiceprint_list1 step(s), 1 leaf call(s)
step 0voiceprint list1 leaf
sequence voiceprint_list_step
do voiceprint.voiceprint_list voiceprint_list args {} expect robonix/service/voiceprint/list success
Observed plan round 0
PASS1:0robonix/service/voiceprint/listargs {}{ "users_json": "[]", "count": 0, "error": "db not initialised" }
PASSflow/fault_recovery2 step(s), 2 leaf call(s)
step 0faulty save1 leaf
sequence faulty_save_step
do memory.memory_save faulty_save args {} expect robonix/service/memory/save failure
Observed plan round 0
FAIL1:0robonix/service/memory/saveargs {}mcp tool error: Error executing tool save: 1 validation error for saveArguments data Field required [type=missing, input_value={}, input_type=dict] For further information visit https://errors.pydantic.dev/2.13/v/missing
step 1recover1 leaf
sequence recovery_save_step
do memory.memory_save recovery_save args {"data": "ci-flow recovered fact: beacon bravo-2"} expect robonix/service/memory/save success
Observed plan round 1
PASS2:0robonix/service/memory/saveargs {"data": "ci-flow recovered fact: beacon bravo-2"}{ "data": "Memory saved and indexed." }
PASSflow/object_navigation4 step(s), 4 leaf call(s)
step 0explore before object navigation1 leaf
sequence explore_before_navigation
do explore.explore_explore start_explore args {"area_hint": "ci local room","max_speed_m_s": 0.1,"timeout_s": 8.0} expect robonix/skill/explore/explore failure
Observed plan round 0
FAIL1:0robonix/skill/explore/exploreargs {"area_hint": "ci local room","max_speed_m_s": 0.1,"timeout_s": 8.0}hit 8.0s ceiling
step 1list scene objects during explored state1 leaf
sequence select_scene_object
do scene.scene_list_objects list_scene_objects args {} expect robonix/system/scene/list_objects success
Observed plan round 1
PASS2:0robonix/system/scene/list_objectsargs {}{ "objects": [ { "id": "scene.object.robot_001", "label": "robot", "x": -4.407423969998787, "y": 1.5096202087271422, "z": 0.0, "yaw": 0.018467286788607637, "last_seen_unix": 1783235852.770154…
step 2resolve detected object approach pose1 leaf
sequence resolve_approach_pose
do scene.scene_goal_near goal_near_object args {"object_id": {"var": "object_id"}} expect robonix/system/scene/goal_near success
Observed plan round 2
PASS3:0robonix/system/scene/goal_nearargs {"object_id": "scene.object.potted_plant_001"}{ "reachable": true, "x": 0.5030594789109033, "y": 0.26351254936712276, "yaw": 0.236136054986952, "reason": "approach pose for 'potted_plant' (scene.object.potted_plant_001)" }
step 3navigate to object approach pose1 leaf
sequence navigate_to_object
do nav2.navigation_navigate navigate_object_goal args {"goal": {"header": {"frame_id": "map","stamp": {"nanosec": 0,"sec": 0}},"pose": {"orientation": {"w": {"transform": "cos_half","var": "nav_yaw"},"x": 0.0,"y": 0.0,"z": {"transform": "sin_half","var": "nav_yaw"}},"position": {"x": {"var": "nav_x"},"y": {"var": "nav_y"},"z": 0.0}}}} expect robonix/service/navigation/navigate success
Observed plan round 3
PASS4:0robonix/service/navigation/navigateargs {"goal": {"header": {"frame_id": "map","stamp": {"nanosec": 0,"sec": 0}},"pose": {"orientation": {"w": 0.9930380635658078,"x": 0.0,"y": 0.0,"z": 0.11779390607951976},"position": {"x": 0.5030594789109033,"y": 0.26351254936712276,"z": 0.0}}}}{ "known": true, "state": "SUCCEEDED", "detail": "succeeded" }
PASSflow/patrol_observe3 step(s), 4 leaf call(s)
step 0parallel sensor capture2 leafs
parallel observe_step
do tiago_camera.camera_snapshot observe_snapshot args {} expect robonix/primitive/camera/snapshot success
do tiago_lidar.lidar_snapshot observe_lidar args {} expect robonix/primitive/lidar/snapshot success
Observed plan round 0
PASS1:0robonix/primitive/camera/snapshotargs {}{ "header": { "stamp": { "sec": 1783235877, "nanosec": 528506040 }, "frame_id": "head_front_camera_rgb_optical_frame" }, "height": 480, "width": 640, "encoding": "jpeg", "is_bigendian": 0, "step": 4829…
PASS1:1robonix/primitive/lidar/snapshotargs {}{ "header": { "stamp": { "sec": 418, "nanosec": 224449072 }, "frame_id": "hokuyo" }, "angle_min": -1.5700000524520874, "angle_max": 1.5700000524520874, "angle_increment": 0.0047647953033447266, "time_inc…
step 1remember1 leaf
sequence remember_step
do memory.memory_save remember_observation args {"data": "ci-flow observation: snapshot captured at waypoint 1"} expect robonix/service/memory/save success
Observed plan round 1
PASS2:0robonix/service/memory/saveargs {"data": "ci-flow observation: snapshot captured at waypoint 1"}{ "data": "Memory saved and indexed." }
step 2recall1 leaf
sequence recall_step
do memory.memory_search recall_observation args {"data": "waypoint 1"} expect robonix/service/memory/search success
Observed plan round 2
PASS3:0robonix/service/memory/searchargs {"data": "waypoint 1"}{ "data": "Relevant memories:\n- ci-fact: the test beacon is alpha-7\n\nci-flow recovered fact: beacon bravo-2\n\nci-flow recovered fact: beacon bravo-2\n\nci-flow recovered fact: beacon bravo-2\n\nci-flow observation: snapshot captured …

Logs

Select a log
-No log selected.

Runtime Contract Coverage

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.

AreaContract id
robonix/primitive/camerarobonix/primitive/camera/snapshot
robonix/primitive/lidarrobonix/primitive/lidar/snapshot
robonix/service/maprobonix/service/map/save_map
robonix/service/memoryrobonix/service/memory/save
robonix/service/memoryrobonix/service/memory/search
robonix/service/navigationrobonix/service/navigation/navigate
robonix/service/speechrobonix/service/speech/speak
robonix/service/voiceprintrobonix/service/voiceprint/list
robonix/skill/explorerobonix/skill/explore/explore
robonix/skill/explorerobonix/skill/explore/explore/cancel
robonix/skill/explorerobonix/skill/explore/explore/status
robonix/system/executorrobonix/system/executor/builtin/get_all_plans
robonix/system/executorrobonix/system/executor/builtin/get_plan_status
robonix/system/executorrobonix/system/executor/builtin/list_dir
robonix/system/executorrobonix/system/executor/builtin/read_file
robonix/system/executorrobonix/system/executor/builtin/run_command
robonix/system/executorrobonix/system/executor/builtin/stop_plan_at
robonix/system/executorrobonix/system/executor/builtin/write_file
robonix/system/scenerobonix/system/scene/goal_near
robonix/system/scenerobonix/system/scene/list_objects