Bootstrap DD3 Rust port workspace with host-first compatibility tests
This commit is contained in:
36
docs/INTEROP_CHECKLIST.md
Normal file
36
docs/INTEROP_CHECKLIST.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# Interop Checklist
|
||||
|
||||
## A) Rust Receiver <-> C++ Sender
|
||||
1. Run C++ sender on `lora-refactor` baseline and Rust receiver host simulation harness.
|
||||
2. Verify receiver accepts sender short-id and sender-id mapping.
|
||||
3. Verify ACK payload bytes:
|
||||
- `[flags:1][batch_id_be:2][epoch_utc_be:4]`
|
||||
4. Verify duplicate batch handling:
|
||||
- ACK still sent
|
||||
- duplicate counters increment
|
||||
- publish/log suppressed
|
||||
5. Compare MQTT state and fault payload keys/semantics against baseline.
|
||||
6. Compare CSV line/header output for shared sample windows.
|
||||
|
||||
## B) Rust Sender <-> C++ Receiver
|
||||
1. Run Rust sender with sync-request startup behavior.
|
||||
2. Confirm C++ receiver decodes payload schema v3 and sparse mask reconstruction.
|
||||
3. Confirm ACK mismatch handling does not clear inflight batch.
|
||||
4. Confirm retry and catch-up behavior under injected packet loss.
|
||||
|
||||
## C) Contract Comparison
|
||||
1. Home Assistant discovery topics and payload fields:
|
||||
- topic: `homeassistant/sensor/<device_id>/<key>/config`
|
||||
- `unique_id`, `device.identifiers`, `device.name`, `device.model`, `device.manufacturer`
|
||||
2. MQTT state payload:
|
||||
- required keys present
|
||||
- legacy keys absent
|
||||
3. CSV output:
|
||||
- exact header order
|
||||
- stable numeric formatting
|
||||
|
||||
## D) Port Validation Items
|
||||
- Sender unsynced boot sends only sync-requests.
|
||||
- ACK bootstrap gate enforced (`time_valid=1` and epoch >= `MIN_ACCEPTED_EPOCH_UTC`).
|
||||
- Frame/CRC/ACK/payload golden fixtures all pass.
|
||||
- All protocol encode/decode paths covered by fixture-backed tests.
|
||||
Reference in New Issue
Block a user