Lab046C: record first continuous RF object attempt

This commit is contained in:
LittleSam129
2026-09-01 15:42:00 +03:00
parent 39fa4b139d
commit b6654671b4
4 changed files with 1441 additions and 9 deletions

View File

@@ -8,12 +8,102 @@
**ПРОГРАММНАЯ ПРОВЕРКА НЕПРЕРЫВНОГО СЫРОГО IQ-ПОТОКА = PASS.**
**RF TX = 0.**
**LAB046C HARDWARE RESULT = C.**
**АППАРАТНАЯ ПРОВЕРКА = НЕ ВЫПОЛНЯЛАСЬ.**
**RF TX COUNT = 1.**
Lab046 — только программная лаба. HackRF и `hackrf_transfer` не
запускались, эфирной передачи нет. Ни JPEG, ни видео, ни QPSK.
**PREAMBLE CANDIDATES = 0. VALID FRAMES = 0. CRC PASS = 0.**
**OBJECT COMPLETE = NO.**
**POST-RUN TX-REFERENCE DIAGNOSTIC = 68/68 WAVEFORM TRACES DETECTED.**
**OFFICIAL RESULT CHANGED BY POST-RUN DIAGNOSTICS = NO.**
Lab046A/B остаются только программными лабами. Для Lab046C выполнен ровно один
заранее разрешённый непрерывный RF-сеанс без повтора. Ни JPEG, ни видео, ни
QPSK не запускались.
## Lab046C: подготовка аппаратного непрерывного объекта
Добавлен `experiments/lab046c_hackrf_bpsk_object.py`, который не меняет
протокол и только связывает готовые Lab043--Lab046B. Подготовительный режим
создаёт новый криптографически случайный объект 16384 байта вне Git, разбивает
его существующим Lab046 API на 68 фрагментов и последовательно записывает
68 полных Lab045 waveform в один `tx_stream.cs8`. Полные 313 670 400 байт не
удерживаются в ОЗУ одновременно; SHA-256 объекта и потока сохраняются в
`tx_metadata.json`.
24-секундный RX был запланирован как 192 000 000 complex cs8 samples,
384 000 000 байт. Такой capture даёт 0,75 с до передачи и около 3,65 с после
потока длительностью 19,6044 с. Приёмный API получает только путь к сырому
cs8 и PHY safety limits. Он читает файл через memmap окнами `complex64`, ищет
локальные PRBS7-кандидаты без обязательного global peak/second gate, получает
длину кадра из принятого PHY header и передаёт прошедшие CRC payload в
`ObjectAssembler`. TX start, границы 68 waveform, ожидаемое число фрагментов,
пакеты, coded bits и исходный объект приёмнику не передаются.
Аппаратный runner фиксирует доказанные serial и PHY-параметры, запускает RX
раньше TX, содержит один `TransmitGuard.register_transmit()` и cleanup в
`finally`. `--preflight-only` не регистрирует передачу и выполняет только
inventory/common-clock gate с последующим CLKOUT OFF. RF-режим требует два
отдельных CLI-ключа. После отдельной точной авторизации он был выполнен один
раз; повторный запуск не выполнялся и не разрешён.
Фактическая подготовка 1 сентября 2026 года создала внешний каталог
`C:\Users\user\Documents\SDR_Rover_Lab046_raw\20260901_145339_bpsk_object`:
- `tx_object.bin`: 16384 байта, SHA-256
`f7568a5d1a6dc5dd907fa1e971a171578315de740bd6788136f447e409fc6bf8`;
- `tx_stream.cs8`: 313670400 байт, 156835200 complex samples, 19,6044 с,
SHA-256 `8941eb231f1f2f99cde51f3cc5426472dbedf1a61675543e7774faec4b935f5e`;
- `tx_metadata.json`: `LAB046C_PREPARATION_ONLY`, `rf_tx_count = 0`.
Software gate подготовки: quick gate PASS с 482 тестами и 8 функциональными
лабами; полный `pytest` = 482 passed. Безопасный common-clock preflight также PASS:
MASTER reg29 `0x26`, SLAVE CLKIN `DETECTED` после 141,51 мс, SLAVE reg29
`0x26`; после проверки оба CLKOUT выключены, процессов `hackrf_transfer` нет,
`RF TX = 0` на этапе подготовки.
## Lab046C: первый аппаратный результат
Выполнен ровно один непрерывный RF TX всего `tx_stream.cs8`; автоматического
или ручного повтора не было. MASTER/TX
`000000000000000097c063dc323b97d3`, SLAVE/RX
`000000000000000097c063dc2e5327d3`, RF 1080 МГц, Fs 8 MS/s, BPSK 20 ксимв/с,
TX VGA 10 дБ, RX LNA/VGA 24/24 дБ, RF amp и bias OFF. Common clock прошёл
fail-closed gate: MASTER reg29 `0x26`, SLAVE CLKIN `DETECTED`, SLAVE reg29
`0x26`. Передача длилась 19,60632 с и полностью находилась внутри RX capture
длительностью 24,00386 с. USB-журналы чистые: TX underruns 0, RX overruns 0.
Независимый приёмник без TX oracle вернул официальный `RESULT C`:
- `PREAMBLE CANDIDATES = 0`;
- `VALID FRAMES = 0`;
- `PHY HEADER PASS = 0`;
- `CRC PASS = 0`;
- `OBJECT COMPLETE = NO`;
- восстановленный объект не создавался.
Рабочий порог PRBS7 оставался `0.65`; максимальная независимая корреляция
равна `0.126562`. Фоновая медиана мощности `-34.467535 dBFS`, кратковременный
максимум `-34.307678 dBFS`; максимальный средний подъём на интервале 19,6 с
всего `0.012049 dB`. Обычный power/PSD-анализ не показывает заметной передачи.
После завершения и фиксации независимого `RESULT C` выполнена разрешённая
read-only диагностика с TX reference. Она обнаружила следы всех 68 waveform с
точным периодом 2 306 400 samples. Нормированная корреляция в выровненных
позициях: min `0.065784`, median `0.089991`, max `0.122379`; контроль со
смещением: median `0.004275`, max `0.010075`. Медианное преимущество 26,46 дБ,
все 68 aligned значений выше максимума контроля.
Эта post-run диагностика использует знание TX только после официального
решения и **не** превращает опыт в PASS: `OBJECT TRANSPORT PASS` и
`LAB046C COMPLETE SUCCESS` не заявляются. TX-файл, его спектр около +50 кГц,
первый/средний/последний self-decode и runner проверены; дефекта формирования
или управления, объясняющего результат, не найдено. Сохранённый официальный
исход остаётся `LAB046C HARDWARE RESULT = C`, `RF TX COUNT = 1`,
`OBJECT COMPLETE = NO`.
## Назначение
@@ -292,7 +382,7 @@ Goodput 6,69 кбит/с — это честная baseline при 20 ксимв
- Полный тракт `объект → фрагменты → кадр Lab045 → канал → приём → сборка`
проверен для всех шести сценариев значениями выше.
## Software gate
## Software gate Lab046B на момент его фиксации
- `python tools/quick_gate.py`: PASS; 468 тестов ядра, 7 функциональных
проверок лабораторий выполнено, 13 штатно пропущено.
@@ -301,9 +391,11 @@ Goodput 6,69 кбит/с — это честная baseline при 20 ксимв
`.pytest_cache`; на выполнение и результат тестов оно не повлияло.
- `git diff --check`: чист.
Актуальный общий gate после добавления Lab046C указан в начале документа.
## Ограничения и следующий шаг
RF TX = 0, аппаратная проверка не проводилась. Erasure-код 12+3 GF(256) не
задействован (будущее восстановление потери целых фрагментов). Оптимизация
преамбулы/guard на серию кадров, QPSK, JPEG и видео в этой лабе не делались.
Следующий этап определяется после анализа (Lab046 первым смотрит ChatGPT).
Для Lab046A/B RF TX = 0; первый аппаратный Lab046C завершён с RESULT C и одним
RF TX без повтора. Erasure-код 12+3 GF(256) не задействован. Порог PRBS7,
gain, PHY, FEC и detector после результата не менялись. Следующий этап
определяется отдельной постановкой; новый RF-сеанс автоматически не разрешён.