diff --git a/jupyter/README.md b/jupyter/README.md index 08e3bdd8..5261b894 100644 --- a/jupyter/README.md +++ b/jupyter/README.md @@ -44,7 +44,8 @@ e.g. on a hub: `https://hub.example.org/user//gridlook/`. | `/gridlook/` | the static gridlook SPA | | `/gridlook/api/health` | tiny JSON probe (`{"extension": "gridlook-jupyter", ...}`) | | `/gridlook/s3//` | streaming S3 proxy — GET/HEAD only, `Range` pass-through (206), no LIST | -| `/gridlook/hive/…` | **reserved** for the phase-6 moczarr virtual-store endpoint (an `open_hive()` AOI served as one flat zarr store) — not implemented here | +| `/gridlook/hive/open` | open (or LRU-refresh) a **morton-hive virtual-store view** via moczarr — see below | +| `/gridlook/hive//` | serve one zarr object (metadata / whole chunk) of an open view | ## Configuration @@ -58,6 +59,12 @@ Via traitlets (`jupyter_server_config.py`, or `--GridlookProxy.…` on the comma c.GridlookProxy.allowed_buckets = ["my-zagg-outputs"] c.GridlookProxy.region = "us-west-2" # optional; ambient AWS config otherwise c.GridlookProxy.static_dir = "/path/to/dist" # optional; dev override for the SPA files + +# /gridlook/hive/ knobs (phase 6d; defaults shown) +c.GridlookProxy.hive_max_views = 8 # LRU bound on materialized views +c.GridlookProxy.hive_max_cells = 500_000 # per-view cell bound; 413 beyond +c.GridlookProxy.hive_max_concurrent_builds = 2 # concurrent materializations; over-limit opens queue +c.GridlookProxy.local_hive_store_roots = [] # allowed roots for local-path stores (dev only) ``` Or environment variables (used only when the trait is not configured): @@ -72,6 +79,58 @@ the standard hub setup. The proxy streams responses chunk-by-chunk and never buf objects; there are no presigned URLs, so nothing credential-shaped is ever exposed to the browser. +## Morton-hive virtual store (`/gridlook/hive/`) + +Phase 6d of the viewer plan: a zagg **morton-hive** store is many leaf zarrs, but gridlook +expects one zarr source — and post-englacial/zagg#314 stores are **morton-only**, so gridlook's +existing HEALPix path (which consumes NESTED `cell_ids`) cannot read a leaf directly. The hive +endpoint closes both gaps hub-side with [moczarr](https://github.com/espg/moczarr): +`open_hive()` selects a product/AOI/window, **fabricates the exact NESTED `cell_ids` +coordinate**, and the extension serves the result as **one flat zarr v3 store** the browser's +unmodified zarrita reads. + +``` +GET /gridlook/hive/open?store=[&product=][&aoi=][&window=