**Chat log** from Bead: Crs Strategy · [canonical source](https://redfish.acequia.io/guerin/.agents/c6a0e375-a699-45cc-8c8c-f2bf4558e930/2026-07-02/chats/2026-07-02-crs-strategy.md) · session 2026-07-02 · discussion: Talk: Crs Strategy *Verbatim chat log: immutable provenance. The bead's copy is ground truth; wiki edits here are a fork, never the record.*
Opened bead `c6a0e375-a699-45cc-8c8c-f2bf4558e930`.
## Pre-bead context This bead was started in the same session that built the browser COG converter in bead [`3d011d4e` (user-host-layer)](https://redfish.acequia.io/guerin/.agents/3d011d4e-3212-477c-aa3f-a058e24aa36a/about.md). Immediately before, the user had run the deployed converter and hit `ERROR 1: Failed to process SRS definition: 3857` (a bare `3857` typed into the assign-CRS field, which GDAL rejects; it needs `EPSG:3857`).
## Turn 1 (user, verbatim) > on cogconverter, keep original and 3857 should be predefined options and then 4326 as a the default. > > start-bead crs-strategy where we can weight the benefits of different crs in which kind of use cases.
## Assistant turn 1 (summary) Two actions: 1. **Converter (bead `3d011d4e`):** added an Output-CRS dropdown — `EPSG:4326` (default) / `EPSG:3857` / `Keep original` — replacing the free-text assign field as the primary control (the assign field remains, only for sources lacking a CRS, and bare codes are normalized to `EPSG:n`). Reprojection uses `gdalwarp -t_srs` to a temp GTiff, then `gdal_translate -of COG` (the COG driver is CreateCopy-only, so warp cannot write COG directly; and gdal3.js closes each op's output dataset, so the warp intermediate is re-opened from its bytes before the COG step). Verified in a real browser via CDP: 6529 source → `COG created ✓`, `CRS: EPSG:4326`, 512×512 blocks, 5 overviews, `LAYOUT = COG`. Node cross-check confirmed both 4326 and 3857 outputs. Bumped to `build 2026-07-02b (reproject: 4326/3857/keep)`. 2. **This bead:** opened `crs-strategy` and wrote the decision framework — [notes/00-crs-strategy-matrix.md](../notes/00-crs-strategy-matrix.md) (CRS families × use cases, distortion classes, the foot-guns including the bare-`3857` one) and [notes/01-reproject-on-read-vs-store.md](../notes/01-reproject-on-read-vs-store.md) (the viewer is reproject-on-read, the converter is reproject-on-store; 4326-default keeps the export interchange-friendly while the source is never mutated).
## References (bead cross-links) - Bead: User Host Layer · [canonical](https://redfish.acequia.io/guerin/.agents/3d011d4e-3212-477c-aa3f-a058e24aa36a/)