feat(spec)!: HFX v0.3.0 — GeoParquet bbox covering struct (s05+s06+s07)#6
Merged
Merged
Conversation
Replace the four flat float32 bbox columns on catchments.parquet with a single non-nullable bbox struct {xmin,ymin,xmax,ymax} declared as a GeoParquet 1.1 covering at geo.columns.geometry.covering.bbox.*; retarget the row-group-statistics MUST clause to the struct leaves. Bump format_version 0.2.1 -> 0.3.0 across HFX_SPEC.md and the manifest JSON Schema const. Add hfx.aux.snap.v2 (nullable bbox struct, same covering convention); retain snap v1 as historical. graph.parquet stays flat.
BREAKING CHANGE: format_version 0.3.0 retypes the catchments bbox columns into a struct and moves snap features to hfx.aux.snap.v2.
…box covering struct + snap v2
Catchments + snap bbox become a struct {xmin,ymin,xmax,ymax} with leaf row-group stats and GeoParquet 1.1 covering metadata; snap aux -> hfx.aux.snap.v2. Five hand-authored D8-raster fixtures migrated in place (catchments struct + format_version only; rasters preserved). graph stays flat. Adds verify_covering_metadata.py + covering-metadata-missing/leaf-stats-missing invalid fixtures.
….3.0 Add FormatVersion::V0_3_0 (clean break, reject 0.2.1); read the catchments/snap bbox struct leaves; new row_group_has_struct_bbox_stats matches leaf stats by full dotted path bbox.xmin etc; validate GeoParquet covering metadata (schema.catchments.covering_missing) and struct leaf stats (schema.catchments.bbox_stats_missing); move snap aux to v2. graph stays flat. No toolkit version bump. BREAKING CHANGE: hfx-validator accepts only format_version 0.3.0 and the struct bbox covering layout.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Milestone alden-feedback Point 5 (HFX spec break). Adopts the GeoParquet 1.1 bbox covering: the four flat
float32bbox columns oncatchments.parquet(and snap) become a singlebboxstruct{xmin,ymin,xmax,ymax}whose leaves carry row-group statistics, declared atgeo.columns.geometry.covering.bbox.*so standard tools (DuckDB/GeoPandas/geoarrow-rs) get automatic spatial pushdown.format_version0.2.1 → 0.3.0 (clean break); snap aux →hfx.aux.snap.v2. graph.parquet stays flat (no geometry).This is a CI-coupled unit — three stacked commits that must land together (s05 schema-const, s06 fixtures, s07 validator interlock; any subset is conformance-CI-red by design):
feat(spec)!— HFX_SPEC.md + manifest schema const + snap v2 spec/schema + CHANGELOG. graph untouched.test(conformance)— regenerate all fixtures to 0.3.0 struct covering + snap v2; 5 hand-authored D8-raster fixtures migrated in place (rasters preserved, SHA-256 identical); new invalid fixturescovering-metadata-missing+leaf-stats-missing;verify_covering_metadata.py.write_graphbyte-unchanged.feat(validator)!—FormatVersion::V0_3_0(accept only 0.3.0); read struct leaves; newrow_group_has_struct_bbox_statsmatching leaf stats by full dotted pathbbox.xmin; covering-metadata validation; snap v1→v2 dispatch. graph reader untouched; no toolkit version bump.Local verification: cargo fmt/clippy/test green (135 tests); validator loops valid 8/8 accept, invalid 23/23 reject; gate-1 leaf-stats proven (s04).
Deferred (tracked): s08 adapters, s09 shed reader (separate repos, follow this merge); toolkit 0.3.0→0.4.0 + docs/VERSIONING + crate READMEs = s12. Plans: planning/milestone-alden-feedback/s0{5,6,7}/plan.md.