# 09-Jun-2026 — stop hot paths pulling large uncached payloads [#201](https://github.com/nbarrett/ngx-ramblers/issues/201)

## [build 676](https://github.com/nbarrett/ngx-ramblers/actions/runs/27219444046) — [commit f52b56e](https://github.com/nbarrett/ngx-ramblers/commit/f52b56e28340fe41bf809fc1be4fabe04b13d059)

_____

Two independent slow reads were dragging full, oversized documents over
throttled clusters on every request.

S3 backup listing (/api/mongo-backup/s3/backups):
- manifestByTimestamp reloaded the entire environments config doc and read
the full ~806KB manifest document for every one of 346 backups, just to get
each manifest's status field (~272MB transferred to render a dropdown).
- Add completedManifestStatusByTimestamp: one find per site, projected to
{timestamp,status} only, run per-environment in parallel and reusing the
already-loaded backup config.
- Result: multi-minute hang to ~0.4s for 659 backups.

System config (config?key=system, system-status):
- value.area.groups[].customGeometry (ONS boundary polygons) is 469KB of the
483KB system doc and was read uncached on every page, though only the admin
Area Map editor uses it.
- handleQuery now projects customGeometry out of the system read; system-status
uses a new systemConfigWithoutGeometry(). Internal consumers (geojson areas)
keep the full doc via systemConfig().
- createOrUpdate preserves customGeometry on system saves (matched by groupCode,
reorder-safe) so settings saves cannot wipe boundaries; geometry is only
changed via the api/areas/* endpoints.
- Area Map editor loads groups from api/areas/groups (geometry intact) instead
of the now-stripped config payload.
- Result: system read 483KB/4.3s to 14KB/0.24s; fast on any cluster.