← gpu-pilot · json · source: CONTINUE_6_14_2026.md
▶ CONTINUE 6/14 (MultiModal — newest handoff)
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)
- Drive isochrone bug FIXED — non-transit modes sweep
modes.nontransit_cells(distance-bounded full res-9 grid, ~60 km), not the 16,621cov_idxwalkshed. Piscataway drive 8,760 fragmented → 107,154 contiguous cells. transit/pnr/knr keepcov_idx. (hexmap-api/modes.py,engine.py) distances_mper hex for drive-family modes (only underobjective:cost).- 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 DBparking_rates; K&R +$2; fuel removed from baked cost. - 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) computesfuel = miles/MPG × gasclient-side (no re-click). Live: drive $63.20 = $60 fixed + $3.20 fuel @25 mpg, gas $4.368/gal. - 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.
- Hover crash FIXED (
Map.js): gatedinteractiveLayerIdshisochrone-fillonhexmappresent — react-map-gl@6 × maplibre@3queryRenderedFeaturesTHROWS on a missing layer (was breaking hover-picking + the cost/fuel tooltip). - Legacy no-modespath byte-identical. wrap-session skill now on all 12 fleet hosts.
PENDING — next session
- 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. - FE/adapter repo homes (decision needed): geo2 FE remote is a third-party
Bitbucket (
ryanhartman99/front-end, branchroutes); 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. - Cold-drive latency: first click per NEW dest ≈ 22 s (then cached). Optional:
tighten
DRIVE_BAND_MIN(45) or pre-warm popular dests. - 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.
- 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:
queryRenderedFeaturesTHROWS on a missing layer; keepinteractiveLayerIdsgated 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; nevergit add -Athere. distances_monly emitted underobjective: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/.