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

▶ CONTINUE 6/14 (MultiModal — newest handoff)

Newest handoff: MultiModal NYC map done; the drive-isochrone fix, 9-icon revert, cost model, and fuel-on-frontend pending. · updated 2026-06-14 22:05

TL;DR

  • MultiModal app LIVE at multimodal.certihomes.com on OUR 9-mode GPU hex engine — multi-select modes, agency line+stop overlays in canonical colors, station hover w/ cross-feed transfers, geolocation→P&R. 3 repos pushed (gpu-pilot, multimodal-adapter, multimodal-frontend).
  • TOP PENDING: the DRIVE isochrone renders scattered (masked to ~16,621 transit-walkshed cells) — non-transit modes need the FULL res-9 grid (distance-bounded). Fix in hexmap-api/modes.py + engine.py.
  • Decisions: multi-select=YES; fuel cost computed on FRONTEND from miles×MPG×daily-gas (don't bake fuel into precompute); mode UI = 9 SEPARATE icons (Citibike its own), REMOVE the Rented toggle.
  • Cost model TODO: dest parking for Drive, station parking for P&R, $2 K&R drop-off. National: group network toggles by mode-type + agencies-in-viewport.

CONTINUE — 2026-06-14 — MultiModal NYC: drive fix + cost model + fuel-on-FE SHIPPED

Host: geocoder (RTX 5080, 172.26.1.95) · GPU engine hexmap-api :8098 Live: https://multimodal.certihomes.com (geo2 172.26.1.151; FE pm2 tlccommute :3000, adapter pm2 multimodal-adapter :5055) Repos: tlcengine/gpu-pilot @ fa670ce (pushed) — backend + adapter mirror + multimodal/fe-patches/{Map,TransitMethodsBar}.js mirror. geo2 FE 1d8fa3f + adapter 348e7ab committed LOCAL only (see GOTCHAS). Read first: memory multimodal-fuel-drive-shipped.md, hexmap-api-interactive.md.

DONE this session (all live + Playwright-verified, 0 console errors)

  1. Drive isochrone bug FIXED — non-transit modes sweep modes.nontransit_cells (distance-bounded full res-9 grid, ~60 km), not the 16,621 cov_idx walkshed. Piscataway drive 8,760 fragmented → 107,154 contiguous cells. transit/pnr/knr keep cov_idx. (hexmap-api/modes.py, engine.py)
  2. distances_m per hex for drive-family modes (only under objective:cost).
  3. Cost model (raptor-design/fares.py): dest parking CBD-based ($60 Manhattan CBD / $0 else — Times Sq $60, JFK/Piscataway $0 verified); P&R station parking from commute DB parking_rates; K&R +$2; fuel removed from baked cost.
  4. Fuel-on-FE: adapter forwards distances_m + serves daily NY gas (energy_prices, 172.26.1.152:5433, cached, fallback $4.37); FE MPG input (default 25) computes fuel = miles/MPG × gas client-side (no re-click). Live: drive $63.20 = $60 fixed + $3.20 fuel @25 mpg, gas $4.368/gal.
  5. Mode bar: 9 separate icons (Citibike its own), Rented toggle removed, multi-select kept; caption → P&R = Park and Ride · K&R = Kiss and Ride legend.
  6. Hover crash FIXED (Map.js): gated interactiveLayerIds hisochrone-fill on hexmap present — react-map-gl@6 × maplibre@3 queryRenderedFeatures THROWS on a missing layer (was breaking hover-picking + the cost/fuel tooltip). - Legacy no-modes path byte-identical. wrap-session skill now on all 12 fleet hosts.

PENDING — next session

  1. National network toggles (#6, Phase 2): group by mode-type (Subway/Commuter Rail/Light Rail/Bus/Ferry) + agencies-in-viewport, not hardcoded NYC chips. See multimodal/RECON.md.
  2. FE/adapter repo homes (decision needed): geo2 FE remote is a third-party Bitbucket (ryanhartman99/front-end, branch routes); adapter has NO remote. Decide whether to stand up real tlcengine remotes or keep mirroring into gpu-pilot (current durable path). DO NOT push to the bitbucket remote.
  3. Cold-drive latency: first click per NEW dest ≈ 22 s (then cached). Optional: tighten DRIVE_BAND_MIN (45) or pre-warm popular dests.
  4. Bare-hex fuel tooltip is verified by mechanism + data but I couldn't auto- screenshot one (NYC-metro stations win hover priority). Mode-type toggles (#1) would let you hide stations to grab a clean shot.
  5. Staging: NYC → Northeast (SEPTA/Amtrak/CT/MARC) → National.

DECISIONS (Krishna)

  • Drive band kept at 45 min / accepted ~22 s cold (real number; ~10 s was OSRM-only).
  • Gas default = NY state from energy_prices; fuel computed on FE, not baked.
  • 9 separate icons, no Rented toggle, multi-select kept.
  • Pre-production → restarts authorized without per-restart approval.

KEY GOTCHAS (don't relearn — full detail in memory multimodal-fuel-drive-shipped)

  • react-map-gl@6 × maplibre@3: queryRenderedFeatures THROWS on a missing layer; keep interactiveLayerIds gated on the layer actually existing.
  • geo2 FE repo = third-party Bitbucket (branch routes, extra uncommitted next.config.js/package.json/yarn.lock); adapter repo = no remote. Mirror to gpu-pilot; commit geo2 locally; never git add -A there.
  • distances_m only emitted under objective:cost — adapter switches pure drive-family ttyp to objective:cost.
  • commute DB = 172.26.1.152:5433 (trust-auth, internal only). gtfs3 DNS → public, refused.
  • sudo password file is /home/krish/secert.txt (typo'd), NOT secret.txt.
  • geo2 = IP 172.26.1.151 (hostname doesn't resolve from geocoder).
  • Playwright = /home/krish/gpu-pilot/hta/pwenv/bin/python; shots → multimodal/shots/.

Comments