Parent: #529
Summary
Generalize the existing WSJT-X UDP listener as a standards-compatible Logged ADIF input and correct its status accounting for producers such as POTACAT.
Retain existing WsjtxIngestSettings, configuration keys, and environment variables for compatibility. This is an additive contract and behavior change.
Status contract
Add or clearly define separate counters for:
- Datagrams received.
- Valid unsupported datagrams ignored.
- Records imported.
- Records updated.
- Records skipped.
- Duplicates skipped.
- Parse errors.
Expose bounded diagnostics for:
- Last sender application ID.
- Last sender network endpoint when available.
- Last datagram time.
- Last successfully imported callsign and local ID.
- Last error.
Protocol behavior
- Accept WSJT-X type 12 Logged ADIF from compatible producers.
- POTACAT heartbeat type 0 increments received/ignored counters, not skipped-record counters.
- POTACAT type 5 QSO_LOGGED following type 12 is ignored and does not create another QSO.
- Malformed type 12 increments parse errors.
- Valid unsupported message types do not count as ADIF parse failures.
- Sender ID is diagnostic provenance only and must never be treated as authentication.
Security
- Bound datagram, sender-ID, endpoint, and ADIF sizes.
- Sanitize untrusted values before logs or display.
- Default to loopback binding.
- Do not log full untrusted payloads.
Implementation scope
- Shared proto/status envelopes.
- Rust and .NET listeners and runtime status.
- Exact fixtures generated from the audited POTACAT encoder.
- Engine specification, setup copy, and conformance harness.
Tests
- Type 0, type 5, type 12, malformed, truncated, oversized, and non-UTF-8 packets.
- Sender
POTACAT diagnostics.
- Long-running heartbeat accounting.
- Cross-engine equivalent counters and status.
Acceptance criteria
- Healthy POTACAT traffic does not inflate
records_skipped.
- Both engines identify the sender and last import outcome consistently.
- Existing WSJT-X setup remains compatible.
- Behavior is documented in the engine specification.
Parent: #529
Summary
Generalize the existing WSJT-X UDP listener as a standards-compatible Logged ADIF input and correct its status accounting for producers such as POTACAT.
Retain existing
WsjtxIngestSettings, configuration keys, and environment variables for compatibility. This is an additive contract and behavior change.Status contract
Add or clearly define separate counters for:
Expose bounded diagnostics for:
Protocol behavior
Security
Implementation scope
Tests
POTACATdiagnostics.Acceptance criteria
records_skipped.