Arm scoreboard — the prequential decision log
Every lab grab is scored exactly once, against the predictions each arm published at the grab’s sample hour, before the result was known, and written to an immutable log (first write wins). This table reads only that log — it never pairs grabs against the stored series. Cost prices a missed exceedance at 3× a false alarm (5× on the Seine and Marne, where the cities want the rare high days caught); the lowest-cost arm on a site’s own record is the one the gate serves. Grabs taken before any earlier result from the same site was known (cold start: the site showed “held”) are left out, as the gate leaves them out. The Dashboard model arm is the customer dashboard’s own served model, joined over HTTP; it enters the record from its first live hour and is scored on the same footing. It is not the same as Site refit, which is the engine’s own sensor-only per-site fit. Shadow arms (pathway, xgb_clf, seine_pooled, pooled_fleet) are scored here but never served; they are never the green cell, and a ▲ marks a row where a shadow arm beats every served arm.
Loading the decision log…
About this feed
Every number is produced by a model that, at prediction time, used only information available at that moment. Arms compete per site under a gate: the one with the lowest decision cost (a missed exceedance priced at 3× a false alarm, 5× on the Seine and Marne) on the site's own scored record serves, once the site has enough decisions; otherwise the region's record decides, and below that the site serves the prior-only arm. A new site holds its alarm until its first lab result. When a sensor is dark, service continues on the prior-only arm with honestly widened uncertainty, and a standing alarm is held rather than cleared. Every grab's scoring is written once to an immutable decisions log (first write wins) with each arm's prediction as published at the sample hour; the scoreboard above reads only that log. Model provenance rides each row as model_version, the serving arm as served_arm. This page reads the nowcast_* tables and nothing else; the raw sensor store is upstream of a read-only boundary and cannot be affected by anything on this page.