merge: fold dev-next into dev - #228
Merged
Merged
Conversation
Change-Id: I612387073d557cd7da9d6c0eb6e546036b84f508
Change-Id: I6549314863f95d8d011a5a42c86042b1f9e1979b
Change-Id: Idfb094998e2f37b4028268a9c33e996f12b51232
Change-Id: I880482047dc7b0c32ca1f9cd350e0e45187d0719
Change-Id: I5905ef10ed6a85474d13f82c201fb0c17ec87f5b
Set SCENE_ANNOTATIONS_DIR in start_native.sh to a package-local persisted path when deploy configuration does not provide one. This prevents native Scene from inheriting the Docker /data default and failing room annotation initialization with permission denied. Verification: bash -n; Jetson no-actuator boot initialized the annotation store and room create/update idempotency passed through the user API.
Stage an already-prefetched ViT-B-32 weight from Scene HF cache into the Ultralytics weights path by hard link with copy fallback. Fail the build when the resulting Ultralytics path is still missing, preventing a later long start-time download. Verification: bash -n on the resulting Scene build script; prior Jetson cache fixture verified the staged weight is byte-identical.
Keep Scene map deletion aligned with mapping deletion. After the standard robonix/service/map/delete_map call succeeds, delete only the matching annotation JSON partition and persisted object rows. Add partition-isolation coverage for room deletion.
Keep robot-local ALSA audio available while registering the Atlas-discovered reverse client bridge. Leave hands-free disabled until robonix-client supplies its persisted input/output route; service paths now use ROBONIX_SOURCE_PATH.
Expose robot-local hands-free turns through the standard Liaison VoiceEvent stream, fix wake-word audio chunk decoding, and improve reverse audio diagnostics. Also give Scene room annotations stable colors, centered labels, and independently scrollable compact lists.
Add --no-update-check to rbnx build and skip the remote freshness pass while retaining normal package resolution and compilation. Cover the new CLI option with a parser regression test.
The graph had no loop closures at all, so the wheel odometry chain was never corrected and a 120 s explore doubled every revisited wall. Allow proximity detection and Vis+ICP registration for loop closures while neighbour links stay on odometry, which is what protects in-place rotation, and cap the optimizer error so a bad link cannot twist the map. Assisted-by: Claude Code:claude-fable-5
enkerewpo
had a problem deploying
to
gpu-testing
August 22, 2026 02:19 — with
GitHub Actions
Failure
The range finder was advertised as depth_registered and RTAB-Map reprojects it with rgb/camera_info, but it carried the depth optical frame, which the URDF places 25 mm to the side of the colour frame. Every feature landed 25 mm off, so visual loop closure rejected all 31 candidates with zero inliers and only scan proximity corrected drift. Assisted-by: Claude Code:claude-fable-5
enkerewpo
had a problem deploying
to
gpu-testing
August 22, 2026 02:53 — with
GitHub Actions
Failure
Pilot resolves api_format to "openai" by default and rejects every other value, so the manifest line adds nothing and contradicts the merged manifest-hygiene test. Assisted-by: Claude Code:claude-opus-5
The dev-next test file asserted dev-next's own tree, so on the merged tree it failed 6 tests with 1 error while CI only gates cargo. Align what guards real decisions and delete what merely photocopies files: - vitals listener now expects 127.0.0.1 (#188 provider-loopback, the direction this merge chose over dev-next's 0.0.0.0) - drop the sim-stop scoping test and its helper script: they test dev-next's per-instance stop.sh, which the merge deliberately did not take (recorded as a follow-up in the PR) - drop content mirrors that duplicate pinned versions, rtabmap parameter values, sed lines, and README strings into assertions; they break on any legitimate edit without guarding behaviour 15 tests remain and pass on this tree. Assisted-by: Claude Code:claude-opus-5
The stock Astra places the range finder 26 mm beside the colour camera, yet the driver advertises the stream as depth_registered and RTAB-Map reprojects it with the colour camera_info. At 1 m that parallax is about 12 px, so every visual loop closure was rejected with zero inliers and only scan proximity ever corrected drift. Both devices already share a field of view and resolution, so co-locate them in a deployment-owned PROTO and zero the matching URDF offset. Assisted-by: Claude Code:claude-fable-5
…rge/dev-next-into-dev
Frontier exploration takes a different path every run, and the resulting spread in the quality metrics was wider than any parameter change I was trying to measure. A scripted 1.5 m rectangle covers the same ground each time and returns to its start, so the graph has to close the loop. Assisted-by: Claude Code:claude-fable-5
enkerewpo
had a problem deploying
to
gpu-testing
August 22, 2026 04:04 — with
GitHub Actions
Failure
The chassis move contract is gRPC and the executor only dispatches MCP, so an RTDL scenario cannot drive the robot at all. Publish the rectangle directly instead, as a best-effort CI step that cannot fail the suite. Assisted-by: Claude Code:claude-fable-5
enkerewpo
had a problem deploying
to
gpu-testing
August 22, 2026 04:20 — with
GitHub Actions
Failure
Walls that stay doubled after a revisit mean the odometry chain was never corrected. That is visible in the database: only neighbour links means no loop closure or proximity link ever landed. Group Link rows by type in the probe that already opens the map, so every run says which kinds of links the graph actually got. Assisted-by: Claude Code:claude-fable-5
memgraph asked for grpcio>=1.81.1 while scene pins ==1.80.0, so uv could not resolve the workspace at all and memgraph, memory, speech and voiceprint all failed to build. CI already documents why 1.80.0 is the number: codegen's grpcio-tools has to match the runtime grpcio or RegisterService fails on a version skew. Assisted-by: Claude Code:claude-fable-5
Commit 48fe316 in the mapping service hardcoded RGBD/CreateOccupancyGrid=true to keep saved maps loadable, but with an RGB-D camera the grid is already built from depth on demand; caching a local grid on every node stacks hundreds of node grids into the radial smear that has been plaguing Webots maps since early July. Turn it off in the deployment override; map save/load stays covered by the CI persistence check. Assisted-by: Claude Code:claude-fable-5
tiago_health still advertised robonix/primitive/health/driver while the rest of the deployment moved to the shared robonix/lifecycle/driver, so the provider aborted at startup with 'failed to declare required lifecycle Driver' and took Soma stage 1, and with it the whole Webots boot, down with it. Assisted-by: Claude Code:claude-fable-5
Turning the per-node cache off does stop the radial smear, but save_map then refuses to publish: without those cached grids RTAB-Map produces no occupancy snapshot, and scene's /api/maps/save returns 502 'map preview/occupancy snapshot was not produced'. The July 9 hardcode was load-bearing after all. Assisted-by: Claude Code:claude-fable-5
tiago_health kept its own copy of resolve_advertise_host and fell back to ROBONIX_ATLAS=127.0.0.1:50051. Inside a bridge-networked sim container that address is the container itself, so declaring the lifecycle Driver failed with UNAVAILABLE and Soma stage 1 aborted the whole deployment. Source the shared container_network.sh helper instead, which resolves the gateway address and extends no_proxy so a host proxy does not swallow the dial. sim/stop.sh had the mirror-image problem: it hardcoded the default container names while start.sh honours ROBONIX_SIM_CONTAINER and friends, so an isolated CI run tore down the interactive user's containers and leaked its own. Assisted-by: Claude Code:claude-fable-5
That change assumed wheel odometry drifts over a long explore, which is true on hardware but not in Webots: the simulator's odometry is exact, so ICP and proximity links have no drift to correct and only mis-register against repetitive walls, yanking poses and duplicating the walls they were meant to align. Back to the registration profile that kept walls single. Assisted-by: Claude Code:claude-fable-5
CLAUDE.md requires a comment on any body over five lines; four functions in the health service lost theirs in the merge. Assisted-by: Claude Code:claude-fable-5
Only one of the two warnings was updated to the supported flow; the other still told operators to edit mapping's config.map_id, which the UI does not expose. The merge deleted the test that asserts both messages agree, which is what let the stale one through, so restore it. Assisted-by: Claude Code:claude-fable-5
I based tonight's tuning on d383f1b's claim that its profile 'kept walls single', but that commit is from this same work session and exists only on this branch - it is not a historical known-good state, so the claim was never independent evidence. dev's profile is what actually has a track record. Restore it exactly and leave the parameters alone until a measured comparison justifies changing them. Assisted-by: Claude Code:claude-fable-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Folds
dev-nextintodev.dev-nextis not modified — it stays as the release/demo branch for the upcoming on-site work.Why this was not a fast-forward
The branches had diverged in both directions: 114 commits on
dev-next, 94 ondev, common ancestor26db769a. 62 files conflicted. 23 commit pairs shared a subject across both branches, 14 of them byte-identical patches — the same fix applied twice.How each conflict was decided
Not "take one branch". Per subsystem, on evidence:
rbnxlaunch/deploy,somaregistration_idto the Atlas provider.registration_iddid not.is_new_provider_registrationreads one field instead of opening a metadata-onlyConnectCapabilityprobe.camera/extrinsics+ Scene transform codesoma/msg/SensorExtrinsic.msgmemory/srv/*127.0.0.1)0.0.0.0.GetUrdfassetsinclude_assets/assets, so dev's asset reader was ported onto dev-next's service.RBNX_CODEGEN_PYTHONis used by 10 scripts on dev versus 5 for dev-next's wrapper, and postdates it.dev-nextitself.sim/start.shValidation
cargo fmt --all -- --checkcleancargo clippy --workspace --all-targets -- -D warningscleancargo test --workspace --all-targets— 296 passed, 0 failedcancel_all_executor_plans(never existed on dev — the cancel-all path is dev'sMetaPlanOp::CancelAll, which is present).Four merge defects were found and fixed rather than shipped: a duplicated
config_jsonclap argument, four duplicated helpers insoma/store.rs, a duplicated executor test, andis_builtin_systembeing called without a definition after taking dev-next'sdeploy.rs.Not included
runtime_state.shis merged and used bystart.sh, but splicing it intostop.shproduced invalid shell twice, sostop.shis dev's. Worth a follow-up.Update 2026-08-21
f6cacfc4(URDF out of Pilot's prompt; one trivial conflict — dev-next's older file predates dev'scompact_yamltests, tests kept).fix(liaison): the runner's newer clippy flagschunks_exact(2); switched toas_chunks::<2>().