← gpu-pilot · json · source: CONTINUE_7_7_2026.md

▶ CONTINUE 7/7 (Regional coverage fixes: DC/StL multi-state OSM · SoCal + Mid-Atlantic mega-regions · multi-select transit-system dropdown · OSRM water-cell filter — newest handoff)

Newest handoff: fixed the two map defects the user spotted (DC/Arlington/Fairfax had no hexes; Edison→Philly cut off) and generalized the fix. Multi-state OSM merge (osmium merge) repaired DC (District-only→DC+MD+VA: walk nodes 312K→3.47M, coverage 4.7%→54.2%) + St. Louis (MO→MO+IL). Built 2 corridor MEGA-REGIONS (socal LA↔San Diego, midatlantic Philly↔Baltimore↔DC) with a priority region-picker + 7 bbox WIDENINGS to rail termini + Québec City — engine registry 51→54, all long-distance regional rail now reaches. Shipped a searchable MULTI-SELECT transit-system dropdown on the /map. Fixed drive/P&R hexes painted on open WATER via an OSRM snap-distance filter. 3 commits pushed (0edfe7a, b4f6c8a, b927240). · updated 2026-07-07 22:26

TL;DR

  • MULTI-STATE OSM MERGE (DC + St. Louis): scripts/regional_network_build.py _geofabrik_url_for returns a LIST of Geofabrik extracts; _ensure_regional_pbf clips each to bbox then `osmium merge`. dc→[DC,MD,VA], st_louis→[MO,IL], midatlantic→[PA,NJ,DE,MD,DC,VA]. DC walk graph 312K→3.47M nodes, covered_cells 1,775→20,399 (4.7%→54.2%); Arlington/Fairfax went from NO isochrone to ~20K-cell reach into DC. VALIDATED live.
  • CORRIDOR MEGA-REGIONS + WIDENINGS: added socal (LA+Inland Empire+Orange+San Diego, 297K cells, 60 feeds) and midatlantic (Philly+Baltimore+DC, 427K cells, 50 feeds, 12.9M walk nodes) each with priority=1 in the manifest; engine _resolve_region tiebreak = higher-priority-then-smallest-area so a mega wins over the metros it fully contains (midatlantic ceiling 40.22 < NYC floor 40.40 → no overlap with pinned NYC). Widened 7 metro bboxes to their rail termini (sfbay→San Jose/Antioch, seattle→Tacoma/Everett, toronto→GO, orlando→SunRail, miami→S.Florida, minneapolis→Northstar, chicago→Metra/South Shore). Added quebec_city (was uncovered). Overnight batch built 10 regions clean (~3.5h). Registry 51→54. VALIDATED: LA→San Diego, SF→San Jose, Seattle→Tacoma, Toronto→Hamilton, Orlando SunRail, Miami→WPB, Philly→Baltimore→DC all reach. Commit 0edfe7a.
  • MULTI-SELECT TRANSIT-SYSTEM DROPDOWN: geo2 front-end (pm2 tlccommute) — transitManifest.js allSystems()/selectFeedsBySystems()/feedModesForFamilies(); Map.js systemFilter state + onToggleSystem/onClearSystems (fit-to-selection, zoom-gate bypassed for explicit picks); TransitLines.js SystemPicker (search box + checkbox list, removable chips, unicode glyphs, no new deps). next build compiled clean, LIVE on multimodal.certihomes.com. gpu-pilot mirror in multimodal/fe-patches/, commit b4f6c8a.
  • OSRM WATER-CELL FILTER: the res-9 grid is a raw bbox polyfill incl bay/ocean cells; OSRM /table snaps a mid-water cell to the nearest shoreline road (km away) and returns a bogus drive time → drive/P&R painted hexes on the water. FIX = modes._osrm_table_chunk reads OSRM per-waypoint snap distance (destinations[k].distance) and drops cells snapping >OSRM_SNAP_MAX_M (1000 m). SF P&R water cells 115→0; Philly/Chicago/Miami drive n_cells UNCHANGED (no rural land dropped). LESSON: walk-node distance is the WRONG signal (drops car-only rural land — 45% over-drop in philly; tried the grid mask + REVERTED). Commit b927240.
  • TOP PENDING: (1) res-10 _refine_to_res10 (user-deferred to last; NYC-core only, pinned byte-identity → validate on :8099). (2) Losing Ground/SEO — SEO already covers 50 metros; only genuinely-new city = Québec City (add to content/build_metros_seo.py + regen via /usr/bin/python3 + deploy commutingcost-web geo3); the coverage story is a Losing Ground NARRATIVE refresh. (3) Edison→Philly — pinned-NYC NJ strip, needs a decision (extend tri-state grid south vs NJ-NEC corridor region). (4) Chicago→Gary needs NICTD South Shore feed; uber ~14 SF water cells (uber path); disk cache cleared → re-run precompute_national.py to re-warm GPU-free serving.
  • GOTCHAS: OSRM snap distance = correct drive-water signal (walk-node distance WRONG). --force skips existing stages → rm -rf output/networks/ + rm osm/_clip.osm.pbf. Engine NO --reload → explicit `sudo systemctl restart hexmap-api` (~/secert.txt), then bust cache/iso_*. Mega priority in manifest → _resolve_region sorts (-priority, area). geo2 rebooted 2026-07-07 mid-day + self-recovered (pm2 resurrect + OSRM docker restart=unless-stopped). gpu-pilot main=b927240.

