Summary
Umbrella follow-up from #4142/#4201. The profile-load hold suppresses every command isProfileOwnedRadioStateWrite() matches; #4201 routes the tune/zoom/band class of user-intent writes (center=, bandwidth=, band=) through the deferred pan-write queue so they replay instead of dying. A 34-writer census done for that work shows what is still silently destroyed if a user acts during the hold.
Still suppressed, by field (pan writes — mechanism ready, one-line routings + per-field dedupe semantics + hardware QA each)
rxant, wnb / wnb_level, rfgain, loopa / loopb, min_dbm / max_dbm, band_zoom / segment_zoom, fps, average, weighted_average, daxiq_channel — roughly 20 user-intent call sites still hand these to sendCommand()/sendCmd() directly, where the hold backstop drops them (now at qCDebug, by design for echo writers; these are not echo writers).
Wholesale-suppressed command families
The classifier also suppresses slice set , display panafall set , and display waterfall set wholesale during the hold — which includes user actions (e.g. a slice rfgain change) alongside the echo traffic it exists to suppress.
Known-hard site
dbmRangeChangeRequested (MainWindow_Wiring) is genuinely mixed: a user's dBm drag and the auto-floor reconcile share one wire path, so it cannot be routed as user intent without splitting the signal at the widget level first.
Note
RadioModel::setPanBandwidth() currently has no callers; if one appears it would silently drop during the hold — worth either routing or removing when touched.
Census and per-site notes live with the #4201 work; happy to break any slice of this into its own issue on request.
Summary
Umbrella follow-up from #4142/#4201. The profile-load hold suppresses every command
isProfileOwnedRadioStateWrite()matches; #4201 routes the tune/zoom/band class of user-intent writes (center=,bandwidth=,band=) through the deferred pan-write queue so they replay instead of dying. A 34-writer census done for that work shows what is still silently destroyed if a user acts during the hold.Still suppressed, by field (pan writes — mechanism ready, one-line routings + per-field dedupe semantics + hardware QA each)
rxant,wnb/wnb_level,rfgain,loopa/loopb,min_dbm/max_dbm,band_zoom/segment_zoom,fps,average,weighted_average,daxiq_channel— roughly 20 user-intent call sites still hand these tosendCommand()/sendCmd()directly, where the hold backstop drops them (now at qCDebug, by design for echo writers; these are not echo writers).Wholesale-suppressed command families
The classifier also suppresses
slice set,display panafall set, anddisplay waterfall setwholesale during the hold — which includes user actions (e.g. a slicerfgainchange) alongside the echo traffic it exists to suppress.Known-hard site
dbmRangeChangeRequested(MainWindow_Wiring) is genuinely mixed: a user's dBm drag and the auto-floor reconcile share one wire path, so it cannot be routed as user intent without splitting the signal at the widget level first.Note
RadioModel::setPanBandwidth()currently has no callers; if one appears it would silently drop during the hold — worth either routing or removing when touched.Census and per-site notes live with the #4201 work; happy to break any slice of this into its own issue on request.