Agent::set_smartshift(route, mode: SmartShiftMode, auto_disengage: u8, tunable_torque: u8) threads three loose values through five layers, where 0 is a magic "do not change" sentinel documented only at the bottom (write/smartshift.rs). The right encoding already exists — hidpp's SmartShiftEnhancedStatusChange uses Option<NonZeroU8>.
Fold the trio into a Change/Params struct end to end. The tarpc method signature is append-only wire format, so this must ride the next PROTOCOL_VERSION bump (regenerate the wire_format.rs goldens) rather than ship alone.
Surfaced by the standards audit behind #381.
Agent::set_smartshift(route, mode: SmartShiftMode, auto_disengage: u8, tunable_torque: u8)threads three loose values through five layers, where0is a magic "do not change" sentinel documented only at the bottom (write/smartshift.rs). The right encoding already exists — hidpp'sSmartShiftEnhancedStatusChangeusesOption<NonZeroU8>.Fold the trio into a Change/Params struct end to end. The tarpc method signature is append-only wire format, so this must ride the next
PROTOCOL_VERSIONbump (regenerate thewire_format.rsgoldens) rather than ship alone.Surfaced by the standards audit behind #381.