MIP-0083 tasks¶
Ordered delivery of MIP-0083, one PR per row. §n are the
MIP's. The schemas come first (§5.12); rows 1–8 are v0: two providers (IFS and GFS), stations,
the scorer, a local lake, MLflow and the cycle, filed as marola-dev/marola-app#63–#70 (the
superseded text's issues, rewritten; #71 closed). Rows 1, 2 and 3 then 4, 5 and 6 can run in
parallel. Rows 9–21 are filed when v0 is done. Every code row is marola-app's experiment
module unless it says otherwise.
| # | slug | delivers | tests (must exist before the PR) | depends on |
|---|---|---|---|---|
| 1 | schemas | §5.12: every schema, with §5.14's run_init, available_at, fetched_at and content_sha with derives Schema, its JSON Schema and DuckLake DDL checked in; kyo-schema, kyo-schema-json and kyo-config added after a jar check; marola-app#72's verify renamed experiment, its Besom infra removed |
SchemaSpec |
– |
| 2 | registry-protocol | GroundTruth (from #72), sampling-points.json, providers.json with the two v0 rows, #72's nine candidates as v0's sampling points, protocol.json (90 d, 4 h, leads to 360 h, scorecard days, K = 16, min_n) |
GroundTruthSpec, SamplingRegistrySpec, ProtocolSpec |
1 |
| 3 | score-monoid | §5.2 and §5.5: the ScoreCell monoid with the OWB metrics (bias, RMSE, fair CRPS, spread, debiased ensemble-mean RMSE, spread-skill, error correlation), Matcher, Scorer, §5.14's paired intersection, model and issued skill, and the day-block bootstrap |
ScoreMonoidSpec, MatcherSpec, FairnessSpec (scoring cases) |
1 |
| 4 | open-meteo-route | §4.4: the open_meteo route, driven by providers.json; IFS and GFS wind and temperature with single-run backfill; Async.foreach, Meter.initRateLimiter and Retry (§5.13); §5.14's run pinning and content hash; first live fixtures |
ForecastClientSpec, FairnessSpec (fetch cases) |
2 |
| 5 | station-observations | §4.5: MetarClient (aviationweather.gov, IEM archive), InmetClient, the Niño-3.4 reader |
ObservationClientSpec |
2 |
| 6 | lake-samples | §5.6's tables behind SampleStore, on a local DuckLake directory (duckdb_jdbc), Scope-owned connection, Stream-paged reads; the B2 OodsStore implementation follows MIP-0075 task 5 |
LakeSamplesSpec |
1 |
| 7 | cycle-mlflow | cycle, rescore, export on RunLedger; the MLflow experiment of §5.6 on B2; just experiment-cycle and just experiment-rescore |
CycleSpec, ExportSpec |
3, 4, 5, 6 |
| 8 | scheduled-workflow | §5.9 experiment.yml; v0 is done when 7 days of unattended cycles show in MLflow; it writes the local lake to the Actions cache until the B2 lake lands |
actionlint; §7's live checks |
7, the owner's B2 key |
| 9 | station-screen | the screen command moving a candidate to qualified or rejected under #723's frozen thresholds |
ScreenSpec on a fixture year |
2, 5, #723 |
| 10 | scorecard-page | marola-site — marola-site#99 as an OWB-style scorecard (days 1/3/5/7/10/15, 12Z ranking, climatology floor) against §5.12's Scorecard schema |
that issue's site_check.js case and screenshots |
7 |
| 11 | provider-rows | §4.4: providers.json rows for WeatherNext 2, AIFS, AIGFS, ICON, IFS ENS and GEFS, each with a recorded fixture; no Scala change |
ProtocolSpec on the new rows |
4 |
| 12 | marine-observations | §4.10: PNBOIA buoys (BNDO download or GTS), SIMCOSTA if reachable; buoys as buoy sampling points |
MarineObservationSpec |
5 |
| 13 | upper-air | §4.10: Florianópolis and Porto Alegre radiosondes, 850 hPa vector-wind RMSE at upper_air points |
UpperAirSpec |
5, 11 |
| 14 | navy-warnings | §4.10: archive CHM METAREA V warnings every cycle, parse pt and en, verify force ≥ 7 against buoys and stations | NavyWarningSpec |
6, 12 |
| 15 | merge-precip | §4.10: MERGE daily precipitation (BDC STAC), the 2000–2025 SEEPS climatology, 24 h SEEPS | MergePrecipSpec |
3, 6 |
| 16 | marola-analog | §5.11: the analog library (IFS single runs from 2024-03-14 with the IEM METAR archive), the marola_analog route |
AnalogSpec |
3, 4, 7 |
| 17 | wn3-outreach | a person — the WeatherNext 3 Data Request Form as UFRJ and UFSC (§4.3), the answer recorded in the MIP | – | – |
| 18 | bndo-request | a person — the BNDO request form for PNBOIA history and terms (§4.10), recorded in the MIP | – | – |
| 19 | weathernext3-route | §4.3: the weathernext3_bigquery route |
its client spec on a recorded fixture | 4, 17 |
| 20 | monan-route | §4.10: the monan route once INPE publishes output |
its client spec on a recorded fixture | 4, INPE |
| 21 | grid-scores | marola-ml, only if the owner decides to — WeatherBench-X on a South crop against each model's analysis (§4.10's "cannot" made possible) | its own MIP | 8 |
| 22 | mip-implemented | marola — MIP-0083 flipped to Implemented with every PR | mip_graph.py --check |
1–16 |