# Lab057 — диагностика ошибок символов и заголовка Lab054 ## Дата 10 сентября 2026 года. ## Зафиксированная постановка до расчёта альтернатив Работа согласована пользователем: только сохранённые IQ, RF TX = 0, без обращения к оборудованию, изменения штатного PHY, коммита и push. Исторический Lab054 остаётся NOT_A, 0/16. Исходный HEAD: `92477a4632d2172578c859afd823e6d3b39f42a6`. Исходные status/diff, версии пакетов, размеры и SHA256 исходников и данных сохранены в `data/processed/lab057/initial_state.json` и `initial_worktree.diff`. Прежние изменения Lab054 не принадлежат Lab057. Карта изменений: новые `experiments/lab057_symbol_diagnosis.py`, `tests/test_lab057_symbol_diagnosis.py`, документы и результаты Lab057; после проверки — только новая запись журнала и новый раздел индекса. Штатные анализаторы Lab043–Lab056 и `protocol/` не редактируются. ### Разделение преамбулы Индексы символов нулевые, интервалы полуоткрытые: - TRAIN = `[32, 608)`, 576 символов; - VALIDATION = `[672, 1248)`, 576 символов; - `[608, 672)` — защитный промежуток 64 символа; - крайние участки преамбулы исключены из обучения и проверки. RRC TX/RX имеет span 10 символов каждый. Защитный промежуток превышает суммарную память 20 символов, локальный сдвиг 0,5 символа и поддержку интерполяции ±8 исходных отсчётов. Заголовок начинается с символа 1280. Все альтернативные CFO/фазы оцениваются только на TRAIN. Baseline использует всю преамбулу, как исторически. D0/D1/D2 наследуют штатный timing, который также видел всю преамбулу: их VALIDATION скрыта от новой оценки CFO/фазы, но не от унаследованной оценки timing. D3 оценивает timing только на TRAIN около заранее известного начала кадра. Это диагностика при известном начале, а не новый независимый поиск. Дополнительно D0 наследует штатный CFO, который тоже использовал VALIDATION. Для D0 скрыт только участок от новой оценки комплексного h; для D1/D2 — от новой оценки CFO/h, при сохранённом штатном timing. ### Неизменные варианты - S0: исходный строгий путь и штатная нормировка. - D0: штатный timing/CFO; комплексный коэффициент по TRAIN. - D1: тот же timing; остаточный CFO = 0; тот же коэффициент по TRAIN. - D2: тот же timing; максимум корреляции после снятия PRBS7 на TRAIN. - D3: как D2; совместный поиск timing/CFO только на TRAIN. Для 500K частотная сетка `[-250, +250]` Гц с шагом 1 Гц; после сетки одно параболическое уточнение внутреннего максимума, ограниченное ±0,5 шага. Диапазон покрывает ранее зарегистрированные штатные оценки −217…+182 Гц и область однозначности штатной ветви ±244,140625 Гц. Для 20K положительного контроля сохраняется тот же диапазон в циклах на символ: ±10 Гц, шаг 0,04 Гц; штатная область однозначности там ±9,765625 Гц. Граничный максимум явно помечается; диапазон автоматически не расширяется. D3: timing в пределах ±0,5 символа относительно известного начала, шаг 1/32 символа; оконная sinc-интерполяция с полуопорой 8 отсчётов. Критерий выбора — нормированная энергия корреляции TRAIN, без заголовка, VALIDATION, payload и CRC. Частота/фаза используют одну шкалу `t[k] = (k + 0.5) / Rs`; постоянная фаза задана при t = 0 этой шкалы. Снятие цифровой несущей +50 кГц сохраняется во всех вариантах. Положительные контроли: все 16 кадров сохранённого TX Lab054 и все 36 принятых кадров сохранённого RX Lab047. Отрицательный контроль: 16 фиксированных окон RX Lab054 вне передачи, начиная с 8 000 000 отсчётов, с шагом 100 000 отсчётов. Контроль не является самостоятельным поиском пакетов. Синтетика: фиксированные seed, фаза, остаточный CFO и дробная задержка; сравнение скоростей при одинаковом Es/N0, а не одинаковой мощности и N0. Никакой вариант не выбирается по CRC для отдельного кадра. При естественно валидном заголовке длина берётся только из него, затем вызывается существующий строгий декодер тела. Успешные диагностические пакеты сохраняются отдельно. ### Исправление изоляции TRAIN до итогового расчёта Verifier воспроизвёл утечку через штатное вычитание среднего всего probe: изменение сырого VALIDATION влияло на вход оценивателя TRAIN. В штатном S0 это историческое поведение сохраняется. Для оценивания D0–D3 используется короткая свёртка только сырой опоры TRAIN с её собственным средним, теми же RRC-коэффициентами, нормировкой и снятием +50 кГц. Опора определяется как `[nominal + 32*SPS - (len(taps)-1) - margin, nominal + 607*SPS + margin + 1)`, `margin=ceil(SPS/2)+8`. При 500K это `[752,10145)`, при 20K `[18992,253409)`. Вне этой опоры IQ не участвует даже в FFT-свёртке оценивателя. **Сами решения символов во всех вариантах используют один прежний штатный фильтр с глобальным DC mean.** Локальная подготовка применяется только для оценки параметров. Поэтому S0→D0 меняет комплексную фазовую нормировку, сохраняя штатные timing/CFO и символы до нормировки. Вычисляемый остаток относится к штатному выходу RRC, а не к локально центрированному TRAIN. Скрытая VALIDATION означает отсутствие её участия в новых параметрах; штатная предобработка выходных символов по-прежнему использует весь probe. Диапазоны поиска и разделение преамбулы после находки не изменялись. Остаток включает также рассогласование TRAIN-only DC подготовки оценивателя и глобальной DC подготовки выхода. Он не объявляется чистым шумом или исключительно ошибкой частотной компенсации. ## Итог выполненной Lab057 Полный независимый baseline воспроизведён: 100 прежних кандидатов в том же порядке, 100 PHY_HEADER_MAGIC_MISMATCH, 0/16, FEC/CRC NOT_REACHED. Ошибки VALIDATION S0/D0/D1/D2/D3: 3494/3775/3355/3440/3466 из 9216. Все варианты дают 0/16 заголовков и пакетов. Вклад компенсации частоты ограниченно подтверждён; дополнительный timing устойчивого улучшения не дал. TX054: все варианты 16/16; RX047: все 36/36; отрицательный контроль 0/16. 19 новых тестов, полный pytest **886 passed, 0 failed**; quick_gate **886/31/13 PASS**, diff check PASS. Verifier подтвердил числа, сохранность, контроли, закрытие утечки и корректность ограничений отчёта. [Итоговый отчёт](lab057_offline_result.md), [машинная приёмка](../data/processed/lab057/acceptance.json), [манифест артефактов](../data/processed/lab057/artifact_manifest.json). Журнал: новая запись 051. Прежние изменения Lab054 сохранены. HEAD остаётся `92477a4632d2172578c859afd823e6d3b39f42a6`. RF TX=0; COMMIT/PUSH NOT PERFORMED. STOP; следующий анализ не запускался.