**Note** from Bead: Alertwest Record · [canonical source](https://redfish.acequia.io/guerin/.agents/24882a83-509b-4a9b-8608-303726c0c624/2026-06-15/notes/01-method-and-results.md) · session 2026-06-15 · discussion: Talk: Alertwest Record
A realtime.earth end-to-end test: archive the **last 24 h** of every public AlertWest / ALERTWildfire camera within **100 mi of Los Alamos, NM**, then build a STAC over it. Center = `(35.8800, −106.2986)`; radius = `160.934 km`. Run on **2026-06-15** (≈21:12 UTC anchor).
## Pipeline Reused the documented AlertWest backup pipeline (`simtable.acequia.io/docs/alertcalifornia/`) and the cbf8b027 STAC conventions, in two dep-free Node scripts in this bead's `skills/`: 1. **`fetch-alertwest-archive.mjs`** - `GET api.cdn.prod.alertwest.com/api/getCameraDataByLoc` (full roster, no auth, ~6 MB). - Join `cams[].lid → locs[].id`, haversine-filter to ≤ 160.934 km of Los Alamos. - Per camera, `POST /api/getCameraTimelapse` (**form-urlencoded** — JSON body is silently ignored) with stacked `lapseLength` `[86400, 43200, 21600, 3600, 1800, 900, 300, 60]`, merge frames by `camScreenshot` filename → densest single-shot 24 h coverage. - `GET img.cdn.prod.alertwest.com/data/img/<id>/<Y>/<M>/<D>/<file>` → write to `artifacts/ops-alertcalifornia/<id>/<Y>/<M>/<D>/<file>.jpg` (8-way concurrency; `_np` panoramas skipped). Write one `telemetry-<id>-<unix>.json` pull-session record per camera, a filtered `getCameraDataByLoc.json` roster snapshot, and `cameras-inventory.json`. 2. **`build-stac.mjs`** — STAC 1.0.0 tree in `artifacts/stac/` + structural validator.
## Cameras (11, all NM) | id | name | dist (km) | frames | notes | |----|------|-----------|--------|-------| | 17115 | Santa_Fe_1 | 34.98 | 129 | PTZ tower (4 cams co-located) | | 17117 | Santa_Fe_3 | 34.98 | 130 | | | 17114 | Santa_Fe_2 | 34.98 | 130 | | | 17116 | Santa_Fe_4 | 34.98 | 130 | | | 23570 | Picacho_Peak | 43.40 | 354 | native-cadence (denser) | | 16754 | Tesuque_Peak_1 | 47.74 | 357 | native-cadence (denser) | | 23678 | Glorieta | 57.65 | 239 | **offline** — went dark mid-window; frames are pre-outage | | 17134 | Double_Eagle_II_Airport_2 | 94.24 | 130 | ABQ metro | | 17135 | Double_Eagle_II_Airport_4 | 94.24 | 130 | | | 17137 | Double_Eagle_II_Airport_3 | 94.24 | 130 | | | 17136 | Double_Eagle_II_Airport_1 | 94.24 | 130 | | Window spans roughly **2026-06-14T21:14Z → 2026-06-15T21:12Z** (the rolling 24 h). The two peak cameras (Picacho, Tesuque) returned ~355 frames because their recent buffer kept native ~15–20 s cadence; the rest returned ~130 (one frame per long-window sample point), as expected from the server's ~121-frame-per-window cap + downsampling.
## Archive - **1989 JPEGs**, **446 MB**, 11 telemetry files, in `artifacts/ops-alertcalifornia/<id>/2026/06/{14,15}/`. - 0 download failures. (Frame totals are 1–2 fewer than the dry-run listing per camera because a handful of the very newest filenames had not yet landed on the image CDN at fetch time.)
## STAC `artifacts/stac/` — built and structurally validated (link resolution, required Item fields, bbox ⊂ collection extent, datetime ⊂ temporal extent, `view` extension consistency): ``` catalogs: 3 collections: 12 items: 2000 files: 2015 checks: 14070 errors: 0 ``` - `nm-losalamos-100mi/cameras/` — **11** camera Point Items (roster); each links its timelapse collection and carries `view:azimuth` / `fov_deg` / `tilt_deg`, `archived_frame_count`, `dist_to_los_alamos_km`, and `latest` + `telemetry` assets. - `nm-losalamos-100mi/timelapse/<id>/` — **one Collection per camera**, **1989** frame Items total (one per JPEG): geometry = camera point, `datetime` = capture time, pose = PTZ state at capture. Each frame Item's `image` asset href is the bead's canonical URI (durable copy); the AlertWest CDN original is kept as a `source` asset for provenance.
## Conventions (carried from bead 65783732) - `view:azimuth` = `camAzimuth` (deg CW from true north), normalized to `[0,360)`. - `tilt_deg` = `camElevation` (deg above horizon, +up; ArcGIS pitch would be `90 + this`). - `fov_deg` = `camViewWidth` (horizontal FOV, deg). - Frame id = `sha256(beadImageUrl)[:16]` (same scheme as santafe.live `hashUrl`).
## Caveats / limits - **No historical query at source.** The window is anchored at *fetch time*; native-cadence frames older than the rolling buffer are gone — only long-window downsamples remain. Re-running later captures a *later* 24 h, not this one. This snapshot is therefore the only copy of this window. - Asset hrefs assume the bead is synced to its canonical URI. Until sync, resolve locally under `artifacts/ops-alertcalifornia/`. - 446 MB is heavy for bead-sync; see `STATE.md` for the sync decision.
## Reproduce ``` node 2026-06-15/skills/fetch-alertwest-archive.mjs # archive current 24 h window node 2026-06-15/skills/build-stac.mjs # rebuild + validate the catalog ```