Files
SDR-Rover/docs/handoff/RX_RESULT_TEMPLATE.md
2026-09-22 17:43:58 +03:00

1.9 KiB

RX result schema

The publisher creates both docs/handoff/results/RX_RESULT.json and docs/handoff/results/RX_RESULT.md on the existing rx-node branch. JSON is authoritative. Markdown is generated from the same validated object.

READY JSON

{
  "schema_version": 1,
  "task_id": "RF001A_OTA_CAPTURE_004",
  "state": "RX_READY_FOR_TX",
  "rx_ready_for_tx": true,
  "process_alive": true,
  "file_growing": true,
  "capture_pid": 1234,
  "published_at": "2026-09-21T12:00:02+00:00",
  "capture_started_at": "2026-09-21T12:00:00+00:00",
  "expected_capture_end": "2026-09-21T12:01:00+00:00",
  "capture_path": "C:\\Users\\Professional\\Documents\\SDR_Rover_Captures\\<run>\\rf001a_ota_capture.cs8",
  "common_clock_verified": true,
  "source_head": "<40-character lowercase Git HEAD>",
  "rf_tx": 0,
  "exit_code": null,
  "file_size": null,
  "duration_seconds": null,
  "overruns": null,
  "usb_errors": null,
  "file_errors": null,
  "sha256": null,
  "clkin_after": "NOT_RUN",
  "rf_tx_observed": "UNKNOWN"
}

COMPLETE JSON

The final object keeps the same identity, timing, path and PID. It changes these fields:

state = CAPTURE_COMPLETE
rx_ready_for_tx = false
process_alive = false
file_growing = false
published_at = <final publication UTC time>
exit_code = <integer>
file_size = <integer bytes>
duration_seconds = <number>
overruns = <non-negative integer or null>
usb_errors = <non-negative integer or null>
file_errors = <non-negative integer or null>
sha256 = <lowercase 64-character SHA256>
clkin_after = DETECTED or NOT_DETECTED
rf_tx_observed = EXPECTED_EXTERNAL_TX or UNKNOWN
rf_tx = 0

Use null when the capture tool did not report an error counter. Do not infer zero.

Raw IQ, video, waveform files and large logs must stay outside Git.