feat!: deliver runtime v2 and world-first Live simulation - #476
feat!: deliver runtime v2 and world-first Live simulation#476jBernavaPrah wants to merge 12 commits into
Conversation
Signed-off-by: jbernavaprah <webjure@gmail.com>
Signed-off-by: jbernavaprah <webjure@gmail.com>
Signed-off-by: jbernavaprah <webjure@gmail.com>
Signed-off-by: jbernavaprah <webjure@gmail.com>
|
Follow-up corrections on this PR: transaction-owned host SIGTERM now uses orderly world cleanup and retains WorldStopped/Complete in native rollback proof; native parsing now depends directly on webots-proto-ast, removing unused JavaScript/template/resolver dependencies and their fast-float advisory chain; tracked-source policy, Rust 1.98 chunk-iteration lints, and profile-specific rustdoc have been corrected. Native package tests pass locally (76 + 4 + 11 + 3), all 17 policy rules pass, and strict rustdoc passes across the five explicit host/authoring profile combinations. Linux CI is rerunning. The existing Zenoh lz4_flex advisory is not claimed as resolved. Remaining native and published-artifact acceptance gates in the PR body still apply. |
Signed-off-by: jbernavaprah <webjure@gmail.com>
|
Linux CI follow-up: workspace policy and Clippy now pass. The renderer diagnostic identified missing libEGL.so.1 on the runner, rather than a version mismatch. The native renderer job now installs the runtime library set from the R2025a upstream installation script: https://github.com/cyberbotics/webots/blob/R2025a/scripts/install/linux_runtime_dependencies.sh. CI is rerunning with those prerequisites; no renderer pass is claimed yet. |
Signed-off-by: jbernavaprah <webjure@gmail.com>
Signed-off-by: jbernavaprah <webjure@gmail.com>
|
The cancelled long-running test jobs were still compiling participant-metadata fixture binaries, not stuck in runtime simulation. The all-feature job had already passed 604 core tests and the preceding integration suites before those cold fixture builds. I cancelled the already-failed run to inspect this, so the full suites remain unverified remotely, not failed assertions or successful runs. The new rerun includes the exact Mesa environment-notice handling; all asset warnings and errors remain fatal in the renderer proof. Latest local host library checks pass 77 tests plus the explicit native renderer probe, with Clippy warnings denied. |
Signed-off-by: jbernavaprah <webjure@gmail.com>
|
Review corrections are now at
Local checks passed: targeted world transport regressions, shared-plan tests, host binary suite, cleanup regression, clippy, formatting, and workspace policy. The full PR CI is running. |
|
Follow-up correction is pushed in b1016d0. This completes the structural recommendations in the simulator owner:
Validated locally with all framework features (606 core tests), focused Webots shared/host/controller suites, clippy with warnings denied, formatting, and workspace policy. Native Webots renderer remains covered by CI. |
Purpose
Deliver world-first Live simulation together with the supervisor-backed runtime bootstrap and monotonic scheduling foundation.
This is one breaking implementation train, not two independently releasable changes.
WorldBundleassets and provenance, shared geometry, and a complete robot simulation plan.StepEventprogress through existing bounded delivery lanes with transition-correlated monotonic timestamps.Important boundaries
Live supports Webots R2025a and native
REAL_TIMEonly.Physics progress is not execution time and never gates service or brain scheduling.
There is no accelerated mode, profile selector, participant acknowledgement, public advance endpoint, or Lockstep implementation.
Native controller binaries are not supported on musl or Linux aarch64 in this release.
OBJ support is a conservative robot-mesh subset; authored world meshes remain self-contained GLB.
The exported contract is breaking relative to 0.67.1 and requires 0.68.0 or later.
The existing managed 0.67.2 release proposal is not the release vehicle for this implementation as currently generated.
Do not publish a bootstrap-only intermediate train.
Validation
ae7affeaaac984e9d6ba7c0dcd38f85e27a6a8c4, including the Linux native renderer, full workspace tests, and canonical consumer-profile matrix.Local native evidence, not released-artifact acceptance
Using one coherent local owner checkout on macOS arm64 with R2025a and disposable robot-model copies with test brains:
Expired, no selected command, and appliedStopfor both motors.SupervisorLostwith complete cleanup.Devicefault path; that robot parked and was removed withControllerFaultand complete cleanup while the other robot and physics continued.REAL_TIME, while a slow service kept its monotonic schedule.StepEventreturnedWouldBlockat the existing 16 MiB byte bound; native progress continued until the typed controller fault, the router was resumed immediately, and member removal completed without ending the other robot or world.Missing/Stopto both motors, then fresh revision-2 commands were selected at transition 26.All 102 actuation records from the bounded run were retained without drops.
ControllerLost, retained memberControllerFault, and reported unavailable isolation as incomplete cleanup instead of claiming recovery.UnsupportedNativeMode, named the observedFastmode, retained terminal evidence, and removed native processes.Cleanup correctly recorded the missing controller stop acknowledgement after the fatal exit.
Host-discovered startup, paused import, sensor anchoring, orderly removal, park acknowledgement, authority loss, and terminal classification defects have regression tests and native reruns.
Review and publication boundary
The local implementation, native visual, command-admission, transport-saturation, pacing, and cooperative recovery evidence are ready for review.
Real multi-artifact compatibility cases and the full published-artifact workflow remain required after the coordinated owner train is available.
An earlier, longer router suspension ended as
RemovalFailed; the bounded 1 ms-world retry above separately provedWouldBlock, cooperative parking, complete member cleanup, and continued peer progress.Artifact inspection found shared Cargo target reuse between disposable test projects, so these runs are not claimed as unmodified-brain acceptance.
Their project compilation caches were isolated before repeating that case.
The repeated compositional run now verifies the original no-op brain: its staged SHA-256 matches the fresh isolated build, neither slow-probe marker is present, q leaves the execution and world live, native REAL_TIME advancement succeeds, and confirmed world stop plus deferred robot cleanup complete successfully.
This is still a local-owner overlay, not published-artifact acceptance.
Review and merge this owner only under the normal human review and CI gates, then publish the complete breaking train.
The dependent CLI must refresh real dependency pins and lockfiles to that published owner and repeat the released workflow before consumer merge/publication and migration-repository retirement.