From 06fadf6957e7c3b1a5bb750a00dc0baa9fa9a68f Mon Sep 17 00:00:00 2001 From: LittleSam129 <1qwe432@gmail.com> Date: Fri, 18 Sep 2026 13:09:09 +0300 Subject: [PATCH] Update RX node preflight handoff --- docs/handoff/NEXT_RX_TASK.md | 38 +++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/docs/handoff/NEXT_RX_TASK.md b/docs/handoff/NEXT_RX_TASK.md index a541959..0f13296 100644 --- a/docs/handoff/NEXT_RX_TASK.md +++ b/docs/handoff/NEXT_RX_TASK.md @@ -6,35 +6,51 @@ stop and report the conflict. # Current RX task -TASK = VERIFY RX NODE SOFTWARE PREFLIGHT +TASK = +FINALIZE RX NODE SOFTWARE PREFLIGHT -1. From the laptop project path in RX_NODE_STATE.md, record `git status --short`, `git branch --show-current`, and `git rev-parse HEAD`. Confirm the branch is `video-development`. If the checkout is dirty or the branch is different, stop and report it. Run `git pull origin video-development`; if the pull fails or reports a conflict, stop and report it. Record the resulting HEAD. The HEAD in RX_NODE_STATE.md is the baseline before this handoff commit. +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. Check `data/raw/video001/udacity_project_video.mp4` with `Get-FileHash -Algorithm SHA256`. Expected SHA256: `651949922042c223375d40bf8929def97dbb62c6ade651d1f5b08eea47127d5f`. If the file is absent or the hash differs, report it; do not substitute another file or run the video gate. +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. Only if the SHA256 matches, run the complete `python -B -X utf8 tools/video_gate.py`. Record its result. +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: -4. Repeat the software-only offline RF-001 round trip: generate 100 packets, write IQ to a new local directory, decode that IQ through the receiver, and require 100 CRC-valid and 100 exact packets. Follow `docs/rf/RF_001.md` for the `qpsk_rf_tx.py` dry run and `qpsk_rf_rx.py` file receiver commands. Use new output paths so prior results are not overwritten. Preserve the full stdout and JSON report. This step does not access SDR hardware or authorize RF TX. +```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 +``` -5. Run the configured checks and report each result separately: `python -B -m pytest tests/ -q`; the targeted Ruff check over `STATIC_PATHS` defined in `tools/video_gate.py` (the same check run by the video gate); `python -B -m pyright --project pyrightconfig.json`; `git diff --check`. If the video gate did not run, run the targeted Ruff check separately. +The Ruff paths are the same targeted paths used by `video_gate.py`. Record the result of each check separately. -6. Run `hackrf_info` and record its full output. This is identification only. +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. -7. Do not run RF TX, continuous RX, `hackrf_transfer`, firmware or CPLD updates, Zadig, USB driver modifications, commit, or push. Do not add large raw IQ or video files to Git. +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. -8. Finish with exactly these fields, using PASS, FAIL, NOT_RUN, or an observed value as appropriate. Set readiness to YES only if all required checks pass, the video fixture hash matches, offline RF-001 is 100/100 exact, and `hackrf_info` identifies the expected device. Otherwise set it to NO and state the cause. +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 = -VERIFY RX NODE SOFTWARE PREFLIGHT +FINALIZE RX NODE SOFTWARE PREFLIGHT BRANCH = HEAD = VIDEO FIXTURE = +VIDEO FIXTURE SIZE = VIDEO FIXTURE SHA256 = + VIDEO GATE = -PYTEST = +TARGETED PYTEST = +FULL PYTEST = +LAB064 HISTORICAL FAILURE = + RUFF = PYRIGHT = GIT DIFF CHECK =