Skip to content

fix(pilot): retry opening the VLM stream once - #302

Merged
enkerewpo merged 1 commit into
devfrom
fix/webots-after-streaming
Oct 27, 2026
Merged

enkerewpo merged 1 commit into
devfrom
fix/webots-after-streaming

Conversation

@enkerewpo

Copy link
Copy Markdown
Member

Problem

Since #280 (RTDL Streaming Execution) the Webots integration suite on dev fails the same three scenarios on both scene backends: cap/explore_smoke, cap/scene_object_fixture and flow/object_navigation. In each, rbnx ask ends with pilot stream error: deadline has elapsed; Pilot sends the round's prompt, gets no response within the 30 s VLM idle timeout and ends the turn, and the fake VLM later hits BrokenPipeError writing its reply.

These scenarios deliberately hold the first plan for 35-45 s so exploration and perception have time to run. Before #280, Pilot retried opening the VLM stream once after the 30 s timeout, and the retry received the reply a few seconds later. #280 replaced that with .await??, so the first timeout now ends the turn.

Fix

Restore one bounded retry when opening the VLM stream fails or times out. Opening the stream dispatches no RTDL node, so the retry cannot repeat an action. A stream that stalls after it opened still ends the turn and cancels its plan as before, and the idle timeout stays 30 s.

Testing

  • scripts/test_execute_stream.py gains three cases: an opening delayed past the timeout is retried once with the same prompt and finishes; a model that never answers is requested twice and the turn fails; a stream that stalls after dispatching an action is requested once and the action runs once. The delayed case fails on the unfixed binary.
  • Reproduced with real Atlas, Pilot and Executor plus the unchanged fake VLM and scenario timelines: all three scenarios pass at bb66fabf, time out at 38ead76b, and pass with this fix.
  • cargo fmt --check, cargo clippy -p robonix-pilot --all-targets -D warnings, cargo test -p robonix-pilot (111 passed), testing/simulate_ci.py (16 scenarios), testing unit tests (24 passed).
  • The Webots suite still needs a run on dev-ci-test before this lands on dev.

#280 dropped the single retry when opening the VLM stream timed out or
failed, so a turn now ends after the first 30 s wait. Three Webots
scenarios (explore_smoke, scene_object_fixture, object_navigation) give
the model 35-45 s before the first plan to leave time for exploration
and perception; they relied on that retry and have failed on dev since.

Opening the stream dispatches no RTDL node, so retrying it once cannot
repeat an action. A stream that stalls after it opened still ends the
turn as before. The idle timeout stays 30 s.
@github-actions github-actions Bot added type:bug Bug fix (fix:) comp:pilot system/pilot comp:docs docs/ and READMEs labels Oct 27, 2026
@enkerewpo
enkerewpo merged commit 58d0382 into dev Oct 27, 2026
12 of 14 checks passed

This branch had an error being deployed

1 failed deployment
gpu-testing — ff43f4e4 Deployed Oct 27, 2026 by enkerewpo via Webots integration suite (dualmap) #831
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:docs docs/ and READMEs comp:pilot system/pilot type:bug Bug fix (fix:)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant