Robonix Webots CI Report

ALL REPORTS >>

Generated on 2026-07-02T21:29:13+08:00

ResultPASS
Scenarios14/14 passed
Failures0
Score100

LLM-Assisted Analysis

✅ All 14 scenarios passed — new Vitals system added

Provider: deepseek · Model: deepseek-chat · Generated On: 2026-07-02T13:29:13+00:00 · Stage: success · Confidence: high

All 14 Webots integration scenarios passed (100% pass rate). This PR introduces the new `robonix-vitals` health monitoring system, including Soma health stream ingestion, component-tree normalization, threshold matching, and state-change push. The CI exercised existing capabilities (camera, lidar, explore, navigation, memory, speech, voiceprint, scene, executor builtins) and flow scenarios (fault recovery, object navigation, patrol observe). No regressions detected.

PR Changes

Test Result

Suggested Fix

Risks Or Watchouts

Evidence

SourceLineExcerpt
5"failed": 0,
2"total": 14,
4"rate": 1.0,

Run Metadata

Generated On2026-07-02T21:29:13+08:00
Test Report Generated On2026-07-02T21:28:34+08:00
Run Id28592611160
WorkflowRobonix CI Bot
Eventissue_comment
Repositorysyswonder/robonix
Tested Commitb705a3575d18
Tested Commit SubjectMerge b42864acbb239e9064a72bf783c862cc719b4308 into 1cc48437b3216952973e482037f295da88c83046
Tested Commit AuthorXu Jinyang <72930776+AuYang261@users.noreply.github.com>
Tested Commit Date2026-07-02T16:04:36+08:00
Pr Number#111
Pr Titlefeat(vitals): Soma health stream ingestion, component-tree normalization, selector threshold matching, and state-change push
Pr AuthorAuYang261
Pr Urlhttps://github.com/syswonder/robonix/pull/111
Pr Head Refdev-vitals
Pr Head RepoAuYang261/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
Sha192c1bce990e
Pr Head Shab42864acbb239e9064a72bf783c862cc719b4308
Report Id28592611160
Test Refrefs/pull/111/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 Id150
Sim Containerci-28592611160-sim
Sim Imageci-28592611160-sim
Webots Stream Port23160
Webots Viewer Port24160
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
-
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
-
PASScapscene_object_fixture1
robonix/system/scene/list_objects
-
PASScapspeech_speak1
robonix/service/speech/speak
-
PASScapvoiceprint_list1
robonix/service/voiceprint/list
-
PASSflowfault_recovery2
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 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 start_rviz.sh
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": 1782998688, "nanosec": 275521993 }, "frame_id": "head_front_camera_rgb_optical_frame" }, "height": 480, "width": 640, "encoding": "jpeg", "is_bigendian": 0, "step": 4448…
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": 36.14756488800049, "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": 126, "nanosec": 704205606 }, "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" }
PASScap/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.8132748118881863, "y": 0.05638984348955843, "z": 0.0, "yaw": 0.01107743731614128, "last_seen_unix": 1782998816.506165…
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.450707184150419, "y": 1.502734468998682, "z": 0.0, "yaw": 0.006211807729761399, "last_seen_unix": 1782998883.359522 …
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.5053313004393116, "y": 0.2352742334022926, "yaw": -0.011528050859937246, "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.9999833880514144,"x": 0.0,"y": 0.0,"z": -0.005763993512701912},"position": {"x": 0.5053313004393116,"y": 0.2352742334022926,"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": 1782998910, "nanosec": 101646661 }, "frame_id": "head_front_camera_rgb_optical_frame" }, "height": 480, "width": 640, "encoding": "jpeg", "is_bigendian": 0, "step": 5004…
PASS1:1robonix/primitive/lidar/snapshotargs {}{ "header": { "stamp": { "sec": 255, "nanosec": 84207808 }, "frame_id": "hokuyo" }, "angle_min": -1.5700000524520874, "angle_max": 1.5700000524520874, "angle_increment": 0.0047647953033447266, "time_incr…
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 observation: snapshot captured at waypoint 1" }

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/list_dir
robonix/system/executorrobonix/system/executor/builtin/read_file
robonix/system/executorrobonix/system/executor/builtin/run_command
robonix/system/executorrobonix/system/executor/builtin/write_file
robonix/system/scenerobonix/system/scene/goal_near
robonix/system/scenerobonix/system/scene/list_objects