{
  "engine": "Wokwi web editor",
  "firmware": "ad7606-2ch-1.11",
  "hardware_measured": false,
  "planned_cases": 18,
  "executed_cases": 11,
  "passed_cases": 10,
  "full_matrix_pass": false,
  "cases": [
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 0,
        "fault": 0,
        "emg": 10039,
        "foot": 262,
        "shank": 251,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 61,
        "udp": 1132,
        "discarded": 0,
        "writes": 85,
        "syncs": 4,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 10554,
      "saved_bytes": 679552,
      "quality": {
        "source_sha256": "e606b247d262cfbb2ff0561c743068af6daca58fe550d1f8610cd1b80a3412bf",
        "synthetic": true,
        "counts": {
          "emg": 10039,
          "foot": 262,
          "shank": 251,
          "status": 1,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": true,
        "no_detected_sample_loss": true,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 513,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.901756172054,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 61
        },
        "issues": [],
        "imu_clock": {
          "foot": {
            "tick_steps": 261,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 248,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 250,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 246,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 1132,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "da511a0f-7dbe4f1f",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 262,
            "timestamp_us": 2180001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 251,
            "timestamp_us": 2180002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 61
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_686f6c3e.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 10554,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {},
        "stop_reason": 0
      },
      "udp_packets": 1132,
      "source_sha256": "7007fbf05bd3396867d1580268c9aef26338157edb411667ead252392a51a932",
      "case": "normal",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "04cc6084d32680d6351d7c76124cd5f845c37535202d79e2fb9b0e203862ab95",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 1,
        "fault": 0,
        "emg": 10039,
        "foot": 262,
        "shank": 251,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 421,
        "udp": 1089,
        "discarded": 0,
        "writes": 85,
        "syncs": 4,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 10554,
      "saved_bytes": 679552,
      "quality": {
        "source_sha256": "eddc5a0ac2bab0acc4b6c2b76112b80b1e26652fbf5002a74ac6506649a90701",
        "synthetic": true,
        "counts": {
          "emg": 10039,
          "foot": 262,
          "shank": 251,
          "status": 1,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": true,
        "no_detected_sample_loss": true,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 513,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.88270580291,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 421
        },
        "issues": [],
        "imu_clock": {
          "foot": {
            "tick_steps": 261,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 248,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 250,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 246,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 1089,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 344
        },
        "error": null,
        "session": "8e8fd48e-5282611c",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 262,
            "timestamp_us": 2180001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 251,
            "timestamp_us": 2180002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 421
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_af71a688.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 10210,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {
          "7": 326,
          "2": 9,
          "3": 9
        },
        "stop_reason": 0
      },
      "udp_packets": 1089,
      "source_sha256": "11a6c3b6fe97a0f7f4bdd6dfa009324ebafdcb579669819735bbcf06f9378016",
      "case": "write-delay-50ms",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "67e73ba4e9c6bafcd6381c011fb5ec68c7e2182263ba0bb91cb396b4c4919e11",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 2,
        "fault": 0,
        "emg": 10039,
        "foot": 262,
        "shank": 251,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 2936,
        "udp": 820,
        "discarded": 0,
        "writes": 85,
        "syncs": 4,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 10554,
      "saved_bytes": 679552,
      "quality": {
        "source_sha256": "03d183e19ce0d92b3569c5bd1d877c83aa6733e871afa5532d4daa15ba30cbcb",
        "synthetic": true,
        "counts": {
          "emg": 10039,
          "foot": 262,
          "shank": 251,
          "status": 1,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": true,
        "no_detected_sample_loss": true,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 513,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.901756172054,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 2936
        },
        "issues": [],
        "imu_clock": {
          "foot": {
            "tick_steps": 261,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 248,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 250,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 246,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 820,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 2702
        },
        "error": null,
        "session": "f0cb30ef-4ef8a1e2",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 262,
            "timestamp_us": 2180001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 251,
            "timestamp_us": 2180002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 10039,
          "foot_records": 262,
          "shank_records": 251,
          "battery_mv": 3800,
          "queue_high_water": 2936
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_6ab14a1c.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 7852,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {
          "7": 2568,
          "3": 66,
          "2": 68
        },
        "stop_reason": 0
      },
      "udp_packets": 820,
      "source_sha256": "e0e3b78f4d1be3f33aa4ce9f4c9a0a24f2fa1b4dee009f8679047aabf961cc3c",
      "case": "queue-stall-350ms",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "cd50dc408fe2f0acac90872dcf33b6af5d8e921c50f90b5c0c3f7b7e83dd6151",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 3,
        "fault": 1,
        "emg": 234,
        "foot": 17,
        "shank": 6,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 11,
        "udp": 34,
        "discarded": 0,
        "writes": 3,
        "syncs": 1,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 128,
      "saved_bytes": 12288,
      "quality": {
        "source_sha256": "87d0b30b0ece59458a44dfcc73939241a5d744159f5b1c4358c658bd5e82321d",
        "synthetic": true,
        "counts": {
          "emg": 111,
          "foot": 14,
          "shank": 3,
          "status": 0,
          "end": 0
        },
        "session_finalized": false,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 17,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.742197706489,
        "last_status": null,
        "issues": [
          {
            "kind": "missing_end",
            "message": "Unfinalized session; trailing samples may be lost."
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 13,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 4,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 2,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 3,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 34,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "22995314-7a35fab1",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 17,
            "timestamp_us": 955001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 6,
            "timestamp_us": 955002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 234,
          "foot_records": 17,
          "shank_records": 6,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_70c4e89a.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 257,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {},
        "stop_reason": 1
      },
      "udp_packets": 34,
      "source_sha256": "c3b2ce82bb9cfd28cf0829819142e911bc7a2106622af00b0c3b45d732a2e16b",
      "case": "storage-write-error",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "3cf212b7ad5410552f7da7bf4717425a4631dff6df43027492dc033a19ab2482",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 4,
        "fault": 7,
        "emg": 3187,
        "foot": 91,
        "shank": 80,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 59,
        "udp": 366,
        "discarded": 0,
        "writes": 29,
        "syncs": 3,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 3359,
      "saved_bytes": 219072,
      "quality": {
        "source_sha256": "9186183210f6adf0f0d9d4056ac544d260a194c3d0c1dfef5a9dce7869ebdcd1",
        "synthetic": true,
        "counts": {
          "emg": 3187,
          "foot": 91,
          "shank": 80,
          "status": 0,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 171,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.841866805661,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 3187,
          "foot_records": 91,
          "shank_records": 80,
          "battery_mv": 3800,
          "queue_high_water": 59
        },
        "issues": [
          {
            "kind": "abnormal_stop",
            "reason": 7
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 90,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 80,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 79,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 79,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 366,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "56562457-94c9fb0f",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 91,
            "timestamp_us": 1325001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 80,
            "timestamp_us": 1325002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 3187,
          "foot_records": 91,
          "shank_records": 80,
          "battery_mv": 3800,
          "queue_high_water": 59
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_368f6f03.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 3359,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {},
        "stop_reason": 7
      },
      "udp_packets": 366,
      "source_sha256": "bf9903bb01e59d1424e433924e7de180ef2fbca18163efa8e9adf93195846125",
      "case": "usb-attached-during-recording",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "9a57eeaf5071d3a6f6bbea56c75a293e991ed26147f2d42c57b77dcf5a4757e9",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 5,
        "fault": 4,
        "emg": 24004,
        "foot": 612,
        "shank": 601,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 0,
        "queue_peak": 63,
        "udp": 2702,
        "discarded": 0,
        "writes": 200,
        "syncs": 6,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 25221,
      "saved_bytes": 1618240,
      "quality": {
        "source_sha256": "92e81485dab3c34390d5c4370439ecf6c4310e4fc9d2ad57b45947ce4c454e55",
        "synthetic": true,
        "counts": {
          "emg": 24004,
          "foot": 612,
          "shank": 601,
          "status": 3,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 1213,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": 7983.824133015173,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 24004,
          "foot_records": 612,
          "shank_records": 601,
          "battery_mv": 3200,
          "queue_high_water": 63
        },
        "issues": [
          {
            "kind": "abnormal_stop",
            "reason": 4
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 611,
            "median_tick_step": 4688.0,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0107,
            "fit_reads": 585,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          },
          "shank": {
            "tick_steps": 600,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 579,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 2702,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 1
        },
        "error": null,
        "session": "1c30e106-fcd08006",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 612,
            "timestamp_us": 3930001,
            "flags": 2
          },
          "shank": {
            "accel_g": [
              0.0009765625,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 601,
            "timestamp_us": 3930002,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 0,
          "emg_records": 24004,
          "foot_records": 612,
          "shank_records": 601,
          "battery_mv": 3200,
          "queue_high_water": 63
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_a55650d3.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 25220,
        "ended": true,
        "first_sequence": {
          "2": 1,
          "7": 1,
          "3": 1
        },
        "sequence_gaps": {
          "7": 1
        },
        "stop_reason": 4
      },
      "udp_packets": 2702,
      "source_sha256": "525e7c9d97a8eb147f34140bab9eacc53f037aeb6e6a3e890335a1510b9b46d8",
      "case": "battery-low",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "5eebeefeb4a42d8256a15475d8fcea1497f2a68c269ccb0b4b333fead36e4ca0",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 6,
        "fault": 6,
        "emg": 0,
        "foot": 11,
        "shank": 0,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 1,
        "queue_peak": 11,
        "udp": 5,
        "discarded": 0,
        "writes": 3,
        "syncs": 3,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 12,
      "saved_bytes": 4864,
      "quality": {
        "source_sha256": "6bb860340d66725a275ba1ec2edff760e4b71ccbced6c6b4537e5f764409e593",
        "synthetic": true,
        "counts": {
          "emg": 0,
          "foot": 11,
          "shank": 0,
          "status": 0,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 11,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": null,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "issues": [
          {
            "kind": "missing_stream",
            "stream": "emg"
          },
          {
            "kind": "missing_stream",
            "stream": "shank"
          },
          {
            "kind": "abnormal_stop",
            "reason": 6
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 10,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 1,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 5,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "a33fb14b-2c0b2d34",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 11,
            "timestamp_us": 925001,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_33ce8365.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 12,
        "ended": true,
        "first_sequence": {
          "2": 1
        },
        "sequence_gaps": {},
        "stop_reason": 6
      },
      "udp_packets": 5,
      "source_sha256": "ab1f00f305a075ebe8e2494da24b00cf362aca2df39cdc55cf179ca7808cd264",
      "case": "adc-stuck-busy",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "f172087771ede64f1eb5493c6aa981b46d1c68a36f1a3d9ad565f3351eabb5a5",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 7,
        "fault": 3,
        "emg": 0,
        "foot": 0,
        "shank": 0,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 1,
        "adc_errors": 0,
        "queue_peak": 0,
        "udp": 4,
        "discarded": 0,
        "writes": 2,
        "syncs": 3,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 1,
      "saved_bytes": 4160,
      "quality": {
        "source_sha256": "67dbb27e2ed054cc859513cc55a4da0c46e6ba33e65ff64f778830a4ac26bd23",
        "synthetic": true,
        "counts": {
          "emg": 0,
          "foot": 0,
          "shank": 0,
          "status": 0,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 0,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": null,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 1,
          "adc_errors": 0,
          "emg_records": 0,
          "foot_records": 0,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 0
        },
        "issues": [
          {
            "kind": "missing_stream",
            "stream": "emg"
          },
          {
            "kind": "missing_stream",
            "stream": "foot"
          },
          {
            "kind": "missing_stream",
            "stream": "shank"
          },
          {
            "kind": "abnormal_stop",
            "reason": 3
          }
        ],
        "imu_clock": {},
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 4,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "b5430e8b-9b88843c",
        "imu": {},
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 1,
          "adc_errors": 0,
          "emg_records": 0,
          "foot_records": 0,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 0
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_eb1c203a.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 1,
        "ended": true,
        "first_sequence": {},
        "sequence_gaps": {},
        "stop_reason": 3
      },
      "udp_packets": 4,
      "source_sha256": "93f724aa1b367e8f62193f869d5e9f6e98c6ed1f887bc3dc8b1a32bfb54e954c",
      "case": "imu-fifo-overflow",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "0188f437d5f2367d8300a57a152f90c2f025173d5e1b02706c3ae57f9d9544ea",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "case": "imu-missing-interrupt",
      "pass": false,
      "error": "production UDP framing/session decode failed",
      "engine": "Wokwi web editor",
      "hardware_measured": false,
      "executed": true
    },
    {
      "case": "no-wireless-subscriber",
      "pass": null,
      "executed": false
    },
    {
      "case": "wireless-packet-loss",
      "pass": null,
      "executed": false
    },
    {
      "case": "interrupted-recording",
      "pass": null,
      "executed": false
    },
    {
      "case": "storage-mount-failure",
      "pass": null,
      "executed": false
    },
    {
      "case": "full-card-refusal",
      "pass": null,
      "executed": false
    },
    {
      "case": "filtered-synthetic-emg",
      "pass": null,
      "executed": false
    },
    {
      "case": "absent-shank",
      "pass": null,
      "executed": false
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 6,
        "fault": 6,
        "emg": 0,
        "foot": 11,
        "shank": 0,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 1,
        "queue_peak": 11,
        "udp": 5,
        "discarded": 0,
        "writes": 3,
        "syncs": 3,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 12,
      "saved_bytes": 4864,
      "quality": {
        "source_sha256": "e2c3401bf0597aa0ef08fc33647768ccb0e402407b0df824f609eb7c58d259f9",
        "synthetic": true,
        "counts": {
          "emg": 0,
          "foot": 11,
          "shank": 0,
          "status": 0,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 11,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": null,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "issues": [
          {
            "kind": "missing_stream",
            "stream": "emg"
          },
          {
            "kind": "missing_stream",
            "stream": "shank"
          },
          {
            "kind": "abnormal_stop",
            "reason": 6
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 10,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 1,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 5,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "b81ae167-d9d825f3",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 11,
            "timestamp_us": 925001,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_7647584b.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 12,
        "ended": true,
        "first_sequence": {
          "2": 1
        },
        "sequence_gaps": {},
        "stop_reason": 6
      },
      "udp_packets": 5,
      "source_sha256": "756514680739f705dbc6f6ab43a0de3ca0cec54602ebe6ca3732c7bb38f0a6d8",
      "case": "adc-busy-stays-low",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "8b3b72f047681c67ffc98ad0956fda41a5816bf77671f29797385188949acc6e",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    },
    {
      "pass": true,
      "failures": [],
      "production": {
        "case": 6,
        "fault": 6,
        "emg": 0,
        "foot": 11,
        "shank": 0,
        "missed": 0,
        "dropped": 0,
        "imu_errors": 0,
        "fifo_overflows": 0,
        "adc_errors": 1,
        "queue_peak": 11,
        "udp": 5,
        "discarded": 0,
        "writes": 3,
        "syncs": 3,
        "closes": 1,
        "pages": 112
      },
      "saved_record_count": 12,
      "saved_bytes": 4864,
      "quality": {
        "source_sha256": "1f771ce7c4cac1bdcf4b761f1036a505ef8cafbda89c011d2dd7082fe08381cb",
        "synthetic": true,
        "counts": {
          "emg": 0,
          "foot": 11,
          "shank": 0,
          "status": 0,
          "end": 1
        },
        "session_finalized": true,
        "structurally_complete": false,
        "no_detected_sample_loss": false,
        "signal_checks_pass": true,
        "research_ready": false,
        "sequence_gaps": {
          "emg": 0,
          "foot": 0,
          "shank": 0
        },
        "anomalies": {
          "sequence_regressions": 0,
          "timestamp_regressions": 0,
          "emg_clipped_samples": 0,
          "emg_out_of_range": 0,
          "imu_invalid_samples": 0,
          "imu_timestamp_anomalies": 0,
          "timing_uncertain_records": 11,
          "flagged_gap_records": 0
        },
        "emg_observed_skipped_slots": 0,
        "emg_rate_from_host_timestamps_hz": null,
        "last_status": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "issues": [
          {
            "kind": "missing_stream",
            "stream": "emg"
          },
          {
            "kind": "missing_stream",
            "stream": "shank"
          },
          {
            "kind": "abnormal_stop",
            "reason": 6
          }
        ],
        "imu_clock": {
          "foot": {
            "tick_steps": 10,
            "median_tick_step": 4687.5,
            "expected_tick_step": 4687.4999,
            "nominal_tick_us": 1.0666667,
            "median_step_error_percent": 0.0,
            "fit_reads": 1,
            "fit_span_s": null,
            "host_us_per_sensor_tick": null,
            "sensor_tick_error_ppm": null,
            "fit_note": "needs at least 40 FIFO reads spanning 10 s",
            "within_1_percent": true,
            "within_datasheet_tolerance": true,
            "host_time_fit": null
          }
        },
        "imu_clock_note": "Screen only: FIFO timestamp increments versus the recorded nominal tick (imu_timestamp_tick_us), and sensor ticks versus ESP32 interrupt times. Includes interrupt latency; not a calibration. host_time_fitted_us in foot.csv/shank.csv maps each sample onto the ESP32 clock using a least-squares fit of all interrupt anchors; use it, not host_time_estimate_us, to align IMU with EMG in recordings longer than a few seconds.",
        "timing_note": "IMU host timestamps are estimates. Internal clock drift and sensor/analog filter delays are uncorrected.",
        "recovery_note": "Timestamp unwrapping is ambiguous across long gaps; never infer missing cycles after corruption."
      },
      "live": {
        "stats": {
          "packets": 5,
          "packet_gaps": 0,
          "reordered_or_duplicate": 0,
          "invalid_packets": 0,
          "unknown_session_packets": 0,
          "device_queue_drops": 0
        },
        "error": null,
        "session": "09ee938f-9dca4b96",
        "imu": {
          "foot": {
            "accel_g": [
              0.00048828125,
              0.0,
              1.0
            ],
            "gyro_dps": [
              0.0,
              0.0,
              0.0
            ],
            "sequence": 11,
            "timestamp_us": 925001,
            "flags": 2
          }
        },
        "health": {
          "timer_missed": 0,
          "queue_dropped": 0,
          "imu_errors": 0,
          "fifo_overflows": 0,
          "adc_errors": 1,
          "emg_records": 0,
          "foot_records": 11,
          "shank_records": 0,
          "battery_mv": 3800,
          "queue_high_water": 11
        },
        "metadata": {
          "hardware_design": "AD7606_TWO_FIXED",
          "schema": "afo-recorder/3",
          "adc_model": "AD7606",
          "adc_bits": 16,
          "adc_reference_mv": 5000,
          "adc_reference_measured": false,
          "input_scale": 1,
          "input_midpoint_mv": 0,
          "adc_pga": 1,
          "adc_osr": 1,
          "adc_sensor_crc_supported": false,
          "adc_filter": "oversampling disabled; internal analog filter",
          "sample_timestamp_event": "CONVST GPIO write software timestamp",
          "adc_clock_hz": 0,
          "sd_cmd_gpio": 47,
          "sd_clk_gpio": 39,
          "sd_d0_gpio": 40,
          "firmware": "ad7606-2ch-1.11",
          "hardware_variant": "breadboard",
          "synthetic": true,
          "trial_id": "trial_21afbf7f.afolog",
          "clock": "esp_timer_boot_us",
          "emg_hz": 8000,
          "imu_hz": 200,
          "imu_enabled": true,
          "active_channel_count": 2,
          "emg_channels": [
            "EMG1",
            "EMG2"
          ],
          "calibration_state": "uncalibrated",
          "simultaneous": true,
          "accel_range_g": 16,
          "gyro_range_dps": 2000,
          "imu_timestamp_tick_us": 1.0666667,
          "imu_timing_calibrated": false,
          "imu_locations": [
            "foot",
            "shank"
          ],
          "imu_time": "fifo_delta_first_irq",
          "placement_verified": false,
          "record_bytes": 64,
          "usb_recording_inhibit": true,
          "record_queue_entries": 20480,
          "analog_filter": "two cascaded 3.3k/47nF low-pass sections, each unity buffered; 100R series output, 1nF to ground; single-ended ADC",
          "unplugged_input_bias_mv": 1500,
          "unplugged_input_bias_ohm": 1000000,
          "clock_or_filter_delay_correction": "none",
          "notes": "Engineering prototype; physical validation pending",
          "transport": "wifi_udp",
          "live_capture": true
        },
        "records": 12,
        "ended": true,
        "first_sequence": {
          "2": 1
        },
        "sequence_gaps": {},
        "stop_reason": 6
      },
      "udp_packets": 5,
      "source_sha256": "84d5603768674162a9f7d9d715cc1ee5c6a9457e64c350998aa6e2fa918c285e",
      "case": "adc-trigger-ignored",
      "engine": "Wokwi web editor",
      "firmware": "ad7606-2ch-1.11",
      "hardware_measured": false,
      "serial_sha256": "8c646dab7de89df8412403ded1e2b2d716fd585f420f4d447e1dedb7bda23b87",
      "assessor_sha256": "a8be32e469cc56ed7c6f4daae19ed5ba16caaaae91f2aa385800f3aa8db9bc76",
      "merged_image_sha256": "bd3fc1b79f5095642310a30530dc0a1fbc44dcb81c0a0ed0d801fe87dc70f16b",
      "build_identity_checked_against_tree": false,
      "files_changed_since_test": [
        "firmware/main/wifi_live.c",
        "firmware/main/board.h",
        "simulations/integrated-recorder/firmware/merged.bin",
        "simulations/integrated-recorder/firmware/integrated_recorder.elf"
      ],
      "executed": true
    }
  ]
}
