Чтобы CI перестал блокировать все PR подряд, автообнаружение целей отключено (autobins = false, autotests = false), и явно объявлены только те, что собираются. Ниже — что именно исключено и почему. Каждый пункт возвращается в сборку отдельным PR, когда причина устранена.
src/bin/tri_rti.rs
Импортирует trios_mesh::rti, tri_beamform, tri_video_fusion. Ни один из этих модулей никогда не существовал — проверено по всем 36 веткам и по всей истории. Это не удаление, бинарник не компилировался ни разу. Возврат в сборку означает написать три модуля.
src/bin/trios_meshd.rs
В крейте два разных трейта Transport:
src/daemon.rs:17 — send(&mut self, frame: &[u8]), recv(&mut self)
src/lib.rs:89 — send_to(&self, data, dst), recv_from(&self, buf)
Бинарник импортирует trios_mesh::Transport (второй) и реализует первый. Это выбор канонического API, а не опечатка: надо решить, какой трейт остаётся, и привести к нему демон.
src/bin/trios_meshd_video.rs и tests/video_bridge_wire.rs
Оба зависят от trios_mesh::video_bridge. Модуль сгенерирован (gen/rust/video_bridge.rs), но не компилируется: 17 ошибок типов, и причина в спецификации, а не в генераторе.
specs/video_bridge.t27:85 и далее объявляют результат u32, а считают в u16:
fn fb_util_pct(spent: u16, rate: u16) -> u8 {
let scaled: u32 = spent;
let pct: u32 = ((spent * 100) / rate);
spent * 100 вычисляется в u16 и переполняется при spent > 655. Объявление результата как u32 этого не лечит. Нужно решить, в какой ширине идёт арифметика, и расставить приведения в спецификации. Это численная семантика видеобюджета, менять её вслепую нельзя.
Что при этом работает
smoke-m1 починен по-настоящему: ему не хватало реэкспортов Handshake, MeshError, Node в корне крейта, они добавлены. Это тот бинарник, который дал 3/3 PASS на платах.
Библиотека собирается, 101 тест проходит.
Чтобы CI перестал блокировать все PR подряд, автообнаружение целей отключено (
autobins = false,autotests = false), и явно объявлены только те, что собираются. Ниже — что именно исключено и почему. Каждый пункт возвращается в сборку отдельным PR, когда причина устранена.src/bin/tri_rti.rsИмпортирует
trios_mesh::rti,tri_beamform,tri_video_fusion. Ни один из этих модулей никогда не существовал — проверено по всем 36 веткам и по всей истории. Это не удаление, бинарник не компилировался ни разу. Возврат в сборку означает написать три модуля.src/bin/trios_meshd.rsВ крейте два разных трейта
Transport:src/daemon.rs:17—send(&mut self, frame: &[u8]),recv(&mut self)src/lib.rs:89—send_to(&self, data, dst),recv_from(&self, buf)Бинарник импортирует
trios_mesh::Transport(второй) и реализует первый. Это выбор канонического API, а не опечатка: надо решить, какой трейт остаётся, и привести к нему демон.src/bin/trios_meshd_video.rsиtests/video_bridge_wire.rsОба зависят от
trios_mesh::video_bridge. Модуль сгенерирован (gen/rust/video_bridge.rs), но не компилируется: 17 ошибок типов, и причина в спецификации, а не в генераторе.specs/video_bridge.t27:85и далее объявляют результатu32, а считают вu16:spent * 100вычисляется вu16и переполняется приspent > 655. Объявление результата какu32этого не лечит. Нужно решить, в какой ширине идёт арифметика, и расставить приведения в спецификации. Это численная семантика видеобюджета, менять её вслепую нельзя.Что при этом работает
smoke-m1починен по-настоящему: ему не хватало реэкспортовHandshake,MeshError,Nodeв корне крейта, они добавлены. Это тот бинарник, который дал 3/3 PASS на платах.Библиотека собирается, 101 тест проходит.