Persistent Named Storylines · Probability Mass, Run To Run
Every model cycle the ensemble splits into a handful of distinct storylines — and every cycle, most tools throw the identity away and re-cluster from scratch. The Ticker doesn't. Each storyline gets a stable id and a name the run it emerges, keeps it across inits while it persists, and its probability mass (the fraction of ensemble members backing it) is tracked flowing run to run: who's gaining, who's fading, what was just born, what just died.
scripts/scenario_registry.py seeds the
storylines, and identities begin flowing once two consecutive inits have been registered. From
then on every new cycle updates each storyline's mass, and births, deaths, splits and merges appear
here as they happen.
For the Day-7 Northern-Hemisphere outlook, the ECMWF ensemble's 50 members are clustered into a few coherent Z500-anomaly storylines — "a ridge amplifies over the Rockies", "a trough digs into Hudson Bay". Each cluster's member fraction is its probability mass: the share of the ensemble backing that version of the future.
When a new init arrives, its branches are matched against the previous run's live scenarios by
area-weighted (cos-latitude) anomaly pattern correlation between cluster centroids at the
overlapping valid times, using an exact optimal one-to-one assignment with an acceptance threshold of
0.45 — the same correlation floor the within-run lineage tracker uses. Where the archive
predates centroid export, matching falls back to regime class + amplitude + mass continuity, boosted
wherever the lineage archive itself already recorded branch continuity from its own near-data centroid
matching. A new branch matching nothing is a birth; a scenario matching nothing for two straight
runs dies; two branches claiming one parent is a split (children keep parentage); two
parents collapsing into one branch is a merge.
A forecast bust is rarely a model "changing its mind" all at once — it is probability mass migrating between persistent storylines, cycle by cycle. "Plains ridge 62% (+12 overnight)" is tradeable information in a way an anonymous re-clustered map is not: scenarios with identity can be watched, priced, and — once matured — scored as entities. Per-scenario verification flags (which storyline actually verified) will attach here as the lineage artifacts begin carrying branch-vs-analysis outcomes.