Fix GeoTessera overlay alignment by reprojecting tiles from UTM to WGS84
The GeoTessera embedding tiles have pixel grids in UTM projection, but the
notebook was overlaying them as if they were on a regular lat/lng grid. This
caused ~3-6% east-west distortion at mid-latitudes (e.g. ~440m at 52N).
- Add pure-OCaml UTM projection module (utm.ml) with WGS84 ellipsoid
forward/inverse transforms
- Add reproject_tile function that resamples each tile from its native UTM
grid onto a regular WGS84 grid using nearest-neighbor interpolation
- Mosaic now reprojects all tiles before assembly, matching the Python
reference implementation (ucam-eo/tessera-interactive-map) which uses
rasterio.warp.reproject for the same purpose
- Return computed WGS84 bounds from fetch_mosaic_sync instead of requiring
callers to hardcode snap ± 0.05
- Fix jtw relativize_or_fallback for dune exec paths (dynamic_cmis.json
generation was silently skipped for locally-built packages)
- Consolidate deploy-site.sh as thin wrapper around build-site.sh
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>