Experiment history
Round 1 — the four themes (7/7 merge overall)
Section titled “Round 1 — the four themes (7/7 merge overall)”| # | Theme | Experiment | Verdict | One-liner |
|---|---|---|---|---|
| 01 | T01 Client-side wrapper | client-side-wrapper |
✅ merge | In-browser categorical + continuous stats, fidelity table, query panel |
| 02 | T02 Modern interaction | stat-interaction |
✅ merge | Metric/Dimension/Filter/Facet explorer, 3 linked views |
| 03 | T03 Novel plotting | novel-plotting |
✅ merge | Performance diagram · reliability + Brier · threshold scrubber · MODE-style objects |
| 04 | T04 Modernization | modernization |
✅ merge | Guided journey + provenance + shareable URL + rule-based narration |
Round 1’s enduring lessons: the ratio-of-sums aggregation rule, and the discovery that
ES-module apps don’t open from file:// — which produced the single-file
inliner.
Round 2 — three more visuals + a fix
Section titled “Round 2 — three more visuals + a fix”| # | Experiment | Verdict | One-liner |
|---|---|---|---|
| 05 | spatial-maps |
✅ merge | Map-native error field, region masks, masked MET stats |
| 06 | ensemble-verification |
✅ merge | Rank histogram · spread-skill · reliability + Brier · CRPS |
| 07 | volumetric-3d |
✅ merge | Orbitable 2.5D metric cube (lead × threshold × region) |
Round 2 also fixed a Theme-02 partial-sums issue; each new experiment bakes in the ratio-of-sums lesson and surfaces the wrong mean-of-ratios on screen.
Consolidation (the integration branch)
Section titled “Consolidation (the integration branch)”All seven apps were gathered under apps/, their duplicated math extracted into
lib/met-stats.mjs, single-file builds generated into
dist/, and a branded gallery added. Every migration was proven non-regressive with
bit-for-bit differential tests (~34k assertions) against the original app code. Only
stat-interaction’s categorical path deliberately stays local (a different
degenerate-denominator convention).
Round 3 — real data and “MET in the browser”
Section titled “Round 3 — real data and “MET in the browser””| # | Deliverable | What it proved |
|---|---|---|
| 08 | stat-ingest + lib/met-stat-parse.mjs |
Real MET .stat/.txt/MODE output parses in-browser: 6,329 files, 88,456 records, 0 errors |
| 09 | met-pipeline-explorer |
The grid_stat workflow recomputed live on a real case; counts bit-identical to MET’s .stat |
| 10 | real-data-demo |
De-identified real data streamed from private R2 (Zarr v3 + Parquet + DuckDB-WASM), pairs computed on the fly |
| 11 | webgpu-fss |
FSS on real WebGPU compute shaders, 4 kernels, parity ~1e-8, ~7× at 2048² |
Round 3 changed the question from “can we view MET output better?” to “how much of MET can run in the client?” — the answer is documented in the MET-in-the-browser explainer and the feasibility matrix artifact.
Where the details live
Section titled “Where the details live”docs/EXPERIMENTS.md— the tracker table (branch, status, verdict per experiment).docs/reports/EXPERIMENT_REVIEW.md— full per-experiment review log + screenshots.CONSOLIDATION.md— the shared-lib extraction, inliner, dist builds, trimming decisions.docs/REAL_DATA_INTEGRATION.md— the real-data wiring blueprint and its open decisions.
