Skip to content

Add Cabrillo import and submission preflight #31

Description

@rwjblue

Context

PoLo and mainstream contest loggers can generate Cabrillo for submission. Sidecar should help validate the final artifact without becoming a log editor or claiming to reproduce official adjudication.

The first supported profile should be NAQP CW. The parser and validation boundaries should allow later NAQP modes without becoming a general all-contest engine.

Scope

  • Parse the required Cabrillo 3.x headers and NAQP CW QSO records.
  • Import a Cabrillo file as a read-only comparison/preflight source.
  • Compare the Cabrillo contacts with the active normalized log using conservative identity rules.
  • Reuse the event/entry profile and findings model from Add category-aware NAQP compliance diagnostics #28.
  • Validate at least:
    • contest identifier and event period
    • callsign and operator/category headers
    • assisted/unassisted category consistency
    • claimed score and QSO count
    • eligible modes and bands
    • sent-name and sent-location consistency
    • received exchange completeness
    • duplicates and obvious self-QSOs
  • Distinguish errors, warnings, informational differences, and checks that are not verifiable.
  • Never rewrite the Cabrillo file or current source log.
  • Keep raw private log content out of normal logs and GitHub fixtures.

Acceptance criteria

  • A valid NAQP CW Cabrillo 3.x file parses into a documented internal representation.
  • Malformed headers and QSO rows produce line-numbered diagnostics without discarding otherwise reviewable content.
  • Header/category values are checked against the persisted entry profile.
  • The comparison reports missing, extra, and materially different contacts conservatively.
  • Claimed totals are compared with Sidecar results and discrepancies are explained.
  • Unsupported contests or versions fail clearly rather than being partially misinterpreted.
  • The workflow is read-only and preserves the original file byte-for-byte.
  • Sanitized fixtures cover valid, malformed, inconsistent-category, and mismatch cases.
  • Documentation explains that preflight is advisory and not official log adjudication.

Related work

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