Repository navigation
Add local GeoLite provider and checked-IP Geo inputs for Axum - #453
Draft
ChristianPavilonis wants to merge 3 commits into
Draft
ChristianPavilonis wants to merge 3 commits into
ChristianPavilonis wants to merge 3 commits into
Conversation
ChristianPavilonis
added a commit
that referenced
this pull request
Nov 4, 2026
Preserve RC startup, JSON limits, admitted-error finalization and dependency pins while integrating checked-reader GeoIP composition. Adapt SHA encoding and Rust 1.98.1 bounds; retain the documented metadata acceptance blocker.
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.
Summary
Stacked on #439. Base is
feature/pluggable-geo-providers, notmain.Changes
edgezero-core/src/geo.rsmaxmindID. Coordinated breaking pre-release API migration.edgezero-adapter-axum/src/geo*geo-maxmind, pinnedmaxminddb0.32.0, finite preparation bounds, upstream verification plus strict reachable-data structural traversal, geographic projection, immutable reader and supplied-IP composition.docs/superpowers/No downloader, remote IP lookup, provider fallback, hot reload, store binding, consent interpretation or permission-policy change is introduced. The running application needs no MaxMind credentials. Defaults are 128 MiB of input and 32 million validation network visits, not an I/O deadline or RSS quota. Preparation remains synchronous before runtime signal registration and embedding-stop polling, as specified.
Closes
Tracks #438. Intentionally does not claim closure while the acceptance blockers below remain.
Test plan
Tested Rust/runtime implementation commit:
9dd7b83b, Rust/Cargo 1.95.0 on Linux. Follow-up commits update the plan and fix comma-free CI cache IDs, without changing runtime inputs. Full commands, feature sets, timings and local evidence references are in the plan.The first combined-feature GitHub job failed before compilation because Actions cache keys reject commas. Commit
633f0552replaces raw feature strings with safe matrix cache IDs. An old-versus-new regression check, actionlint and scoped Prettier pass locally; GitHub checks for the follow-up remain pending.cargo test --locked --workspace --all-targets: 2,121 passed, 6 existing ignored.--all-targets --all-features: 447 passed, 1 known failing metadata acceptance regression explicitly ignored.axum, CloudFront-only, MaxMind-only and combined lanes: full library tests, real Geo hosting, seven doc tests per lane, all-target Clippy. Reader lanes retain the same known ignored regression.cargo clippy --locked --workspace --all-targets --all-features -- -D warnings.cargo fmt --all -- --check, whitespace, fixture reproduction and actionlint. Actionlint ran without ShellCheck.examples/app-demo: 54 tests passed. Both excluded-workspace lockfiles remain unchanged and pass offline/locked checks.One earlier MaxMind-only hosting run hit the existing ephemeral reservation-to-child-bind race. The identical suite passed on rerun, then all four isolated lanes and final native integration passed. No production retry or arbitrary port policy was added.
Acceptance blockers and limitations
Reader::verify()accepts nested non-string keys and pointer chains in unknown metadata; its public API exposes no raw metadata decoder. Our strict structural pass closes the reachable-data-record cases, not metadata.geo_maxmind_rejects_unused_metadata_nonstring_keys -- --ignoredfails as expected. Fix the reader boundary and add real-runner rejection before removing the ignore, or obtain explicit approval to change the contract. This is not consent-policy acceptance.UnavailableMaxMindduring pure capability validation. Equivalent safe acquisition elsewhere is not implemented; the narrower scope requires acceptance or implementation work.Checklist