**Bead** `5b518c35-2ce7-474a-a5a8-ec83e2fd0e82` · [canonical URI](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/) · discussion: Talk: Wildfire Forager 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/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/` - **Local origin:** `c:/Users/steph/Documents/sites/redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/` - **GUID:** `5b518c35-2ce7-474a-a5a8-ec83e2fd0e82` - **Slug:** `wildfire-forager` - **Opened:** 2026-06-21 - **Currently animated by:** CV (Claude Code, shell + filesystem) - **Invoked by:** Stephen (`/start-bead wildfire-forager`)
## Motivation (why a GUID) The [`wildcad`](https://redfish.acequia.io/guerin/.agents/bd08d6d4-76a2-438e-94a3-82314bd70065/) bead opened to subscribe one detection source and quickly **outgrew its name**: it accumulated a whole detection-source landscape (FIRMS, IRWIN, NIFC, EGP, WatchDuty), a normalized ignition-record contract, a fan-out-to-foragers architecture, and serving/MIME conventions. That documentation is **the forager pattern itself**, not a property of WildCAD. It deserves its own URI-space so each concrete source-subscriber and each downstream forager can cite one shared design instead of redefining it. **`wildfire-forager` is the umbrella / architecture bead.** It owns the *pattern*: detection source → normalized ignition record → fan-out into foragers (imagery, ADS-B for fire aircraft, media footage) → catalog. Concrete sources are **subscriber beads mounted under it** (WildCAD today; FIRMS/NIFC next). The pattern generalizes past wildfire (storms, any geo-time incident), but its first and worked domain is wildfire, hence the name.
## Mechanism (what this bead does) - **Holds the documentation** (in `notes/`): the detection-source landscape with API shapes, the normalized **ignition-record** schema (the cross-source contract), the **fan-out architecture**, the **subscriber pattern** (`subscribe-<source>.mjs` all emitting the same record), and the **serving/MIME conventions** (json vs ndjson, browser behavior, NetLogo-friendliness) verified on simtable. - **Hosts the human-side forager** — the **media-collector bookmarklet** in [`repo/`](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/repo/) (own git, in-bead discipline): a `javascript:` loader injects an external `collector.js` that checkboxes images/videos on any page and logs them into a named collection (FSA-local | WebDAV). Same architecture as the EGP mission-browser (`35e928bc`), plus a bead-origin iframe + postMessage so state persists across arbitrary host origins. See note 03. - **Mounts** the concrete source-subscribers and the downstream foragers/catalogers rather than duplicating them (see Related beads). This bead is the *map*; the mounted beads are the *territory*. - **Offer-only across bead boundaries.** Emits envelopes; does not write into other beads' trees. - Does **not** itself host a runnable subscriber — those live in their per-source beads (`subscribe-wildcad.mjs` is in `wildcad`). This bead defines the contract they conform to. (The media-collector is the one runnable app it does host, as the browser-side forager.)
## Folder Layout ``` 5b518c35-.../ about.md uploads/ README.md repo/ (own git — the media-collector bookmarklet app) bookmarklet.js collector.js collector-frame.html collect.html README.md 2026-06-21/ notes/ 00-forager-architecture.md 01-detection-source-landscape.md 02-serving-and-mime-conventions.md 03-media-collector-bookmarklet.md chats/ 2026-06-21-start-bead-wildfire-forager.md 2026-06-21-media-collector-bookmarklet.md artifacts/ (empty until a worked multi-source run is captured) ```
## Session Log - **2026-06-21** — Bead opened via `/start-bead wildfire-forager` because `wildcad` was expanding beyond a single source. Migrated the broad documentation here: forager architecture (note 00), detection-source landscape incl. WatchDuty API finding (note 01), serving/MIME conventions from the simtable `test-incident` test (note 02, `.json` renders / `.ndjson` downloads as octet-stream). Mounted `wildcad` as the first source-subscriber plus the forager/imagery/ADS-B/catalog beads. No multi-source run captured yet. - **2026-06-21 (media-collector)** — Built the **human-side forager**: a media-collector bookmarklet in `repo/` (own git, one commit) following the EGP mission-browser architecture (external script + landing page + FSA/WebDAV storage), with a new **bead-origin iframe + postMessage** layer so collections/handles persist across arbitrary host origins. Checkboxes over page images/videos, min-size + JPG/PNG/MP4/video/other filters, append-to-`<collection>.json`. Note 03. **Mounted `35e928bc` mission-browser** (architecture source) and confirmed `90f902e0` catalog as the collection substrate; related to `d2798c01` social-foraging (this is its "save to a collection" surface). Not yet `/bead-sync`'d — the bookmarklet URLs resolve only after push.
## Modus Operandi (how to interact) - **Read first:** `2026-06-21/notes/00-forager-architecture.md`, then 01 (sources) and 02 (serving). - **Add a source:** write a `subscribe-<source>.mjs` in a per-source bead that emits the **normalized ignition record** (note 00 §3), then mount that bead here and add a row to note 01. - **Consume:** point a subscriber's `--webhook`/NDJSON output at a forager bead's `uploads/` dock (offer-only) so an ignition fans out. - 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 **forager architecture** and the **normalized ignition-record contract** (this bead): the shared design every source-subscriber and forager conforms to. - The **media-collector bookmarklet** (`repo/`): the browser-side / human forager — log media links from any page into a named collection (FSA-local | WebDAV), reusing the mission-browser external-script + storage-driver pattern with a bead-origin iframe for cross-origin state. - Can be cited as the umbrella for any detection-source subscription + foraging fan-out. - Does **not** ship a runnable *subscriber*, fetch imagery, recover ADS-B, scrape footage, or build catalogs — it mounts the beads that do. (It does host the media-collector app as the browser-side forager.)
## Lifecycle - **Energization:** a new detection source to document, a change to the record contract, or a new forager/catalog wired into the fan-out. - **Apoptosis:** fades once the architecture is synced to the canonical URI, at least two source-subscribers conform to the contract, and the fan-out is wired or explicitly deferred. Terminate by signal; leave no orphaned umbrella.
## Limitations - Architecture/documentation bead, not a runtime. The liveness lives in the per-source subscriber beads. - Detection lat/long is a **soft prior** (feedback_every-constraint-is-soft); fuse sources rather than trusting one. - Source coverage is partial and migrating (e.g. WildWeb legacy → WildWeb-E); WatchDuty is access-gated.
## Related beads (mounts) - **Source-subscribers / foragers** — [`bd08d6d4` wildcad](https://redfish.acequia.io/guerin/.agents/bd08d6d4-76a2-438e-94a3-82314bd70065/) (WildCAD/WildWeb dispatch; first conforming `subscribe-wildcad.mjs`) and [`35e928bc` egp-missions](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/) (EGP airborne-FMV mission-browser bookmarklet — **the architecture template** the `repo/` media-collector copies: external-script loader, landing page, FSA/WebDAV storage driver). FIRMS / NIFC subscribers are proposed (note 01). - **Browser-side / human forager** — `repo/` media-collector (this bead) is the concrete build of the **save-to-a-collection** surface designed in [`d2798c01` social-foraging](https://redfish.acequia.io/guerin/.agents/d2798c01-dce5-412a-8be7-b85806f72214/); its collections conform toward the catalog substrate [`90f902e0` catalog](https://redfish.acequia.io/guerin/.agents/90f902e0-2e45-4aa1-b998-918ca3688e94/). - **Foragers (fan-out targets)** — [`58c0a5e0` media-forager](https://redfish.acequia.io/guerin/.agents/58c0a5e0-c64e-426e-8da2-ac7f5495d18a/), [`b3461c66` wildfire-imagery-acquisition](https://redfish.acequia.io/guerin/.agents/b3461c66-1a49-4f62-8920-d6dcc9838942/). - **ADS-B / fire aircraft** — [`2986ff41` adsb-for-heli-videos](https://redfish.acequia.io/guerin/.agents/2986ff41-41ea-4629-bc6b-3ce22f55e628/), [`31f69717` stac-camera-telemetry](https://redfish.acequia.io/guerin/.agents/31f69717-3c68-4a0d-85d3-9515ec2e91ff/). - **Catalogers** — [`90f902e0` catalog](https://redfish.acequia.io/guerin/.agents/90f902e0-2e45-4aa1-b998-918ca3688e94/), [`97559992` cataloging-incident](https://redfish.acequia.io/guerin/.agents/97559992-a73c-47f6-89a6-6565e0c164f3/), [`c38c1239` incident-cataloging](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/). - **Umbrella context** — [`a617e16d` wildfire-world-model](https://redfish.acequia.io/guerin/.agents/a617e16d-2257-40b7-8d30-9cfc5ff452e8/) (the multi-sensor fusion frame this foraging feeds). - **Coordination** — [`4c6470f9` bead-orchestrator](https://redfish.acequia.io/guerin/.agents/4c6470f9-b74a-4aba-b436-5e998f469cce/) (could route ignition envelopes to foragers).
## References (bead cross-links) - Bead: Wildcad · [canonical](https://redfish.acequia.io/guerin/.agents/bd08d6d4-76a2-438e-94a3-82314bd70065/) - Bead: Egp Missions · [canonical](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/) - Bead: Social Foraging · [canonical](https://redfish.acequia.io/guerin/.agents/d2798c01-dce5-412a-8be7-b85806f72214/) - Bead: Catalog · [canonical](https://redfish.acequia.io/guerin/.agents/90f902e0-2e45-4aa1-b998-918ca3688e94/) - Bead: Media Forager · [canonical](https://redfish.acequia.io/guerin/.agents/58c0a5e0-c64e-426e-8da2-ac7f5495d18a/) - Bead: Wildfire Imagery Acquisition & Catalog Ops · [canonical](https://redfish.acequia.io/guerin/.agents/b3461c66-1a49-4f62-8920-d6dcc9838942/) - Bead: Bead · [canonical](https://redfish.acequia.io/guerin/.agents/2986ff41-41ea-4629-bc6b-3ce22f55e628/) - Bead: Stac Camera Telemetry · [canonical](https://redfish.acequia.io/guerin/.agents/31f69717-3c68-4a0d-85d3-9515ec2e91ff/) - Bead: Cataloging Incident · [canonical](https://redfish.acequia.io/guerin/.agents/97559992-a73c-47f6-89a6-6565e0c164f3/) - Bead: Incident Cataloging · [canonical](https://redfish.acequia.io/guerin/.agents/c38c1239-bfd3-44dd-8d97-1a0aa39ac8da/) - Bead: Wildfire World Model · [canonical](https://redfish.acequia.io/guerin/.agents/a617e16d-2257-40b7-8d30-9cfc5ff452e8/) - Bead: Orchestrator · [canonical](https://redfish.acequia.io/guerin/.agents/4c6470f9-b74a-4aba-b436-5e998f469cce/)
See all: Beads