fix(review): manifest deny_unknown_fields + каталог сигналов в sdk::vehicle

- deny_unknown_fields: опечатка в ключе capability (граница доверия F §3) не проглатывается.
- VEHICLE_SIGNALS → shturman_sdk::vehicle (single source; валидатор берёт оттуда).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Signed-off-by: Alexander <akotenev2003@gmail.com>
This commit is contained in:
2026-06-24 14:36:50 +03:00
parent 2b06ff749f
commit 69beaad596
4 changed files with 53 additions and 23 deletions
@@ -2,27 +2,6 @@
use shturman_sdk::Manifest;
/// Каталог стандартных сигналов (data-model §4). `vehicle_read` допускает только их.
const VEHICLE_SIGNALS: &[&str] = &[
"speed",
"rpm",
"engine_load",
"coolant_temp",
"intake_temp",
"maf",
"throttle",
"intake_pressure",
"fuel_level",
"module_voltage",
"ambient_temp",
"oil_temp",
"fuel_rate",
"run_time",
"mil_on",
"dtc_count",
"distance_mil",
];
/// Поддерживаемые мажоры API (plugin-sdk §7).
const SUPPORTED_API: &[&str] = &["1"];
@@ -55,9 +34,9 @@ pub fn validate(m: &Manifest) -> Vec<String> {
));
}
// vehicle_read только из каталога data-model
// vehicle_read только из каталога data-model (single source — shturman_sdk::vehicle)
for sig in &m.capabilities.vehicle_read {
if !VEHICLE_SIGNALS.contains(&sig.as_str()) {
if !shturman_sdk::vehicle::is_known(sig) {
errs.push(format!("vehicle_read '{sig}' нет в каталоге data-model"));
}
}