Repository navigation
Conversation
Comment on lines
+143
to
+146
| assert Image.open(BytesIO(tile.content)).size == ( | ||
| math.ceil(w / factor), | ||
| math.ceil(h / factor), | ||
| ) |
| # Always reap its process group, including after normal exit. | ||
| try: | ||
| os.killpg(process.pid, signal.SIGKILL) | ||
| except ProcessLookupError: |
This branch has not been deployed
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.
Download-only datasets can prepare COG or vector PMTiles derivatives for both OGM Viewer and content thumbnails, plus compressed Parquet derivatives for searchable table previews. IIIF image services and Presentation 2/3 manifests can now produce hosted static Image API 2 level 0 bundles, so published image previews do not depend on provider CORS or continued availability. Separate coverage manifests supply labeled location geometry and static maps. The feature defaults off, with an explicit per-record publication allowlist. Original downloads, harvested references, curated thumbnails, and working previews retain priority.
This branch starts at
feature/ogm-viewer-resource-page(ab8458ed) and targetsdevelop; it includes that branch’s unmerged integration changes.Tabular derivatives and dataset-local search
CSV, TSV, and Parquet downloads now prepare compressed Parquet derivatives and expose schema, row count, and asset size in the shared manifest. The resource page uses a lazy-loaded, same-origin DuckDB WASM worker for literal search within the opened dataset, typed sorting, and 50-row pagination. Collection-wide search is unchanged. CSV identifiers remain text; existing Parquet numeric types are preserved, with exact string display for large integers and decimals.
The worker uses the existing bounded conversion and publication path. Browser queries have cancellation, a 30-second watchdog, and explicit failure/retry states. The S3-backed asset route now handles range-aware HEAD requests required by strict DuckDB range reads. Original downloads remain unchanged; no geography or illustrative thumbnails are fabricated from a table.
Validation at
04ee1518: 82 backend tests, 57 frontend unit/component tests, and 6 browser acceptance checks across development and production builds passed. Browser checks verify partial reads, leading-zero IDs, exact large integers, literal search, completed sorting, pagination, unavailable files, and cancellation. Backend lint/format, frontend lint (12 existing warnings), and the production application build passed. New CI results remain separate from these local checks.Supplemental real-source validation: a public USGS daily earthquake CSV produced 202 rows, 41,386 source bytes → 24,069 Parquet bytes in 0.877 seconds. This is not a BTAA pilot record or collection-wide compression estimate. Table storage is additional measured Parquet bytes × retained versions; the existing cost estimate has no measured tabular census yet. Full-text scans can read most of a file despite Range support.
Table formats, API, limits, workflow, and validation
Production versus preview
Actual browser screenshots captured October 31, 2026, using the same 12 resource IDs in gallery view, sorted by Title (A–Z). Both captures use the same 1,280-pixel page width and include every result.
Open production screenshot at full size · Open preview screenshot at full size
Production returns 11 records; the local preview returns 12. The additional preview result is Purdue Campus: West Lafayette, Indiana, 1895 (
008b35d8-d227-43aa-86d3-f3236019af87), which is absent from these production search results. The first ten results align by title; vegetation is result 11 in production and 12 in the preview. These screenshots show the selected pilot records, not a production deployment or collection-wide success claim. The production Location facet is expanded and the preview Location facet is collapsed.Hosted IIIF and image optimization (November 1 extension)
Implementation, limits and validation evidence
Implementation
Validation
Rollout and limitations
The collection maintainer confirms that BTAA Geoportal inclusion establishes reuse eligibility. Public/published/not-suppressed checks and the technical/visual rollout allowlist remain enforced. Seventeen eligible reviewed records (16 fixed-pilot records plus the standalone elevation supplement) were freshly prepared and published in an isolated local API. All 17 pass API/image checks and feature-off rollback with original attributes preserved; every prepared file layer passes HTTP Range/CORS checks. All regenerated thumbnails match reviewed images byte for byte. Seven vector derivatives retain identical decoded geometry, properties and feature IDs. One absent local record and one retired local record remain excluded. The original screenshot-only USGS DEM index still lacks retrievable metadata and is not claimed as validated. Numeric raster pixel inspection is unsupported. Review-only service thumbnails remain withheld; over-limit records retain their existing presentation. No production rollout or collection-wide acceptance claim is made.
Before the IIIF extension, all checks passed on commit
4b478c19: backend (2,292 passed, 124 skipped, one expected-failure test unexpectedly passed), frontend (1,398 passed across 132 files, plus production build), pinned conversion worker (61 passed; optional database test skipped), viewer browser contracts, Ruff, CodeQL, CLI, QGIS, and MkDocs. All automated review threads are resolved.The additional local rollout report contains 35 verified embedded images. The revised elevation PDF’s two pages were rendered and visually checked. Expansion priorities follow the measured pilot outcomes: supported downloads, supported index members, then focused service batches; all remain subject to technical and visual review.
Code-quality review (a18ebe2)
Fixed typed Parquet sorting (display casts must not change numeric order), stale image selection when a table takes precedence, public-response leakage/bloat from internal IIIF registries, missing source invalidation for service-layer/title changes, and subprocess error-log/descendant cleanup. Public preview descriptors now use an explicit allowlist; the full delivery manifest remains internal. Existing pilot manifests need re-preparation because the record signature now includes layer and title.
Validation: 87 backend preview tests, one transactional PostgreSQL test, 10 targeted frontend unit tests, and six development/production browser table tests passed. Backend lint/format and frontend lint passed (existing frontend warnings); modified frontend files pass formatting. All CI checks passed on the preceding head; new-head CI must also pass.
Remaining broad-enablement gates:
Further maintainability work: reuse a DuckDB session across table queries instead of recreating it for every sort/page/filter; review the inherited MapLibre foundation separately from derivative lifecycle/adapters. Process limits and controlled retrieval are valuable but do not constitute a strong sandbox for native parsers. Keep this PR draft and adapters gated pending the remaining acceptance work.
Client-facing API asset discovery (0c21368)
Resource detail, search-result, and homepage resource objects now expose a versioned
meta.assetscatalog independently ofmeta.ui. Published items include URLs, roles, format/media type, rendering recipes, layer identifiers, bounds, available sizes, and Parquet column types/row counts. The catalog includes labeled resource coverage and provenance; representative samples remain explicit. Generated thumbnail and coverage-map links are discoverable without exposing private tile registries or review images. Original downloads and curated thumbnail precedence remain unchanged; access/approval/feature gates still apply. WMS preparation now persists the selectedsource_layerexplicitly.Client documentation: preview asset API contract. Validation: 98 preview-suite tests passed, followed by all 12 client-contract tests including the additional WMS preparation regression; backend lint/format and diff checks passed.