Skip to content

feat(spatial): certify GeoArrow producer portability - #823

Merged
DecisionNerd merged 5 commits into
mainfrom
feat/802-geoarrow-conformance
Aug 19, 2026
Merged

DecisionNerd merged 5 commits into
mainfrom
feat/802-geoarrow-conformance

Conversation

@DecisionNerd

@DecisionNerd DecisionNerd commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

Closes #802

Outcome

  • preserves explicit non-computable GeoArrow extension names and CRS metadata through scalar and Arrow bulk ingestion, storage, reopen, query projection, IPC, and Parquet
  • keeps point() and distance() computation limited to the certified CRS profile with explicit preserved-only failures
  • publishes deterministic producer-neutral fixtures for every initial geometry, EPSG:4326/EPSG:3857 profiles, preserved-only metadata, nested offsets, nulls, IPC, and Parquet
  • validates the checked-in artifacts with independent PyArrow IPC/Parquet readers and keeps Python/Node/CLI behavior thin over Rust
  • documents compatibility, limits, errors, regeneration, fingerprints, and the consumer boundary without an XYG/runtime dependency

Evidence

  • CARGO_TARGET_DIR=/private/tmp/graphforge-802-target cargo test -p graphforge-core -p graphforge-plan -p graphforge-rel -p graphforge-storage -p graphforge-api --lib spatial
  • CARGO_TARGET_DIR=/private/tmp/graphforge-802-target cargo test -p graphforge-rel --lib distance_rejects_preserved_only_spatial_literals_explicitly
  • CARGO_TARGET_DIR=/private/tmp/graphforge-802-target cargo test -p graphforge-api --test e2e_baseline certified_spatial_point_and_distance_execute_in_rust -- --exact
  • CARGO_TARGET_DIR=/private/tmp/graphforge-802-target cargo test -p graphforge-cli --lib geoarrow
  • native Node release build + node --test tests/spatial-interchange.test.mjs
  • native Python maturin release build + python crates/graphforge-bindings-py/tests/spatial_interchange.py
  • two fixture regenerations produced identical SHA-256 values recorded in tests/fixtures/geoarrow-v1/SHA256SUMS
  • bazelisk test //:resource_inputs
  • scripts/ci/cargo-bazel-drift-check.py
  • Rustfmt, Ruff, Prettier, and git diff --check

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

@github-actions github-actions Bot added planner Changes to query planner core Core source code changes testing Test coverage and testing infrastructure documentation Improvements or additions to documentation labels Aug 19, 2026
@coderabbitai

coderabbitai Bot commented Aug 19, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your current included review allowance is based on your included PR review attempts over the past 7 days.

Next review available in: 9 minutes

Limit details: You’ve used all 2 included reviews currently available. Your 53 included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits within each organization.

For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 01b8fee8-efdc-4c85-ab81-9d6b3d8853a9

📥 Commits

Reviewing files that changed from the base of the PR and between 2cf177e and 5d5aa56.

⛔ Files ignored due to path filters (5)
  • Cargo.lock is excluded by !**/*.lock, !**/*.lock
  • crates/graphforge-cli/examples/generate_geoarrow_fixtures.rs is excluded by !**/examples/**
  • docs/book/architecture/geoarrow-conformance.md is excluded by !**/*.md, !**/docs/**
  • docs/book/architecture/spatial-values.md is excluded by !**/*.md, !**/docs/**
  • tests/fixtures/geoarrow-v1/canonical.parquet is excluded by !**/*.parquet
📒 Files selected for processing (21)
  • BUILD.bazel
  • crates/graphforge-api/src/bulk_construction.rs
  • crates/graphforge-api/src/construction.rs
  • crates/graphforge-api/tests/e2e_baseline.rs
  • crates/graphforge-bindings-node/src/lib.rs
  • crates/graphforge-bindings-node/tests/spatial-interchange.test.mjs
  • crates/graphforge-bindings-py/src/lib.rs
  • crates/graphforge-bindings-py/tests/spatial_interchange.py
  • crates/graphforge-cli/BUILD.bazel
  • crates/graphforge-cli/Cargo.toml
  • crates/graphforge-cli/src/lib.rs
  • crates/graphforge-core/src/lib.rs
  • crates/graphforge-plan/src/lib.rs
  • crates/graphforge-rel/src/expr.rs
  • crates/graphforge-storage/src/writer.rs
  • tests/contracts/geoarrow-interchange-v1.json
  • tests/fixtures/BUILD.bazel
  • tests/fixtures/geoarrow-v1/SHA256SUMS
  • tests/fixtures/geoarrow-v1/canonical.arrow
  • tools/bazel/drift/cargo_feature_fingerprint.json
  • tools/bazel/parity/migration_target_map.json

Comment @coderabbitai help to get the list of available commands.

@codspeed

codspeed Bot commented Aug 19, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will improve performance by 18.51%

⚡ 1 improved benchmark
✅ 39 untouched benchmarks

Performance Changes

Mode Benchmark BASE HEAD Efficiency
⚡ Simulation lex[wide_union] 1.6 ms 1.4 ms +18.51%

Tip

Curious why this is faster? Comment @codspeedbot explain why this is faster on this PR, or directly use the CodSpeed MCP with your agent.


Comparing feat/802-geoarrow-conformance (5d5aa56) with main (2cf177e)

Open in CodSpeed

@DecisionNerd
DecisionNerd merged commit 8a44b99 into main Aug 19, 2026
24 checks passed
@DecisionNerd
DecisionNerd deleted the feat/802-geoarrow-conformance branch August 19, 2026 15:26
@DecisionNerd
DecisionNerd restored the feat/802-geoarrow-conformance branch August 30, 2026 17:52
@DecisionNerd
DecisionNerd deleted the feat/802-geoarrow-conformance branch September 17, 2026 18:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core source code changes documentation Improvements or additions to documentation planner Changes to query planner testing Test coverage and testing infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Certify GeoArrow producer conformance and portability

1 participant