Skip to content

fix: refresh Canadian FSA geocoding and normalize postal codes - #117

Closed
jkrenge wants to merge 1 commit into
masterfrom
codex/can-fsa-geocoding
Closed

jkrenge wants to merge 1 commit into
masterfrom
codex/can-fsa-geocoding

Conversation

@jkrenge

@jkrenge jkrenge commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Superseded by consolidated postal geocoding PR #124. This PR's head commit is retained in the combined branch. Combined CI passes on Node.js 24/26 and static checks.


Summary

Support approximate delivery-to-return location analysis for Canada with current, documented FSA data. Correct compact and lowercase full-code lookup.

CAN postal code → validate syntax and extract FSA → representative source point
other countries → existing normalization

Refresh from GeoNames CA.zip, retrieved 2026-11-04 (export timestamp 2026-11-04), under CC BY 4.0. Credit: GeoNames. Source has 1,657 rows; output has 1,650 unique FSAs across all 13 provinces and territories. This does not establish complete national coverage. Source observations have no known dataset date.

Deduplicate coordinate pairs before taking their arithmetic mean for repeated FSAs. These are representative source points, not postal-area centroids. Exclude the H0H North Pole point and two full-code anomalies. Full postal inputs still resolve at FSA precision. Preserve string coordinate pairs, exports, allowlists and other-country behavior. Details, primary-source checks, exclusions, archive hash and generation command are in docs/geocode-CAN.md.

Evidence

  • Before: actual baseline lookup returns undefined for K1A0A6 and k1a 0a6.
    After: both return ['-75.7023', '45.4207'].
  • All 100 offline tests pass, including input formats, urban/rural/northern cases, unknown codes, duplicate aggregation, uniqueness, syntax and finite coordinate ranges for every CAN entry.
  • npm run lint, npm run format:check, npm run validate:data pass. Data validation retains two existing AUT/BEL warnings. The CAN generator's assertions pass and regeneration is reproducible.

Merge Danger

Door: two-way

Blast Radius: CAN

FSA points can give large errors in rural and northern Canada. Two distant postal codes in one FSA produce zero distance. X0A's source point is not Iqaluit's location. No full-code positional accuracy is claimed. H0H and legacy L0V now return undefined; malformed full codes are rejected. No production use or exhaustive ground-truth check was performed.

Shared-file overlap with other country PRs: the small CAN-only branch in lib/geocode.js. No other-country data, generic refactor, new dependency, merge or deployment.

@jkrenge
jkrenge requested a review from a team as a code owner November 4, 2026 22:03
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 4, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-04T22:04:14.385293Z cc5b202 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@jkrenge jkrenge closed this Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant