# Lab049: аудит исходного незакоммиченного варианта 8 сентября 2026 года. Корень `C:/Users/user/Desktop/projects/SDR_Rover`, ветка `main`, HEAD `ac6cc792b896e34f7dd6d291955a0387fdafcf41`. До работы уже существовали незакоммиченные реализация Lab049, тесты, `data/processed/lab049/result.json`, документ состояния и запись 036 журнала. Прежний JSON сохранён; он относится к выровненным кадрам и не является результатом полного независимого приёмника. ## Карта архитектуры 1. Базовый Rs задан в `experiments/lab043_hackrf_bpsk.py`: 20 000 символов/с. Lab044 и Lab045 наследуют его, Lab047 явно проверяет аппаратную точку. 2. В Lab043 `SAMPLES_PER_SYMBOL = SAMPLE_RATE_HZ // SYMBOL_RATE`; Lab047 отдельно фиксирует 400. Lab049 теперь отвергает дробные частоты и нецелое отношение, не округляя вход. 3. Жёсткие зависимости Lab043: `_refine_frame_start`, `_matched_filter_taps`, `_matched_waveform`, `_preamble_timing_offset`, `_estimate_cfo_gain`, `_evaluate_symbols`. Lab044: `_scale_and_carrier`, `_preamble_reference_samples`. Lab045: длительности TransmissionPlan; Lab046B: `_extract_soft_window` и `_decode_iq_candidate`. Временные шкалы используют Rs, фильтры и индексы — samples/symbol. В локальном поиске также есть фиксированные пределы ±800 и ±2000 выборок; они сохранены. 4. `shape_frame_like_lab042`, RRC-фильтр ядра, преобразования бит/BPSK, фрагментация, packet/PHY header, FEC, перемежитель, CRC и сборка объекта уже параметрические либо вообще не зависят от Rs. 5. `protocol/priority_scheduler.py`: строгий приоритет четырёх классов, непрерываемая передача пакета и `LATEST_STATE` для ожидающих состояний. Lab034–Lab036 добавили удаление устаревших изображений и изоляцию видеокадров в собственных блоках FEC; это внешнее стирающее кодирование видео, не новый свёрточный FEC Lab045. 6. Минимальная доработка: адаптер скорости и чтения синтетического IQ к `lab046c_offline_recovery.stream_process_capture`, который используется Lab048; разделение ожидания/доставки и активного окна/опустошения очереди. Новый планировщик и изменения `protocol/` не потребовались. ## Проверка Lab033–Lab041 Сверены сохранённые отчёты этих лабораторий и связанные модули. Lab033 подтверждает строгий приоритет и отдельно считает ожидание начала и завершение передачи. Lab034: frame-aligned FEC изолирует удаляемое изображение, начатый пакет не прерывается. Lab035–Lab036 ограничивают возраст изображения и число ожидающих кадров. Lab037 подтверждает вставку управления между пакетами VIDEO. Lab038–Lab040 добавляют failsafe, аварийную защёлку, повторы и ACK; Lab041 — сеансы/перезапуски. Эти механизмы безопасности в Lab049 не заменены и не заявлены как аппаратно проверенные. CONTROL взят из последнего Lab041: `ControlStateMessage`, 36 байт, 20 Гц; с 32-байтным LinkPacket — 68 байт и 10 880 бит/с до физического кодирования. TELEMETRY наследуется из Lab037 через Lab038–Lab041: синтетические 64 байта, 10 Гц, с LinkPacket — 96 байт и 7680 бит/с. Отдельного формата физических измерений телеметрии эти лаборатории не задают. ## Воспроизведённые несоответствия Проверки выполнены независимыми `verifier` и `adversary`, без правок с их стороны и без оборудования. - Исходный `receive_iq_frame`: идеальный кадр 100 ксимв/с проходит CRC, добавление 240 нулевых выборок перед ним даёт `PHY=False, CRC=NOT_REACHED`. Поиск ограничивался двумя символами от известной TX-границы. - Добавление +10 Гц к тому же кадру даёт `PHY=True, CRC=NOT_REACHED`; +100 Гц — `PHY=False`. Остаточная частота не оценивалась. - При 100 ксимв/с старый отчёт CONTROL max 47,980 мс описывал начало, а получение пакета занимает 105,640 мс; пропущены 6 сроков CONTROL. EMERGENCY: 30,240 мс до начала, 87,900 мс до получения — пропущен срок 50 мс. - При 200 ксимв/с EMERGENCY через 1 мкс после VIDEO доставляется через 57,659 мс, а не за 50 мс. Штатный failsafe до получения пакета остаётся в `normal`. Блокировка 28,83 мс и доставка почти 57,66 мс — разные метрики. - На 20/50/100 ксимв/с в двухсекундном окне не доставлено ни одного TELEMETRY. Единственное сообщение старой таблицы доставляется при последующем опустошении очереди. Регрессии воспроизводятся командой: ```powershell python -m pytest tests/test_lab049_independent_iq.py -q ``` Исторический `receive_iq_frame` сохранён для локальных регрессий формы; основной проход Lab049 его больше не использует. Старые тесты не изменены. Новый RX получает полный поток, самостоятельно находит начало, оценивает CFO, фазу и полярность. PRBS7, физические и пакетные форматы, FEC, CRC и порог Lab047 `0.030964473262429237` сохранены. RF TX = 0. Git add/commit/push/pull/fetch не выполнялись.