# Members whose value #2022's gate cannot show travels in the state blob.
#
# Read by src/doppler/tests/test_mutator_state.py: every public member of
# every serializable class, as Python gets it, and every C setter the class
# does not bind, probed by behaviour. A member that does not pass (TRAVELS,
# KEYED, READS or HANDLE) must be listed here once, with EXACTLY the verdict
# it reads and a reason, or the gate is red. A listed member that now passes,
# names nothing, or reads another verdict is red too, and `make tests-ssot`
# refuses a key the merge base did not hold, or a key that moved into LOST,
# NONDETERMINISTIC or CRASHES: this list only shrinks. The rule is
# docs/design/state-serialization.md, "What goes in the blob".
#
#   LOST              its value does not travel: a fix deletes the line
#   NONDETERMINISTIC  two identical builds differ, so no restore can be judged
#   UNPROBED          the probe cannot show it either way (reason: why)
#   CRASHES           its probe dies by a crash signal, confirmed in a child
#   C_ONLY            no Python face to probe: verified by a C twin, #2077
#   NO_RECIPE         its class has no CASES row to probe with, #2078
#
# Each family's fix PR deletes its own lines (#2079..#2084, LO/NCO first).
#
# key                                                   verdict           reason

# -- LOST (17)
BurstCapture.configure_search_raw                       LOST              mid-stream it resets acq's position but not samples_fed, so a capture refuses its own later checkpoint (#2087)
DDC.norm_freq                                           LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
Ddcr.norm_freq                                          LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
LO.norm_freq                                            LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
MatchedDDC.norm_freq                                    LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
MpskReceiver.norm_freq                                  LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
MpskReceiverR.norm_freq                                 LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
NCO.norm_freq                                           LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
Specan.retune                                           LOST              family 1, the LO/NCO root: norm_freq is not in the leaf blob (#2079)
CIC.reconfigure                                         LOST              family 2: the rate is neither packed nor a reject key (#2080)
MatchedRateConverter.rate                               LOST              family 2: the rate is neither packed nor a reject key (#2080)
RateConverter.rate                                      LOST              family 2: the rate is neither packed nor a reject key (#2080)
Resampler.rate                                          LOST              family 2: the rate is neither packed nor a reject key (#2080)
_SynthEngine.set_nsps                                   LOST              family 4: wfm_synth's setters are not serialized (#2082)
RateSync.bn                                             LOST              family 5: the receivers' loop/lock setters (#2083)
RateSync.configure_lock_raw                             LOST              family 5: the receivers' loop/lock setters (#2083)
RateSync.configure                                      LOST              family 5: the receivers' loop/lock setters, bn and zeta (#2083)

# -- UNPROBED (13)
BurstCapture.release                                    UNPROBED          releases a captured burst by index, and the matrix feed captures none, so no index is valid; a feed that captures one is #2078
PSD.band_power                                          UNPROBED          a query taking a value: inert, and nothing exact says it only reads (its C takes a non-const state); C constness would classify it (#2093)
PSD.occupied_bw                                         UNPROBED          a query taking a value: inert, and nothing exact says it only reads (its C takes a non-const state); C constness would classify it (#2093)
PSD.sfdr                                                UNPROBED          a query taking a value: inert, and nothing exact says it only reads (its C takes a non-const state); C constness would classify it (#2093)
PSD.snr                                                 UNPROBED          a query taking a value: inert, and nothing exact says it only reads (its C takes a non-const state); C constness would classify it (#2093)
PSD.total_band_power                                    UNPROBED          a query taking a value: inert, and nothing exact says it only reads (its C takes a non-const state); C constness would classify it (#2093)
_SynthEngine.set_bits                                   UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)
_SynthEngine.set_chirp_span                             UNPROBED          the matrix engine is not in chirp mode, so the span changes nothing it does (family 4, #2082)
_SynthEngine.set_dsss_chips                             UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)
_SynthEngine.set_dsss_cont                              UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)
_SynthEngine.set_dsss_window                            UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)
_SynthEngine.set_rrc                                    UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)
_SynthEngine.set_symbols                                UNPROBED          hand-bound, with no stub signature to make a value from; family 4 (#2082)

# -- CRASHES (1)
_SynthEngine.set_wtype                                  CRASHES           a type create() built no generator for segfaults the next step (#2095); family 4 (#2082)

# -- C_ONLY (16)
Acquisition.dp_acq_set_surface_sink                     C_ONLY            a sink; confirm EXEMPT through the C twin (#2077)
BerMeter.dp_ber_meter_set_align                         C_ONLY            family 5 (#2083); C twin #2077
Corr.dp_corr_set_ref                                    C_ONLY            family 3 (#2081); C twin #2077
Corr2D.dp_corr2d_set_ref                                C_ONLY            family 3 (#2081); C twin #2077
CorrDetector.dp_detector_set_ref                        C_ONLY            family 3 (#2081); C twin #2077
CorrDetector.dp_detector_set_threshold                  C_ONLY            family 3 (#2081); C twin #2077
CorrDetector2D.dp_detector2d_set_ref                    C_ONLY            family 3 (#2081); C twin #2077
CorrDetector2D.dp_detector2d_set_threshold              C_ONLY            family 3 (#2081); C twin #2077
DDC.dp_ddc_set_telemetry                                C_ONLY            a sink; confirm EXEMPT through the C twin (#2077)
Ddcr.dp_ddcr_set_telemetry                              C_ONLY            a sink; confirm EXEMPT through the C twin (#2077)
Dll.dp_dll_set_coast                                    C_ONLY            no Python face; C twin #2077
RateConverter.dp_RateConverter_enable_agc               C_ONLY            family 2 (#2080); C twin #2077
RateConverter.dp_RateConverter_set_telemetry            C_ONLY            a sink; confirm EXEMPT through the C twin (#2077)
_SynthEngine.dp_wfm_synth_reseed_noise                  C_ONLY            family 4 (#2082); C twin #2077
_SynthEngine.dp_wfm_synth_set_refill                    C_ONLY            a sink; confirm EXEMPT through the C twin (#2077)
_SynthEngine.dp_wfm_synth_set_refill_state              C_ONLY            family 4 (#2082); C twin #2077

# -- NO_RECIPE (71)
Acquisition.block_prompt                                NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.block_raw                                   NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.configure_search_raw                        NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.keep_surface                                NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.push                                        NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.set_carrier_freq_hz                         NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078); family 5 (#2083)
Acquisition.set_max_peaks                               NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.set_threads                                 NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.surface                                     NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.surface_chip_phase                          NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.surface_complex                             NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
Acquisition.surface_doppler_hz                          NO_RECIPE         Acquisition has no test_state_serialization CASES row (#2078)
AsyncDsssPool.push                                      NO_RECIPE         AsyncDsssPool has no test_state_serialization CASES row (#2078)
AsyncDsssPool.status                                    NO_RECIPE         AsyncDsssPool has no test_state_serialization CASES row (#2078)
AsyncDsssPool.symbols                                   NO_RECIPE         AsyncDsssPool has no test_state_serialization CASES row (#2078)
AsyncDsssPool.symbols_max_out                           NO_RECIPE         AsyncDsssPool has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.configure_chain_raw                   NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.configure_lock_raw                    NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078); family 5 (#2083)
AsyncDsssReceiver.configure_search_raw                  NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.seed                                  NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.set_refine_min_blocks                 NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078); family 5 (#2083)
AsyncDsssReceiver.status                                NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.steps                                 NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
AsyncDsssReceiver.steps_max_out                         NO_RECIPE         AsyncDsssReceiver has no test_state_serialization CASES row (#2078)
BerMeter.align                                          NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078); writes last and mk_*, which score reads, family 5 (#2083)
BerMeter.ber                                            NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078)
BerMeter.interval                                       NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078)
BerMeter.score                                          NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078)
BerMeter.ser                                            NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078)
BerMeter.set_truth                                      NO_RECIPE         BerMeter has no test_state_serialization CASES row (#2078); family 5 (#2083)
BpskReceiver.bits                                       NO_RECIPE         BpskReceiver has no test_state_serialization CASES row (#2078)
BpskReceiver.bits_max_out                               NO_RECIPE         BpskReceiver has no test_state_serialization CASES row (#2078)
BpskReceiver.norm_freq                                  NO_RECIPE         BpskReceiver has no test_state_serialization CASES row (#2078); family 1 (#2079)
BpskReceiver.steps                                      NO_RECIPE         BpskReceiver has no test_state_serialization CASES row (#2078)
BpskReceiver.steps_max_out                              NO_RECIPE         BpskReceiver has no test_state_serialization CASES row (#2078)
CellAsyncDsssReceiver.configure_chain_raw               NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078)
CellAsyncDsssReceiver.configure_lock_raw                NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078); family 5 (#2083)
CellAsyncDsssReceiver.seed                              NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078)
CellAsyncDsssReceiver.status                            NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078)
CellAsyncDsssReceiver.steps                             NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078)
CellAsyncDsssReceiver.steps_max_out                     NO_RECIPE         CellAsyncDsssReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.configure_search_raw                  NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.events                                NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.events_max_out                        NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.llrs                                  NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.llrs_max_out                          NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.push                                  NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssBurstReceiver.push_max_out                          NO_RECIPE         DsssBurstReceiver has no test_state_serialization CASES row (#2078)
DsssReceiver.configure_chain_raw                        NO_RECIPE         DsssReceiver has no test_state_serialization CASES row (#2078)
DsssReceiver.configure_lock_raw                         NO_RECIPE         DsssReceiver has no test_state_serialization CASES row (#2078); family 5 (#2083)
DsssReceiver.configure_search_raw                       NO_RECIPE         DsssReceiver has no test_state_serialization CASES row (#2078)
DsssReceiver.steps                                      NO_RECIPE         DsssReceiver has no test_state_serialization CASES row (#2078)
DsssReceiver.steps_max_out                              NO_RECIPE         DsssReceiver has no test_state_serialization CASES row (#2078)
FrameMeter.add                                          NO_RECIPE         FrameMeter has no test_state_serialization CASES row (#2078)
FrameMeter.fer                                          NO_RECIPE         FrameMeter has no test_state_serialization CASES row (#2078)
FrameMeter.sync_miss                                    NO_RECIPE         FrameMeter has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute                                     NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute_ctrl                                NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute_ctrl_max_out                        NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute_ctrl_push                           NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute_ctrl_push_max_out                   NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.execute_max_out                             NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078)
MatchedDdcr.norm_freq                                   NO_RECIPE         MatchedDdcr has no test_state_serialization CASES row (#2078); family 1 (#2079)
PersistentBurstCapture.configure_search_raw             NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.detections                       NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.detections_max_out               NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.events                           NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.events_max_out                   NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.push                             NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.push_max_out                     NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
PersistentBurstCapture.release                          NO_RECIPE         PersistentBurstCapture has no test_state_serialization CASES row (#2078)
