Skip to content

Define Arrow extension preservation and the GeoArrow value profile #799

Description

@DecisionNerd

Parent

Native implementation slice of #797.

Objective

Give GraphForge a generic, consumer-neutral way to preserve Arrow extension semantics, then define the initial Rust-owned GeoArrow producer/computation profile on that foundation.

Scope

  • Preserve extension name, storage type, serialized field metadata, buffers, offsets, validity, and nullability for recognized and unrecognized Arrow extension fields across GraphForge-owned data boundaries.
  • Define canonical ontology/schema descriptors for extension-backed properties without making every domain extension a new visualization-specific core type.
  • Define native GeoArrow values for two-dimensional Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon.
  • Freeze canonical coordinate layout, metadata serialization, axis order, nullability, precision, deterministic fingerprint rules, and compatibility/version behavior.
  • Canonical GraphForge construction and initial computation profile begins with EPSG:4326 and EPSG:3857; well-formed unsupported CRS/edge metadata remains transportable.
  • Validate finite coordinates, offsets, ring/nesting structure, metadata, and resource budgets with stable typed errors.
  • Keep Rust authoritative and introduce no XYG, map, tile, projection-UI, or renderer dependency.

Acceptance Criteria

  • A generic extension descriptor round-trips extension names, storage schemas, metadata, and buffers without semantic loss.
  • Unrecognized but well-formed extension metadata is preserved through supported transport paths.
  • Rust public types describe every initial GeoArrow geometry and certified CRS/edge combination.
  • Arrow layouts and extension metadata are canonical, deterministic, and specification-backed.
  • Unsupported computation profiles fail explicitly without preventing safe storage/export.
  • Invalid CRS metadata, non-finite coordinates, malformed offsets/nesting, and budget overruns fail atomically without coordinate-bearing diagnostics.
  • Ontology compile/persist/reopen preserves the complete extension/spatial property contract.
  • Unit and property tests cover all initial geometries, both certified CRSs, unknown preserved metadata, and compatibility behavior.

BDD Completion Scenario

Scenario: Unknown extension semantics are not erased

Given an Arrow property field with a well-formed extension name and metadata that GraphForge does not compute on
When the field is accepted for safe transport, persisted, reopened, and exported
Then its storage type, extension name, metadata, buffers, and nulls agree exactly
And a semantic operation requiring unavailable support fails explicitly rather than rewriting the field.

Non-Goals

Storage/query/binding round trips beyond the type foundation, rendering, reprojection, map behavior, or a universal registry of domain computation engines.

Completion

Blocks #797; the parent remains the close gate.

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreCore source code changesenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions