Add reproducible Planetary Computer benchmark fixtures and CI/manual benchmark reporting for load-path comparison#445
Merged
bitner merged 4 commits intoMay 21, 2026
Conversation
Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com>
Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Add reproducible benchmark fixtures and CI benchmark reporting
Add reproducible Planetary Computer benchmark fixtures and CI/manual benchmark reporting for load-path comparison
May 20, 2026
bitner
added a commit
that referenced
this pull request
May 27, 2026
…benchmark reporting for load-path comparison (#445) * Initial plan * Add benchmark fixture manifests, runners, and CI workflows Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com> * Address benchmark review feedback and tighten workflow permissions Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com> * Polish benchmark scripts after validation feedback Agent-Logs-Url: https://github.com/stac-utils/pgstac/sessions/08cf3ee2-6a60-42ab-b23b-fac084012a4c Co-authored-by: bitner <164828+bitner@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: bitner <164828+bitner@users.noreply.github.com>
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.
This PR adds reproducible benchmark fixtures for
naip,sentinel-2-l2a, andlandsat-c2-l2(1000 items each), and wires benchmark execution/reporting so split-column+fragment behavior can be compared over time and againstmain. It introduces deterministic fixture materialization, machine-readable benchmark outputs, and dedicated CI/manual workflows for artifacted reporting.Fixture source of truth (deterministic, reproducible)
benchmarks/fixtures/planetary-computer/manifest.jsondefining:1000)benchmarks/fixtures/planetary-computer/with generated data intentionally excluded from git.Fixture materialization + validation
scripts/benchmark_fetch_pc_fixtures.pyto:Benchmark execution + machine-readable outputs
scripts/benchmark_run.pyto run per-collection:Base-vs-head comparison reporting
scripts/benchmark_compare_results.pyto diff two benchmark JSON reports and emit:CI/manual workflows for artifacted benchmarks
.github/workflows/benchmark-fixtures.yml:.github/workflows/benchmark-compare.yml:Docs/instructions updates
CLAUDE.md,AGENTS.md, and.github/instructions/scripts.instructions.mdwith the new benchmark entrypoints and workflow intent.CHANGELOG.mdto record benchmark fixture/reporting additions.uv run --no-project --with psycopg[binary] python scripts/benchmark_fetch_pc_fixtures.py \ --manifest benchmarks/fixtures/planetary-computer/manifest.json \ --output-dir /tmp/pgstac-benchmark-fixtures uv run --no-project --with psycopg[binary] python scripts/benchmark_run.py \ --fixtures-dir /tmp/pgstac-benchmark-fixtures \ --repo-root "$PWD" \ --label head \ --output-dir /tmp/pgstac-benchmark-resultsWarning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
apt.postgresql.org/usr/lib/apt/methods/http /usr/lib/apt/methods/http(dns block)astral.sh/usr/bin/curl curl -LsSf REDACTED git conf�� amd64.deb 4.2.0-19_amd64.deb ker/cli-plugins/docker-compose credential.usern/usr/bin/python3.13(dns block)planetarycomputer.microsoft.com/usr/bin/python python -(dns block)/home/REDACTED/work/_temp/ghcca-node/node/bin/node /home/REDACTED/work/_temp/ghcca-node/node/bin/node --enable-source-maps /home/REDACTED/work/_temp/copilot-developer-action-main/dist/index.js(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
Add reproducible benchmark fixtures and CI/manual benchmark reporting for the split-column + fragment work in PR #444.
Repository: stac-utils/pgstac
Branch to target: v010-pr1-load-path-core
Goals:
Important constraints and expectations:
Suggested deliverables:
Please create a PR implementing this in stac-utils/pgstac based on branch v010-pr1-load-path-core.
The following is the prior conversation context from the user's chat exploration (may be truncated):
User: so an intense review of the fragment approach we are using with a particular eye towards making sure we are squeezing every bit of performance we can. find some sample landsat, sentinel, and naip collections and items from the Microsoft planetary computer stac api so that we can benchmark the hydration and dehydration speeds for the old collection base item approach that is in main vs the instantiated column and fragment approach we are looking at now. give me a report on both the shows differences as well as the size in disk differences for both approaches
Assistant: I reviewed PR #444 and the current
main-branch design it is replacing.Short version
You’re asking for a real benchmark report, not just a code review, and
User: try again
Assistant: I dug into PR #444 again from the URL you sent.
What changed in PR #444
The old
mainapproach stores a collection-levelbase_itemgenerated from collection metadata, then dehydrates each item by stripping anything already covered by that base item. Historically thatbase_itemcontains at leasttype,stac_version,assetsfromitem_assets, andcollection. You can see that in the existing migration history and schema lineage. Thecollectionstable on the old path includes a storedbase_itemgenerated column. On hydrate, item JSON is rebuilt by merging the per-item stored JSON with that collection base JSON. This is the “collection base item” approach you referred to.PR #444 removes that model and replaces it with:
bbox,links,assets,properties, andextraplatform,mission,eo_cloud_cover,proj_epsg, etc.item_fragmentstable for deduplicated shared JSON chunksfragment_configinstead ofbase_itemjsonb_merge_level1for assets/properties reassemblyThis pull request was created from Copilot chat.