CONTINUE — 2026-07-07 — Regional coverage fixes: DC/StL multi-state OSM, seam mega-regions, transit-system dropdown, OSRM water filter

Read first: memory regional-seam-coverage-fixes, national-multimodal-engine, res10-dense-core-refine. Prior handoff: CONTINUE_7_6_2026.md. Plan doc: raptor-design/SEAM_FIX_BUILD_PLAN.md, raptor-design/RESOLUTION_CONTRACT.md. Repos: gpu-pilot main = b927240 (pushed via geo bundle). Front-end (multimodal map) = geo2 /DataDrive/krish/krish/front-end (pm2 tlccommute, SEPARATE repo — deployed, mirror in multimodal/fe-patches/). Engine: geocoder :8098 (systemd hexmap-api, uvicorn NO --reload → explicit restart), registry 54.

DONE this session (large)

  • Diagnosed + fixed the two screenshot defects. DC/Arlington/Fairfax had no hexes (OSM extract clipped at the state line); Edison→Philly cut off (region-bbox seam). Ran a workflow audit (all 50 regions) + a live city-pair harness.
  • Multi-state OSM merge (_geofabrik_url_for returns a list; _ensure_regional_pbfosmium merge). Fixed DC (District-only → DC+MD+VA: walk nodes 312K→3.47M, covered 1,775→20,399; Arlington/Fairfax now reach DC) and St. Louis (MO→MO+IL; East St. Louis). VALIDATED live.
  • Seam megas + 7 bbox widenings (user chose "widen + mega-regions"). Overnight batch built 10 regions clean. socal (LA+IE+OC+SD, 297K, priority=1) + midatlantic (Philly+Balt+DC, 427K, priority=1) + quebec_city (new) + widened sfbay/seattle/toronto/orlando/miami/minneapolis/chicago. Engine _resolve_region tiebreak now = higher priority, then smallest area (mega wins over the metros it contains). VALIDATED: LA→San Diego, SF→San Jose/Antioch, Seattle→Tacoma/Everett, Toronto→Hamilton, Orlando SunRail, Miami→WPB, Philly→Baltimore→DC, Québec City all reach.
  • Multi-select "Systems" dropdown on the /map transit overlay (searchable, multi-select, removable chips, fit-to-selection). transitManifest.js (allSystems/selectFeedsBySystems/feedModesForFamilies), Map.js (systemFilter state + handlers), TransitLines.js (SystemPicker). Built clean, LIVE on multimodal.certihomes.com. gpu-pilot mirror committed.
  • OSRM water-cell filter — drive/uber/P&R/K&R no longer paint hexes on open water. modes._osrm_table_chunk drops cells whose OSRM snap distance >OSRM_SNAP_MAX_M (1000 m). SF P&R water 115→0; rural drive reach unchanged.
  • RESOLUTION_CONTRACT.md — encoded the user's res-9/10/8 ingress-egress scheme (design; not yet implemented).
  • Commits: 0edfe7a (megas/widenings/merge), b4f6c8a (FE dropdown mirror), b927240 (water filter). All pushed.

