Bead: Egp Missions

**Bead** `35e928bc-200c-4eb7-8248-e7bca9b07859` · [canonical URI](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/) · discussion: Talk: Egp Missions This page is the wiki facet of a [bead](https://redfish.acequia.io/guerin/.agents/); the bead is the source of truth.

## Identity - **URI:** `https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/` - **Local origin:** `c:/Users/steph/Documents/sites/redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/` - **GUID:** `35e928bc-200c-4eb7-8248-e7bca9b07859` - **Slug:** `egp-missions` - **Opened:** 2026-06-21 - **Artifact birth (provenance):** the mission-browser bookmarklet + `mission-browser-app.js` were created **2026-06-09** (first app write `2026-06-09T02:27:43Z`) in Claude Code session **`1beb95e0-f44f-475b-81cd-dc7ce78d8b8f`** — the same session that wrote `mission-browser-README.md` and `b3461c66`'s `mission-browser-as-catalog.md`. (An earlier session `13aa2b80` on 2026-06-08 only *referenced* it in catalog-format design notes.) Creator transcript (off-namespace, machine-local): `C:\Users\steph\.claude\projects\c--Users-steph-Documents-sites\1beb95e0-f44f-475b-81cd-dc7ce78d8b8f.jsonl`. This bead (opened 12 days later) gives that pre-existing artifact its first bead home. - **Currently animated by:** CV (Claude Code, shell + filesystem) - **Invoked by:** Stephen (`/start-bead egp-missions`)

## Motivation (why a GUID) The **EGP mission-browser bookmarklet** — a tool that injects a panel into the federal EGP portal (`egp.wildfire.gov`), reads the authoritative airborne-wildfire feed using your existing EGP session, and downloads mission products (FMV+KLV, IR/HS imagery, perimeter KMLs) into an incident folder — has been **shipping for a while with no bead provenance**. Its code lives standalone at `simtable.acequia.io/apps/mission-browser/` with versioned backups but no lineage; sibling bead [`b3461c66`](https://redfish.acequia.io/guerin/.agents/b3461c66-1a49-4f62-8920-d6dcc9838942/) only documents its *output* as a catalog source. This bead gives the bookmarklet+app a home: provenance, an orientation record of what it does and how, and a place in the forager ecology as the **EGP source-forager**. It is the EGP / airborne-FMV arm of the [`5b518c35` wildfire-forager](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/) pipeline: where `wildcad` subscribes the *dispatch* signal, this bead forages the *authoritative airborne product* for an incident.

## Mechanism (what this bead does) - **Documents** the bookmarklet loader + `mission-browser-app.js`: the EGP API it calls (`egpapi.wildfire.gov` `/v1/sa/missionscombined/{id}`, returns one entry per aircraft, merged), the two save destinations (local folder via **File System Access API**, or **WebDAV** + Bearer token), the on-disk catalog shape (`<root>/<missionName>/{mission.json, *.mp4, *.json KLV, IR/HS, *.kml}`), and the backend-agnostic `storagePut/storageMkdir/storageList` storage abstraction. - **Holds the verbatim bookmarklet** as an artifact (`artifacts/bookmarklet.js`) so its provenance is captured here even though the canonical app source stays at the simtable app path. - **Flags the known bug**: the install page (`mission-browser.html`) points the bookmarklet at `…/incidents/mission-browser/…` (404); the working path is `…/apps/mission-browser/…` (200). See note 00. - Does **not** relocate or own the canonical app code (that stays at `simtable.acequia.io/apps/mission-browser/`); it owns the *record* and the *forager role*. Catalog-format decisions remain with [`c38c1239`](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/). - **Offer-only across bead boundaries.**

## Folder Layout ``` 35e928bc-.../ about.md uploads/ README.md 2026-06-21/ notes/ 00-egp-mission-browser-orientation.md 01-headless-auth-options.md artifacts/ bookmarklet.js (verbatim loader as provided) chats/ 2026-06-21-start-bead-egp-missions.md ```

## Session Log - **2026-06-09** — *(provenance, pre-bead)* mission-browser bookmarklet + app + README created in Claude Code session `1beb95e0` (first app write 02:27:43Z). Recovered by grepping `.claude` transcripts on 2026-06-21. - **2026-06-21 (cont.)** — Surveyed **headless-auth options** (note 01): EGP runs on **FAMAuth** OAuth2 (Login.gov / eAuth; 30-min access + 12-h refresh tokens). Three paths documented — (A) sanctioned API/service token, (B) Playwright login + persisted refresh token, (C) programmatic TOTP seed via `otplib` as a "limited authenticator" — plus a refresh-token-centric hybrid recommendation, a credential-placement/blast-radius frame, and a compliance caveat (federal Rules of Behavior). 5 open Qs. - **2026-06-21** — Bead opened via `/start-bead egp-missions` after confirming no bead owned the mission-browser bookmarklet (only `b3461c66` documents its output). Recorded what the bookmarklet/app does (EGP API, dual storage destinations, on-disk catalog shape, storage abstraction), captured the verbatim loader, and flagged the install-page 404 path bug (`apps/` serves, `incidents/` 404). Mounted into the wildfire-forager pipeline as the EGP source-forager. Grepped `.claude` chat transcripts to pin the artifact's creation date (2026-06-09) and creator session (`1beb95e0`).

## Modus Operandi (how to interact) - **Read first:** `2026-06-21/notes/00-egp-mission-browser-orientation.md`. - **Canonical app code** lives at `simtable.acequia.io/apps/mission-browser/` (`mission-browser-app.js`, `mission-browser.html`, `mission-browser-README.md`, `_v0.._v3` backups). Edit there; this bead records and reasons about it. - New notes go in a dated `notes/`; the verbatim chat log goes in `chats/`. Reference other beads by absolute URI. Do not write into other beads' trees or the global namespace.

## Capabilities - The **EGP mission-browser** record: how to install, what it scrapes, where it saves, the catalog shape it writes. - Can be cited as the **EGP airborne-FMV source-forager** in the wildfire-forager pipeline. - Does **not** own catalog-format design (`c38c1239`), nor the broader imagery-acquisition producer notes (`b3461c66`), nor the canonical app source.

## Lifecycle - **Energization:** a change to the bookmarklet/app, a new EGP endpoint or save destination, or wiring EGP foraging to an ignition trigger. - **Apoptosis:** fades once the record is synced, the install-page path bug is fixed (or handed off), and the EGP-as-catalog-producer evolution is tracked in `c38c1239`. Terminate by signal.

## Limitations - The bookmarklet needs a live, logged-in EGP session (it rides your cookies cross-origin); it stores nothing on simtable's origin. **Headless-automation options** (direct API, Playwright login + persisted refresh token, programmatic TOTP "limited authenticator") are surveyed in [`notes/01-headless-auth-options.md`](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/2026-06-21/notes/01-headless-auth-options.md) — gated on a compliance check + whether a sanctioned EGP API exists. - Local-folder save is Chromium-only (File System Access API); Firefox/Safari are WebDAV-only. - WebDAV auth is Bearer-token only today (token in browser local storage for the EGP origin). - This bead documents; it is not the runtime and not the canonical code.

## Related beads (mounts) - **Parent / umbrella** — [`5b518c35` wildfire-forager](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/): the forager pipeline this is the EGP arm of. - **Producer-side observations** — [`b3461c66` wildfire-imagery-acquisition](https://redfish.acequia.io/guerin/.agents/b3461c66-1a49-4f62-8920-d6dcc9838942/) (documents the mission-browser output; `mission-browser-as-catalog.md`). - **Catalog format** — [`c38c1239` incident-cataloging](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/) (unified `Entry` shape EGP output should emit), [`97559992` cataloging-incident](https://redfish.acequia.io/guerin/.agents/97559992-a73c-47f6-89a6-6565e0c164f3/) (`catalog-incident.mjs` reads `mission.json`), [`90f902e0` catalog](https://redfish.acequia.io/guerin/.agents/90f902e0-2e45-4aa1-b998-918ca3688e94/).

## References (bead cross-links) - Bead 1beb95e0 · [canonical](https://redfish.acequia.io/guerin/.agents/1beb95e0-f44f-475b-81cd-dc7ce78d8b8f/) (no page yet) - Bead: Wildfire Imagery Acquisition & Catalog Ops · [canonical](https://redfish.acequia.io/guerin/.agents/b3461c66-1a49-4f62-8920-d6dcc9838942/) - Bead: Wildfire Forager · [canonical](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/) - Bead: Incident Cataloging · [canonical](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/) - Bead: Cataloging Incident · [canonical](https://redfish.acequia.io/guerin/.agents/97559992-a73c-47f6-89a6-6565e0c164f3/) - Bead: Catalog · [canonical](https://redfish.acequia.io/guerin/.agents/90f902e0-2e45-4aa1-b998-918ca3688e94/)

See all: Beads