You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Define Arrow extension preservation and the GeoArrow value profile #799
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.
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.
changed the title [-]GeoArrow core types, validation, and ontology contract[/-][+]Define Arrow extension preservation and the GeoArrow value profile[/+]on Aug 19, 2026
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
Acceptance Criteria
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.