Skip to content

ADR-0002: The forecast experiment is a fourth sbt project, experiment

Status Accepted
Date 2026-10-09
Related ADR-0001, MIP-0083, marola-app#63

Context

MIP-0083 adds a job that samples wind and temperature forecasts every 4 hours and scores them against instruments. It shares core's HTTP and JSON helpers and, later, local's MLflow ledger, but nothing on the recommendation path calls it, and it runs from its own scheduled workflow.

Decision

build.sbt gets a fourth project, experiment (marola-experiment), aggregated by root. It depends on core now and adds local when the cycle logs to MLflow (MIP-0083 task 7). cli does not depend on it. Its own dependencies are kyo-schema, kyo-schema-json, kyo-config and duckdb_jdbc, the engine of its SampleStore (MIP-0083 §5.6), which lives here with its local-lake implementation LakeSamples until MIP-0075's B2 store replaces it.

Consequences

  • sbt test and just quality cover it like the other three projects.
  • The experiment's jar is built from experiment alone, so the app image does not grow.
  • A dependency only the benchmark needs goes in experiment, by ADR-0001's lowest-module rule.