Web extra · not in the printed book · Part VII territory

The Weather on a Sphere That Notices

Picture four hundred and eighty weather stations scattered across a globe, each one quietly remembering what its own normal feels like — the average temperature it sees, and how far its readings usually wander. Every new reading gets priced at the door against that memory: how far is this from usual, in units of the range we said to expect? That price is the station's curvature (κ), and it's stamped onto the record while the write is still warm — no nightly batch, no monitoring job. Break a station and watch it bloom.

The globe above lives in GIGI as data. Every one of the 480 weather stations becomes one record in the stations bundle — keyed by station_id, with a latitude ring band the engine indexes for fast group-by, plus lat, lon, and the latest temp reading. Each fresh reading is a write against that station's own row.

Because GIGI is a fiber-bundle database, every write also carries the reading's local surprise — curvature (κ), the distance from what this station usually sees — and updates a running mean and spread the storage layer keeps for it. No monitoring job, no threshold config: when you break a station or scrub the bloom threshold, the log below shows the real GQL query GIGI answered.

480 stations · each keeps its own running mean and spread (a Welford accumulator, updated one reading at a time) · κ = |v − μ|/R, R = 60 declared
drag to orbit · wheel to zoom

What INTEGRATE stations OVER band MEASURE count(*), avg(temp), max(kappa); prints

recomputed live from the same accumulators the dots are drawn from — the legend and the engine cannot disagree

The trick worth staring at: nobody told the globe where the broken station is. Its dot blooms because its own history prices its own readings — the fleet needs no fleet-wide scan, no threshold config per station, no cron. That is the Part VII story: the keeper reads receipts the engine already wrote. And when you heal the station, watch how long the bloom takes to fade — the running mean never throws an old reading away — Welford keeps them all folded in — so μ walks back slowly. Whether that memory is a feature or a bug is E8.7's argument, and this globe is a good place to have it.

The same thing in GQL — run it against an engine

The public instance allowlists a stations bundle but ships it empty — create it on your own engine (start with GIGI_CORS_ORIGIN=* for browser access, dev only) with the statements below, then the INTEGRATE matches the table above in shape.