PENDING (precise)

  1. res-10 ingress/egress refine (#65, user-deferred to last). Implement _refine_to_res10 in engine.py per RESOLUTION_CONTRACT.md — mirror the egress assembly at res-10 for cells inside a Manhattan core polygon, using output/walk_matrix_res10_core_v2.parquet (4,037 NYC-core cells). NYC-first; deep change touching the pinned byte-identical NYC path → validate on scratch :8099, cache-key the refine flag, then :8098. National res-10 needs per-metro core matrices (follow-up).
  2. Losing Ground / SEO new cities (#69). SEO set already has 50 metros incl the newly-reachable ones (san-diego, virginia-beach, san-jose, riverside, sacramento). Only genuinely-new city = Québec City → add to content/build_metros_seo.py METROS (CA pattern like montreal) + regen via /usr/bin/python3 (psycopg2 not in venv) + deploy commutingcost-web on geo3. The seam/coverage "new data" is a Losing Ground NARRATIVE refresh (reports/LOSING-GROUND-2026.md + losing-ground-2026-data.json + PDF; losingground-cities app on geo :3037).
  3. Edison→Philly residual (#70). NJ origins lat 40.40–40.55 sit inside the pinned byte-identical NYC region; full Boston→DC single region = 2.48M cells (infeasible). midatlantic fixes Trenton-and-south→Philly; only the NYC-region NJ strip remains → needs a decision: extend the tri-state grid south (breaks NYC byte-identity) OR a dedicated NJ-NEC corridor region + picker rule.
  4. Other residuals (#70): Chicago→Gary (NICTD South Shore feed missing from golden/chicago), Chicago→Kenosha (UP-N far terminus), Portland→Vancouver-WA (cross-river C-TRAN feed linkage).
  5. uber water residual + cache re-warm: uber still paints ~14 SF water cells (uber path bypasses the table snap filter — check _mode_uber). The whole disk cache/iso_* (88K) was cleared to re-validate the water fix → clicks recompute on GPU until re-warmed; re-run hexmap-api/precompute_national.py to restore GPU-free serving (now clean of water).

DECISIONS (user chose + why)

  • Widen + build 2 mega-regions (SoCal + Mid-Atlantic), seam-fixes-first (over frontend/SEO) — comprehensive long-distance reach.
  • Dropdown + Losing Ground/SEO before res-10 — res-10 is the deepest/riskiest (pinned-NYC) + NYC-only; visible items first.
  • Map surfaces are TEST not a live demo → sudo restarts OK (~/secert.txt).

GOTCHAS (don't relearn)

  • OSRM snap distance is the correct water/drive-reachability signal — walk-node-distance is WRONG (drops car-only rural land far from the pedestrian graph; a 45% over-drop in philly — tried the grid mask + REVERTED). See regional-seam-coverage-fixes memory.
  • --force does NOT rebuild a stage whose output existsrm -rf output/networks/<slug> + rm osm/<slug>_clip.osm.pbf (bbox grew → re-extract).
  • Engine has NO --reload — editing hexmap-api/*.py needs explicit sudo systemctl restart hexmap-api; then bust cache/iso_* for tested cells (stale HIT returns old data).
  • Mega-regions win via priority in the manifest → _resolve_region sorts (-priority, area). midatlantic ceiling 40.22 < NYC floor 40.40 → no overlap with pinned NYC.
  • The overnight seam batch ran ~3.5 h (not 8-12); geo2 rebooted mid-day 2026-07-07 and self-recovered (pm2 resurrect + OSRM docker restart=unless-stopped).

Comments