From 71604580c2902a7ca7720daf4325f9fc92e134c1 Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Sun, 5 Jul 2026 16:46:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?build:=20re-pin=20the=20telemetry=20wave=20?= =?UTF-8?q?=E2=80=94=20xmBase=20v0.3.0=20+=20instrumented=20xmDriver;=20th?= =?UTF-8?q?e=20assembly=20builds=20the=20SDK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The lockstep wave lands: components/base pins the v0.3.0 release (telemetry API + console binding), components/driver pins the migrated + instrumented main (XLOG->XM, driver..* metrics/health), and components/telemetry pins the SDK main that builds against v0.3.0. XMOTION_WITH_TELEMETRY defaults ON — the assembly now builds foundation, SDK, and drivers together (verified locally, 100%). spdlog leaves the CI dependency list (no built component needs it). xmNavigation stays parked pending its HAL migration. --- .github/workflows/ci.yml | 11 +++++------ CMakeLists.txt | 4 +--- components/base | 2 +- components/driver | 2 +- components/telemetry | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b5023d..8083d84 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,9 +4,8 @@ name: Assembly # builds them together — the cross-component integration each component's own # CI cannot catch on its own. The assembled set is the components whose # renames/migrations are mutually consistent (ADR 0003 lockstep): -# - xmBase + xmDriver build; xmTelemetry is cloned (pin/wiring validated) -# but stays TELEMETRY=OFF until the pinned xmBase carries the telemetry -# API it builds against (xmBase PR #18). +# - xmBase + xmTelemetry + xmDriver build together (the telemetry wave: +# xmBase v0.3.0, the SDK, and the instrumented drivers). # - xmNavigation returns when its HAL migration lands (it still includes # pre-redesign xmDriver headers, e.g. xmdriver/hal/*_interface.hpp). @@ -21,7 +20,7 @@ env: jobs: assemble: - name: Assemble (base + driver) + name: Assemble (base + telemetry + driver) runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -57,12 +56,12 @@ jobs: - name: Install dependencies (union of component deps) run: | sudo apt-get update && sudo apt-get install -y \ - libeigen3-dev libspdlog-dev libasio-dev libmodbus-dev libevent-dev \ + libeigen3-dev libasio-dev libmodbus-dev libevent-dev \ libevdev-dev libgl1-mesa-dev libglfw3-dev libcairo2-dev libtbb-dev \ libboost-all-dev libgsl-dev libopencv-dev libyaml-cpp-dev \ libncurses-dev libpcl-dev libglm-dev - - name: Configure assembly (base + driver) + - name: Configure assembly (base + telemetry + driver) run: > cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DXMOTION_WITH_NAVIGATION=OFF -DENABLE_VISUALIZATION=OFF diff --git a/CMakeLists.txt b/CMakeLists.txt index 746be18..e959e73 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,9 +18,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # -- Options ---------------------------------------------------------------- # xmBase (foundation) is always built. The rest are opt-in so a consumer only # pays for the dependency footprint it actually needs. -# xmTelemetry stays OFF until the pinned xmBase carries the telemetry API it -# builds against (xmBase PR #18 / ABI v3) — flip ON at the next re-pin wave. -option(XMOTION_WITH_TELEMETRY "Build xmTelemetry (observability SDK)" OFF) +option(XMOTION_WITH_TELEMETRY "Build xmTelemetry (observability SDK)" ON) option(XMOTION_WITH_DRIVER "Build xmDriver (host hardware drivers)" ON) option(XMOTION_WITH_NAVIGATION "Build xmNavigation (motion algorithms)" ON) option(XMOTION_WITH_VIEWER "Build xmViewer (visualization)" OFF) diff --git a/components/base b/components/base index 10e204d..fa73d7e 160000 --- a/components/base +++ b/components/base @@ -1 +1 @@ -Subproject commit 10e204ded289852b931f91f553d4945a31a33282 +Subproject commit fa73d7e3cff513d75fad249505ef3968ca0f6de2 diff --git a/components/driver b/components/driver index 04be8c5..3634995 160000 --- a/components/driver +++ b/components/driver @@ -1 +1 @@ -Subproject commit 04be8c5185155d9420cefc850c0eb5adec6cbdf3 +Subproject commit 36349953efd61dab7494a6df8b9b0badbfd5c7a5 diff --git a/components/telemetry b/components/telemetry index 9680a4f..6582650 160000 --- a/components/telemetry +++ b/components/telemetry @@ -1 +1 @@ -Subproject commit 9680a4f75cfedb6c62d75f4314160452f8729fd0 +Subproject commit 658265047fee2ac8178d3a5e660f5c7277e6fd5c From 5b60c582270d025b9fcdc9e9bf5cb860d33a24f7 Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Sun, 5 Jul 2026 16:46:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20telemetry=20wave=20status=20?= =?UTF-8?q?=E2=80=94=20xmDriver=20migrated+instrumented,=20umbrella=20re-p?= =?UTF-8?q?in=20in=20PR=20#16?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 969f0a5..b4ed964 100644 --- a/TODO.md +++ b/TODO.md @@ -6,8 +6,8 @@ The task tracker for the family. Cross-repo sequencing lives here; each componen - [x] xmBase: merge PR [#18](https://github.com/rxdu/xmBase/pull/18) (telemetry docs package + examples + ABI v3) - [x] xmBase: cut v0.3.0 (telemetry API baseline — released 2026-07-05) -- [ ] xmDriver: migrate `XLOG_*` → `XM_*` telemetry API (one-touch, clean break); adopt driver signals (FreshnessMonitor age, tx-queue depth, fault counters, DeviceHealth) through the API -- [ ] Umbrella: re-pin xmBase + xmDriver after the migration; flip `XMOTION_WITH_TELEMETRY=ON` in the assembly +- [x] xmDriver: migrate `XLOG_*` → `XM_*` telemetry API + adopt driver signals through the API (PRs #29 + #30) +- [~] Umbrella: re-pin xmBase + xmDriver + telemetry; `XMOTION_WITH_TELEMETRY=ON` (PR #16, awaiting merge) - [x] xmBase: replace the interim spdlog binding with the permanent dependency-free console binding (shipped in v0.3.0 — spdlog left the foundation) - [ ] xmNavigation: HAL migration + telemetry-instrumented refactor (includes ADR 0002 Phase-2 decoupling: drop bundled `third_party/xmMu`/`xmSigma` copies, depend on the renamed components) - [ ] Umbrella: re-pin xmNavigation; flip `XMOTION_WITH_NAVIGATION=ON` — full assembly returns