feat(formatters): add semver-based output format versioning

Relates to #271, #243 (closed)

Related: !904, !503 (merged), !505 (merged), !704 (merged)

Summary

Adds semver-based versioning to query output formats so consumers can detect breaking changes.

                    config/RAW_OUTPUT_FORMAT_VERSION
                              "1.0.0"
                                 |
                    +------------+------------+
                    |                         |
             ResultFormatter             CI enforcement
          format_name() -> "raw"      check-response-schema-
          format_version() -> 1.0.0    version.sh
                    |
          +---------+---------+
          |                   |
    JSON response        QueryMetadata
    { format_version:    { format_version: "1.0.0",
      "1.0.0", ... }      format_name: "raw" }
  • ResultFormatter trait gains format_name() and format_version() backed by semver::Version
  • GraphResponse includes format_version as first field in every JSON response
  • Proto QueryMetadata carries format_version + format_name for transport-level consumers
  • query_response.json schema updated with $id and required format_version field
  • CI job + lefthook hook enforce version bumps when formatter code changes
  • GOON format versioning deferred to the GOON encoding MR (!904 / ADR 009)
Edited by Michael Angelo Rivera

Merge request reports

Loading