This file is the authoritative current task for the RX laptop. The RX assistant must read RX_NODE_STATE.md first, then execute this file. If chat history conflicts with these files and current Git HEAD, stop and report the conflict. # Current RX task TASK = FINALIZE RX NODE SOFTWARE PREFLIGHT 1. GIT. In the laptop project at `C:\Users\Professional\Documents\Codex\SDR_Rover_Video`, confirm `video-development` and record the starting HEAD and `git status --short --untracked-files=no`. If tracked files are modified, stop and report the conflict. Run `git pull origin video-development`. Verify that `git branch --show-current` is `video-development`, `git rev-parse HEAD` equals `git rev-parse origin/video-development`, and the tracked checkout is clean (`git status --short --untracked-files=no` has no output). Local RF-001 results outside Git are not a conflict. If the pull or any of these checks fails, stop and report it. 2. VIDEO FIXTURE. Inspect `data/raw/video001/udacity_project_video.mp4`. Required size: `25268015` bytes. Required SHA256 from `Get-FileHash -Algorithm SHA256`: `651949922042c223375d40bf8929def97dbb62c6ade651d1f5b08eea47127d5f`. The earlier laptop file had SHA256 `bff9b28d0e1f5442cfdf9f2bd51251d66506ca518ad7dfe6074670859731a8fb` and is not the fixture. If the file is absent, the size differs, or SHA256 differs, mark VIDEO FIXTURE = FAIL and do not run `video_gate.py`. Do not download or substitute a file, change the expected SHA256, or weaken the check. The user will transfer the correct file manually from the main PC. 3. After both the fixture size and SHA256 match, run the complete `python -B -X utf8 tools/video_gate.py`. Then run targeted VIDEO/RF tests, targeted Ruff, Pyright, and `git diff --check` separately. On PowerShell, the targeted tests are: ```powershell $videoTests = @(Get-ChildItem -LiteralPath tests -Filter 'test_video*.py' -File | Select-Object -ExpandProperty FullName) python -B -m pytest $videoTests tests/test_packet.py tests/test_bpsk_radio.py tests/test_rf001_preparation.py tests/test_clock001.py -q python -B -c "import subprocess, sys; from tools.video_gate import STATIC_PATHS; sys.exit(subprocess.call([sys.executable, '-B', '-m', 'ruff', 'check', *STATIC_PATHS]))" python -B -m pyright --project pyrightconfig.json git diff --check ``` The Ruff paths are the same targeted paths used by `video_gate.py`. Record the result of each check separately. 4. Repeat the software-only offline RF-001 round trip: 100 packets → IQ file → receiver. Use the `qpsk_rf_tx.py` dry run and `qpsk_rf_rx.py` file receiver commands in `docs/rf/RF_001.md`, with new local output paths so older results are preserved. Require 100/100 CRC-valid and 100/100 exact packets. Preserve stdout and the JSON report. Run `hackrf_info` and record its full output; it is identification only. No RF TX or hardware capture is authorized. 5. FULL PYTEST is optional: `python -B -m pytest tests/ -q`. If its only failure is caused by the missing historical `data/raw/lab064/tx_metadata.json`, report FULL PYTEST = FAIL and LAB064 HISTORICAL FAILURE = HISTORICAL LAB064 FIXTURE MISSING; NON-BLOCKING FOR RF-001 RX NODE. Verify that there are no other failures before applying this exception. Do not create or simulate that fixture. Any other new test failure blocks readiness. If the full suite is not run, report FULL PYTEST = NOT_RUN and LAB064 HISTORICAL FAILURE = NOT_RUN. 6. RX NODE READY FOR RX-ONLY HARDWARE TEST = YES only when the fixture size and SHA256 match, video gate passes, targeted VIDEO/RF tests pass, targeted Ruff passes, Pyright passes, `git diff --check` passes, offline RF-001 yields 100/100 CRC-valid and 100/100 exact packets, `hackrf_info` passes, and the Git checks in step 1 pass. The sole verified historical Lab064 fixture failure in the optional full suite does not change readiness to NO. Any other failure does. 7. Do not perform RF TX, continuous RX, `hackrf_transfer`, firmware or CPLD updates, `hackrf_spiflash`, Zadig, USB driver changes, commit, or push on the RX laptop. 8. Finish with this report. For checks not run, write NOT_RUN; for failures, state the concrete cause. TASK = FINALIZE RX NODE SOFTWARE PREFLIGHT BRANCH = HEAD = VIDEO FIXTURE = VIDEO FIXTURE SIZE = VIDEO FIXTURE SHA256 = VIDEO GATE = TARGETED PYTEST = FULL PYTEST = LAB064 HISTORICAL FAILURE = RUFF = PYRIGHT = GIT DIFF CHECK = OFFLINE RF-001 = HACKRF INFO = RX NODE READY FOR RX-ONLY HARDWARE TEST = YES / NO RF TX = 0 STOP.