ctest -R rig_composer fails on current main (0fbe043) on a Linux dev box, 20 assertions, and identically on three unrelated feature branches built from main today. Noticed while landing #1699 work; not caused by it.
Shape of the failures (tests/tests_rig_composer.cpp):
:89 / :91 CHECK(got.position.x == Approx(3.0)) → got 0.0; .z == Approx(-4.0) → got 0.0 (composed navigation offset never applied, position stays at the 1.6 m origin)
:583 CHECK(g_qwerty_set_calls == 1) → 0 (the composer never calls the navigation device's setter)
- WARN emitted:
Rig composer: rig role -1 -> 0 ('Fake navigation'), continuing at (0.000, 1.600, 0.000).
Likely cause: the test was last aligned in #1380; the qwerty driver's navigation contract changed on 2026-09-23 (5d885f041 feat(qwerty): report analytic velocity, and make all six axes driveable (#1692), 091ea0ded test(qwerty): …). The composer's role resolution (rig role -1) and the setter call count both look like a contract mismatch between the composer and the reworked navigation device. Unverified beyond the symptom — bisect between 1bd0779c8 and 5d885f041.
Why nobody saw it: build-linux.yml and scripts/build_linux.sh run the headless selftest but never ctest; Windows/macOS CI may run it — check whether the test is Linux-only-failing or skipped there. Consider adding ctest --output-on-failure to the Linux Selftest job (with the doc-only short-circuit preserved).
Repro: ./scripts/build_linux.sh && cd build && ctest -R rig_composer --output-on-failure.
ctest -R rig_composerfails on currentmain(0fbe043) on a Linux dev box, 20 assertions, and identically on three unrelated feature branches built from main today. Noticed while landing #1699 work; not caused by it.Shape of the failures (
tests/tests_rig_composer.cpp)::89/:91CHECK(got.position.x == Approx(3.0))→ got0.0;.z == Approx(-4.0)→ got0.0(composed navigation offset never applied, position stays at the 1.6 m origin):583CHECK(g_qwerty_set_calls == 1)→0(the composer never calls the navigation device's setter)Rig composer: rig role -1 -> 0 ('Fake navigation'), continuing at (0.000, 1.600, 0.000).Likely cause: the test was last aligned in #1380; the qwerty driver's navigation contract changed on 2026-09-23 (
5d885f041 feat(qwerty): report analytic velocity, and make all six axes driveable (#1692),091ea0ded test(qwerty): …). The composer's role resolution (rig role -1) and the setter call count both look like a contract mismatch between the composer and the reworked navigation device. Unverified beyond the symptom — bisect between1bd0779c8and5d885f041.Why nobody saw it:
build-linux.ymlandscripts/build_linux.shrun the headlessselftestbut neverctest; Windows/macOS CI may run it — check whether the test is Linux-only-failing or skipped there. Consider addingctest --output-on-failureto the LinuxSelftestjob (with the doc-only short-circuit preserved).Repro:
./scripts/build_linux.sh && cd build && ctest -R rig_composer --output-on-failure.