Skip to main content

Week 8 Lab: Committing to rain

Validate a supplied weather ensemble and tyre-set ledger, then save and defend a position-first wet-weather commitment before the outcome unlocks

26 April 2027

Two hours, completed and submitted inside the session, for 2% of the course. The codebase is standalone. It consumes supplied candidate outcomes and a physical-set ledger; it does not import work from an earlier lab.

What leaves the room is a validated finite scorer, a position-first selector, a commitment saved before the outcome reveal, and a complete decision report.

Before the session

Install the supplied codebase and run its test suite. Read the four schemas: forecast paths and weights, candidate commitment laps, per-path outcomes, and the physical-set ledger. Be able to say which fields are identifiers, which are numbers, and which decide feasibility.

Hand-check a two-path weighted mean finishing position. Then complete the public tie-break micro-fixture. Both candidates have weighted mean position 4.00; only after establishing that tie should the selector compare 605.0 s with 604.5 s and select later. The locked four-path ensemble and its answer are not available before the validation checkpoint.

What is supplied

All race values in the codebase are generated for this exercise. The weights are supplied scenario probabilities, not observations, ECMWF member weights or calibrated forecasts. The irreversible commitment is also an exercise rule, not a restriction on a real team.

In the session

  1. Validate the forecast and ledger (20 minutes). Reject a forecast with no paths, duplicate path IDs, a non-finite or negative weight, or weights whose sum is not one. Reject an illegal commitment lap. Resolve each candidate to its named physical set and reject every candidate that requires returned W1. No invalid fixture reaches the scorer.
  2. Make finite scenarios executable (25 minutes). Implement exact weighted summaries for finishing position and adjusted finish time across every supplied path. Reproduce the public two-path micro-fixture, including both position calculations and both time calculations. There is no random draw.
  3. Preserve the objective (25 minutes). Rank weighted mean finishing position first. Consult adjusted time only for a position tie. Add a test in which one candidate finishes faster on weighted time but loses on weighted position; the selector must reject it.
  4. Commit, then unlock (30 minutes). Once validation unlocks the ensemble, run the locked fixture against the supplied ground truth. Persist the selected feasible candidate and a reason that names the objective used. Only then unlock the realised path. The saved record is immutable after the reveal: a better result under that one path is not permission to rewrite the call.
  5. State the downside and report (20 minutes). Find the selected rule’s worst finishing position and every path that produces it. Classify each as rain arriving earlier, later or not within the supplied horizon. Run the returned-W1 variant and show that all dependent candidates fail before scoring. Emit the complete report below.

Decision report

Submit one machine-readable record containing:

What you hand over

A marker runs the public and locked tests in the room. They check that your validators reject each malformed input, the scorer reproduces the supplied finite summaries, position remains primary, the locked commitment matches the supplied ground truth, the saved rule predates the reveal, and the returned-set fixture cannot be scored. The marker then reads the downside and every field in the decision report.

You submit the validators and tests, finite weighted scorer, position-first selector, saved commitment, downside calculation, selected feasible lap and complete report. A result selected after the reveal is not a submission.

The spec

What you bring to the session. Written so a reader can tell whether it has been met without asking you.

Teaching team