Schema for entries in commands.json (the "commands" array).
Read commands.json's own "_meta" block for the full rationale behind each
field below and for cross-cutting findings that don't belong to any one
command.

command name                   -> "name"
manual page(s)                 -> "manual_pages" (array of printed page numbers, e.g. ["4-7","4-8"])
local y/n                      -> "local" (Front Panel checkbox; see _meta.front_panel_caveat before trusting this)
remote y/n                     -> "remote" (Remote checkbox; only ADDRESS is false)
description                    -> "description"
syntax                         -> "syntax" (null for the four service-only commands)
parameters                     -> "parameters" (array, empty [] if the command takes none)
>> parameter name              -> parameters[i].name
>> parameter description       -> parameters[i].description
>> parameter values             -> parameters[i].values (array of choice/range rows; empty [] for free-form numeric parameters)
>>>> value description          -> values[j].description
>>>> power-on value y/n         -> values[j].power_on (bool, only present for discrete enumerated choices)
>>>> default value y/n          -> values[j].default (bool, only present for discrete enumerated choices)
>> (free-form parameters instead carry parameters[i].power_on_raw / .default_raw as plain text)
Important points               -> "important_points" (array of strings)
example                        -> "examples" (array of {code, comment, note?})

Fields added beyond the original sketch, once the actual manual data made
clear they were needed:

tier                           -> "core" | "protocol" | "extended" -- does a typical
                                   automated workflow need this command? See
                                   _meta.tiering.
tier_reason                    -> free text explaining the tier call for this
                                   specific command.
rationale                      -> "measurement_hardware" | "acquisition_timing" |
                                   "wire_efficiency" | "era_computer_workaround" |
                                   "plugin_card_dependent" | "diagnostic_calibration" |
                                   "status_error_readback" | "ui_frontpanel_only" |
                                   "bus_protocol" -- WHY the command exists / is fast,
                                   independent of whether a library needs it. See
                                   _meta.rationale_taxonomy.
service_command                -> true for the 4 commands (CAL, DIAGNOSTIC, SECURE,
                                   REV?) the manual defers entirely to the Service
                                   manual, with no documented syntax here.
see_also                       -> present on R and T, the bare-syntax aliases of
                                   RANGE and TRIG -- points to the real command
                                   instead of duplicating its content.
family                         -> "F10-F58" on each of that family's 24 entries,
                                   linking them together (see _meta.f10_f58_split
                                   for why they're split into 24 entries instead of
                                   one parameterized command).
selects_function / selects_range -> present only on the F10-F58 family entries;
                                   what that specific zero-parameter command
                                   configures.
prerequisites                  -> present only on "?" (the standalone trigger
                                   shorthand); the TARM/NRDGS/TRIG state it requires
                                   before it will work.
