Skip to content

Add a reconciled N1MM-family live log source #27

Description

@rwjblue

Context

QSO Sidecar currently reads PoLo through LoFi or ADIF. Mainstream contest loggers expose live contact and station-state messages that can provide a lower-latency, logger-neutral source without turning Sidecar into a logger.

N1MM+ is the first target. DXLog exposes N1MM-style broadcasts, while WriteLog has a closely related UDP format that must be verified with fixtures rather than assumed compatible.

Scope

  • Add a configurable, read-only UDP source for N1MM+ broadcasts.
  • Parse and normalize, at minimum:
    • AppInfo
    • ContactInfo
    • contact replacement and deletion messages
    • RadioInfo
    • DynamicResults
  • Feed contact changes through the existing normalized log-source and last-good-state boundaries from Persist last-good log state and formalize log-source boundaries #7.
  • Define an explicit initial-baseline/replay workflow. A stream of live deltas must never be presented as a complete log unless Sidecar has a trusted baseline.
  • Track source identity, logger/version, freshness, completeness, and reconciliation state.
  • Compare logger-reported totals with Sidecar's independently computed totals without treating logger totals as authoritative.
  • Evaluate DXLog and WriteLog compatibility using sanitized captured fixtures; isolate logger-specific differences behind adapters.
  • Keep contact/radio telemetry separate from logger-emitted spot or cluster messages. Spot-derived data must follow the assistance policy in Centralize assistance policy across all live external sources #22.
  • Bind/listen conservatively, document firewall and LAN-exposure implications, and never log raw QSO payloads at normal log levels.

Source lifecycle

Expose at least these distinguishable states:

  • waiting for baseline
  • loading/replaying baseline
  • live and reconciled
  • live but incomplete
  • stale/degraded
  • disconnected

Restart and packet-loss behavior must preserve the last-good log while making incompleteness visible.

Acceptance criteria

  • N1MM+ add, replace, and delete events update normalized QSOs idempotently.
  • App and radio messages expose logger identity and current operating context without affecting score.
  • Startup cannot silently claim a complete log from live deltas alone.
  • A documented replay, snapshot, or imported-baseline path can reach a reconciled state.
  • Dynamic-results discrepancies are surfaced without overriding Sidecar scoring.
  • Disconnect, restart, duplicate packet, out-of-order update, and missed-baseline behavior have deterministic tests.
  • Last-good persistence survives malformed packets and source failure.
  • Sanitized N1MM+ fixtures cover every supported message.
  • DXLog and WriteLog compatibility is either fixture-tested or explicitly reported unsupported.
  • Contact telemetry does not trigger an assisted-category warning; external spot telemetry does.
  • Configuration, privacy, firewall, and logger-setup documentation is included.

References

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions