Skip to content

ADIF 3.1.7 support (v1.1.0)#4

Merged
KI7MT merged 3 commits into
mainfrom
feature/adif-3.1.7
May 16, 2026
Merged

ADIF 3.1.7 support (v1.1.0)#4
KI7MT merged 3 commits into
mainfrom
feature/adif-3.1.7

Conversation

@KI7MT
Copy link
Copy Markdown
Member

@KI7MT KI7MT commented May 16, 2026

Summary

Adds official ADIF 3.1.7 spec resources alongside the sealed 3.1.6 set. Pure additive — no breaking changes, no clients have to change anything.

Tracks the natural follow-on from the fleet get_version_info rollout (closed). get_version_info now reports {service_version: "1.1.0", adif_spec_version: "3.1.7"}.

New enum entries (from upstream ADIF_317_resources_2026_03_22.zip)

Type Value Parent Description
Mode OFDM Orthogonal Frequency-Division Multiplexing, including COFDM
Submode FT2 MFSK (no spec description)
Submode FREEDATA DYNAMIC (no spec description)
Submode RIBBIT_PIX OFDM Images transmitted using Ribbit
Submode RIBBIT_SMS OFDM (no spec description)

Resource set

  • src/adif_mcp/resources/spec/317/ — full 30-file canonical 3.1.7 JSON (29 official from upstream ZIP + project-internal enumerations_country.json carried forward unchanged)
  • test/data/ADIF_317_test_QSOs_2026_03_22.adi — official G3ZOD test corpus (6,197 records, +6 over 3.1.6, exercises new enum values)

Default spec switched to 3.1.7

  • __adif_spec__ = "3.1.7" (was "3.1.6")
  • [tool.adif] spec_version = "3.1.7"
  • [tool.adif_mcp] spec = "ADIF_317"
  • get_spec_text(version=...) default = "317"
  • adif_catalog.json + adif_meta.json bumped

Sealed for backward compatibility

  • src/adif_mcp/resources/spec/316/ — untouched
  • test/data/ADIF_316_test_QSOs_2025_09_15.adi — untouched
  • Callers explicitly pinning version="316" continue to work

Tests

  • 6 new tests covering each new enum entry + total submode count (test_317_new_mode_ofdm, test_317_new_submode_ft2, test_317_new_submode_freedata, test_317_new_submode_ribbit_pix, test_317_new_submode_ribbit_sms, test_317_submode_count)
  • test_list_enumerations_has_mode: Mode record_count expectation 90 → 91 (OFDM is not import-only, so import_only_count stays 42)
  • test_official_adif_test_file_zero_errors: corpus filename + record count 6191 → 6197
  • test_pkg_meta_exposed: allowed __adif_spec__ set extended to include "3.1.7"

Full suite: 108/108 pass.

Architecture note

Package version (1.0.5 → 1.1.0) and ADIF spec version (3.1.6 → 3.1.7) intentionally bumped independently per the fleet {service_version, spec_version} convention. Coupling the two numbers would force fake spec bumps for bug fixes and prevent independent rev of the package.

References

KI7MT and others added 3 commits May 16, 2026 18:37
Adds official ADIF 3.1.7 spec resources alongside the sealed 3.1.6 set.
Pure additive — no breaking changes, no clients have to change anything.

New enum entries (from upstream ADIF_317_resources_2026_03_22.zip):
- Mode: +OFDM (Orthogonal Frequency-Division Multiplexing, with COFDM)
- Submode: +FT2 (Mode MFSK)
- Submode: +FREEDATA (Mode DYNAMIC)
- Submode: +RIBBIT_PIX (Mode OFDM, "Images transmitted using Ribbit")
- Submode: +RIBBIT_SMS (Mode OFDM)

Resource set:
- src/adif_mcp/resources/spec/317/ — full 30-file canonical 3.1.7 JSON
  (29 official from upstream ZIP + project-internal enumerations_country.json
  carried forward unchanged)
- test/data/ADIF_317_test_QSOs_2026_03_22.adi — official G3ZOD test corpus
  (6,197 records, +6 over 3.1.6, exercises new enum values)

Default spec switched to 3.1.7:
- __adif_spec__ = "3.1.7" (was "3.1.6")
- [tool.adif] spec_version = "3.1.7"
- [tool.adif_mcp] spec = "ADIF_317"
- get_spec_text(version=...) default = "317"
- adif_catalog.json + adif_meta.json bumped

Sealed for backward compatibility:
- src/adif_mcp/resources/spec/316/ — untouched
- test/data/ADIF_316_test_QSOs_2025_09_15.adi — untouched
- Callers explicitly pinning version="316" continue to work

Tests:
- 6 new tests covering each new enum entry + total submode count
- Mode record_count expectation 90 -> 91 (OFDM is not import-only,
  so import_only_count stays 42)
- Official corpus assertion 6191 -> 6197 records, filename updated
- test_pkg_meta allowed set extended to include "3.1.7"
- Full suite: 108/108 pass

Architecture note: package version (1.0.5 -> 1.1.0) and ADIF spec
version (3.1.6 -> 3.1.7) intentionally bumped independently per the
fleet convention from IONIS-AI/ionis-devel#49 — get_version_info now
returns {service_version: "1.1.0", adif_spec_version: "3.1.7"}.

References:
- https://adif.org.uk/317/ADIF_317_annotated.htm
- https://adif.org.uk/317/ADIF_317_resources_2026_03_22.zip

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The added '3.1.7' string pushed line 11 to 99 chars (cap: 95).
Moved the trailing comment to its own line above the assert.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…nifest CLI

The 'validate-manifest' CLI step in ci.yml has been failing on main
since commit 7bde757 ("fix: remove dead provider/schema resource
functions") which removed resources/schemas/ but missed the CLI
in cli/validate.py that depends on it via:

    schema_path = files("adif_mcp.resources.schemas").joinpath("manifest.v1.json")

Restoring the schemas directory with a proper JSON Schema describing
the manifest.json structure (schema_version, name, version,
description, components, tools). The CLI 'adif-mcp validate-manifest'
now succeeds against src/adif_mcp/mcp/manifest.json.

This unblocks the ADIF 3.1.7 PR which would otherwise inherit the
pre-existing CI failure on main.

Files:
- src/adif_mcp/resources/schemas/__init__.py — package marker
- src/adif_mcp/resources/schemas/manifest.v1.json — Draft 2020-12 schema
  describing the manifest contract (validates current manifest with
  no warnings)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@KI7MT KI7MT merged commit 74d5c3c into main May 16, 2026
4 checks passed
@KI7MT KI7MT deleted the feature/adif-3.1.7 branch May 16, 2026 19:13
KI7MT added a commit to qso-graph/.github that referenced this pull request May 16, 2026
adif-mcp shipped v1.1.0 with full ADIF 3.1.7 support (qso-graph/adif-mcp#4).
Bumps the per-server table row from "ADIF 3.1.6 spec parsing ... v1.0.5"
to "ADIF 3.1.7 spec parsing ... v1.1.0". Tool count stays at 8 — 3.1.7
is pure additive (+1 Mode, +4 Submodes) and didn't add new MCP tools.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
KI7MT added a commit to qso-graph/qso-graph.github.io that referenced this pull request May 16, 2026
adif-mcp shipped v1.1.0 with ADIF 3.1.7 spec support
(qso-graph/adif-mcp#4). Doc sweep:

- docs/index.md — homepage Foundation table + Project Links footer
  + Testing reference: 3.1.6 -> 3.1.7. Test count 60/60 -> 108/108
  reflects the actual test suite size after the L2 expansion +
  3.1.7 enum tests.
- docs/servers/index.md — fleet summary Foundation table row
- docs/servers/adif-mcp.md — full server page: headline tagline,
  "What It Does" section (3.1.6 + counts), Tools table entry for
  validate_adif_record, all references in Tool Reference and
  Testing sections. Version 1.0.0 -> 1.1.0 in the test count line.

Notes:
- "+5 records vs 3.1.6" wording in the enum count line captures the
  additive change: +1 Mode (OFDM), +4 Submodes (FT2, FREEDATA,
  RIBBIT_PIX, RIBBIT_SMS).
- "FT4 grandfathering" wording updated to clarify the policy is
  unchanged in 3.1.7 (still requires SUBMODE=FT4 + MODE=MFSK).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant