Skip to content

Forecast: the read side

The briefing capability is the published site-forecast contract and everything that is a pure function of it — validation, derivation, analysis, comparison across models and across a model’s own successive runs, transport, and the append-only history. If a result is meaningful without a chart, it lives here.

The package has two tiers. The data tier — contract, derivations, analysis, comparison, transport, history — needs no DOM and produces typed values and findings. The presentation tier/meteogram — is the Meteogram: a validated document becomes a serializable scene graph, and the scene becomes deterministic SVG. Every surface is an explicit subpath of @azohra/meteo.briefing:

import { parseSiteForecastJson } from "@azohra/meteo.briefing/contract";
import { analyzeForecast } from "@azohra/meteo.briefing/analyze";
import { buildMeteogramScene, renderMeteogramSvg } from "@azohra/meteo.briefing/meteogram";

The producing side — the engine that samples providers and publishes the documents this capability consumes — is @azohra/meteo.forecast. /history is the one Node-only subpath (node:zlib).

Each page is the single authority for its topic. Start with Render a first Meteogram to see both tiers in one working example.

PageCovers
Contract validationAccepting profile, manifest, model, site, and run-index documents at an explicit trust boundary
Load published documentsFetching consistent publications — run-stamp guards, retries, misses discriminated from failures
Pure derivationsPure quantities from published state, local-day projection, valid-time alignment
Analyze a profileanalyzeForecast: typed findings over one forecast, with thresholds and evidence attached
Compare model profilescompareForecasts / compareAnalyses: cross-model agreement, spread, and divergence for one site
History and run convergenceThe append-only month-archive reader and compareRuns convergence
PageCovers
Render a first MeteogramValidate one profile and serialize a reference chart with its scene-derived key
Build a scene graphSerializable geometry and hit-testing from one validated profile
Render SVG and a scene-derived keyDeterministic SVG from a scene, styled by package tokens
Defaults and tokensConfiguring the reference scene and renderer through options and tokens
Reading a MeteogramWhat every mark on the rendered chart means, and how to read it

Two pages document state the package deliberately does not ship, as recipes over its pure queries and transports:

PageCovers
Wire an inspectorPointer, keyboard, and pinned selections over the scene’s pure queries
Run an ingestThe store-and-serve loop: poll runs.json, ingest coherent publications, serve through gaps

JSON Schema for the published documents lives in schema/, with committed annotated examples — the same convention the station wire schemas follow in their own package.