Is set_memory called for every channel at some point, or only when channels are "touched" (i.e., some control event fired in ui)?
Only when touched.
How exactly would chirp deal with a channel imported w/ 6.25 step, if it is not in my valid_tuning_steps? Would it leave tuning_step empty?
Imported from another radio you mean? If you radio doesn't declare 6.25 step support, then it will tell the user that such a memory is unsettable or unimportable to your radio and you will never see it.
But I dont see anywhere to tell chirp about this new list, such returning a RadioFeatures.valid_tones, etc in get_features.
Right, we don't currently export a list of supported tones, so you need to maintain your list for indexing purposes and fail in some reasonable way if a memory is attempted with a tone you don't support. This is probably something we need to improve going forward.
Should I be mutating chirp_commons.TONES directly?
No, definitely not. That will cause it to change for other drivers in the same session.