World-models technical approach for wildfire (Wildfire World Model)

**Note** from Bead: Wildfire World Model · [canonical source](https://redfish.acequia.io/guerin/.agents/a617e16d-2257-40b7-8d30-9cfc5ff452e8/2026-06-20/notes/01-world-models-technical-approach.md) · session 2026-06-20 · discussion: Talk: Wildfire World Model

**Bead:** `a617e16d` (wildfire-world-model) · 2026-06-20. Mounts theory bead [`2aeb9f0b`](https://redfish.acequia.io/guerin/.agents/2aeb9f0b-77a8-4463-ab45-0f5d0096e304/about.md) and senior-architect [`b2d9f6e1`](https://redfish.acequia.io/guerin/.agents/b2d9f6e1-4c3a-4e58-8a1f-7d0c5b9e2a64/about.md).

## The thesis, applied A **world model** (Ha & Schmidhuber 2018; LeCun's JEPA; DeepMind's Dreamer/MuZero) is a learned, *predictive*, *latent-space* model of an environment that an agent can roll forward to imagine futures and plan. The world-models bet (LeCun + Sutton) is: **don't generate every pixel/token of the future — predict the task-relevant state in representation space, and improve the model from streams of real experience.** A **wildfire world model** is the same object pointed at a fire: a latent state of *(fire front, fuel, terrain, atmosphere)* that 1. is **estimated** from fused multi-sensor observation (perception), then 2. **rolled forward** in time to forecast spread (imagination), and 3. **corrected** whenever a new observation lands (data assimilation), so the loop is **observe → assimilate → predict → render → observe**. That loop is the product. Fire science already has its pieces under other names; the world-models framing unifies them and tells us where learning belongs.

## The Ha & Schmidhuber V–M–C decomposition, mapped to fire The cleanest skeleton is the original *World Models* (2018) split — Vision, Memory, Controller — re-read for wildfire: ``` V (vision / encoder) M (memory / dynamics) C (readout / decision) fuse imagery → latent roll fire state forward forecast products + decisions fire state on the DEM in latent space (TOA, evac timing, intensity) ─────────────────────── ──────────────────────── ────────────────────────── our pose/STAC/calibration physics prior (Rothermel/ incident-viewer overlays, stack georegisters every level-set) + LEARNED residual "where in 3h", alerts. sensor onto one grid+clock (Dreamer-style RSSM / JEPA) Not a control policy — fire isn't actuated; the "action" is human response. ``` - **V — perception/encoder.** This is the **FUSE** capability. Map heterogeneous observations (MISB-0601 aircraft FMV, AlertWildfire/AlertCalifornia PTZ frames, news-helicopter video with recovered ADS-B pose, citizen phone imagery, IR/heat-perimeter rasters) into a **single latent fire state defined on the terrain grid at a shared UTC clock.** The ecology's pose/calibration/STAC stack *is* this encoder's front half — georegistration is how pixels become state. (LeCun's JEPA point: we want the *representation* of fire — front location, intensity, spread direction — not a reconstruction of every flame pixel.) - **M — dynamics/memory.** This is the **FORECAST** core: a forward model of how the latent fire state evolves. **Hybrid by design** — a physics prior (Rothermel rate-of-spread + level-set front propagation on the DEM, driven by gridded wind/fuel/moisture) plus a **learned residual** trained on the STAC archive of past fires (Dreamer's "improve behavior by imagining futures"; this is also where every-constraint-is-soft bites — the physics is a *soft prior*, not ground truth, and observations reweight it). - **C — readout/decision.** This is the **MEASURE→product** capability turned forward: emit the decision-relevant quantities — **time-of-arrival raster, fireline intensity / flame length, probability-of-burn, evac lead time** — as STAC items the viewers already render. Unlike Dreamer/MuZero there is no control action *on the fire*; the "controller" is the human-facing forecast + the social/response layer (the senior-uxui-designer's plane).

## Why "world model," not "generative video model" A tempting alternative is a Genie/Sora-style generative video model that hallucinates future flame frames. The world-models thesis (and the operational reality) says no: - **Predict in representation space.** V-JEPA's lesson — discard unpredictable detail (the exact shape of every flame), predict the *latent* that matters (front position, ROS, intensity). Our **TOA raster is already a representation-space target**: minutes-from-origin per pixel, not pixels of fire. fire-progression `182bd1a7` is, in JEPA terms, the encoder's *target representation*. - **Physics is the strongest prior we have.** Pure data-driven pixel generation throws away 50 years of fire science. The right move is **physics-informed**: a level-set/Rothermel core (what WRF-Fire and ELMFIRE do) with a learned correction — not generation from nothing. MuZero's lesson applies: you don't need the true simulator to plan well, but a *learned latent dynamics* that predicts the planning-relevant quantities (here: arrival time, intensity) is enough. - **Learn from experience, not just human fuel maps (Sutton).** "The era of experience" — the model should improve from the growing **STAC archive of real fire observations** (Sandy, Sorrento, Palisades …), each fire a labeled trajectory of *observed* spread. The catalog `90f902e0` is, in this light, the training-corpus index.

## The closing of the loop: data assimilation The piece that makes it a *world model* and not just a one-shot simulator is **assimilation** — the same `observe→update` cycle Dreamer runs every step. Fire modeling already has the tool: **Ensemble Kalman Filter / morphing-EnKF** (Wikipedia *Wildfire modeling*: "combines data assimilation with image registration and morphing … additive and position correction"). Each new fused observation (a fresh AEVEX perimeter, an AlertWildfire frame showing the front, a citizen photo) **nudges the ensemble of forward simulations toward reality.** This is also exactly the bundle-adjustment / least-action / bidirectional-coherence pattern from every-constraint-is-soft: the forecast is the current minimum of a collective error surface over soft constraints (physics, each observation, the prior perimeter), and every new calibrator reweights it. ``` observations (fused) forecast ensemble MISB ─┐ ┌─► t+1h PTZ ─┤ V: encode → latent M: roll forward (physics+learned) citizen┤ fire state on DEM ──────► ┌─► t+3h ──► C: TOA / intensity / evac IR ─┘ ▲ └─► t+6h (STAC products → viewers) │ │ └──────── EnKF / morphing assimilation ◄───┘ (nudge ensemble to match new obs) ```

## Fire-science anchors (so the latent state is physical) The latent state and the physics prior are grounded in (verified via *Wildfire modeling*): - **Rothermel (1972)** surface rate-of-spread: ROS = f(fuel model, wind, slope, fuel moisture). The per-cell speed in the level-set. - **Byram fireline intensity** I = H·w·ROS (heat content · fuel consumed · ROS) → flame length. The "intensity" channel of C, recoverable from IR radiance. - **FARSITE / Prometheus** — Huygens-wavelet 2D front growth (elliptical templates). The deterministic spread engine family. - **WRF-Fire / SFIRE** — couples WRF atmosphere with a **level-set** fire front; gives fire→atmosphere feedback (plume-driven wind). The high-end physics tier. - **ELMFIRE** (Lautenberger) — operational, level-set, Monte-Carlo ensemble — the closest production analog to the *ensemble forecast* we want. fire-in-taos `b6fcda63` is today a slope-biased CA (probability ∝ exp(k·Δz/d)); the upgrade path is to make its per-cell spread a **real Rothermel ROS field** and its propagation a **level-set**, running as a GPU compute step (agentscript-webgpu `f4ef67b7`) — i.e. fire-in-taos becomes the M block's physics prior, rendered live in taos-engine.

## Mapping to the senior-architect 5 planes (so it composes) The world model is a new **compute layer** that rides the existing convergence stack rather than a monolith: | Plane (b2d9f6e1) | Wildfire-world-model role | |---|---| | 0 · DATA / STAC | Fused observations *and* forecast products are STAC items/assets (TOA raster already is). The model's I/O contract. | | 1 · UI shell (`acq`) | Behavior + forecast overlays render through the shared app-shell in incident-viewer; one properties panel for "observed vs forecast". | | 2 · TIME / master cursor | The observe→forecast loop *is* the time cursor extended past "now": forecast = cursor at now+Δ on the same clock. | | 3 · ENGINE / taos-app-kit | The M block (physics + learned step) runs as a **GPU compute kernel** in taos-engine via agentscript-webgpu; rendered on the DEM. | | 4 · NAMESPACE-as-bus | Model **reads observations / writes forecasts as WebDAV resources**; citizen imagery enters via the dock; first-three-hours P2P fusion = the Acequia moat (and the DARPA-DICE decentralized-AI story `eb8d150d`). |

## One-paragraph synthesis A wildfire world model is **V (fuse imagery into a latent fire state on the terrain) → M (roll it forward with a physics-prior + learned-residual dynamics, ensemble) → C (read out TOA / intensity / evac timing as STAC products)**, closed by **EnKF assimilation** of each new observation. It is *not* a generative flame-video model: it predicts the task-relevant representation (TOA, intensity), keeps 50 years of fire physics as a soft prior, and learns from the STAC archive of real fires (Sutton's experience). It is built by composing beads we already have — pose/calibration/catalog for V, fire-progression + a Rothermel/level-set fire-in-taos for M, the viewer + STAC products for C — across the senior-architect's five convergence planes, with the namespace-as-bus carrying citizen imagery in the first three hours. The staged build path is in `02-initial-plans-fuse-measure-forecast.md`.

## References (bead cross-links) - Bead: World Models · [canonical](https://redfish.acequia.io/guerin/.agents/2aeb9f0b-77a8-4463-ab45-0f5d0096e304/) - Bead: Senior Architect · [canonical](https://redfish.acequia.io/guerin/.agents/b2d9f6e1-4c3a-4e58-8a1f-7d0c5b9e2a64/)