Lab: Continuous training, gated and replayed
Module 10 · Lab · About 60 minutes · Needs: lessons 1 to 3 of this module, and the Module 9 lab (or nothing: Step 1 rebuilds Modules 1 to 9)
What you are building
Until now a person decided when Kestrel trained and which model served. This lab hands the routine part to a pipeline and keeps the judgement with people: pipelines/continuous_training.py takes a raw snapshot of labelled parcels, checks it against the data contract, retrains model v2's recipe within Adaeze's budget, registers the result, and moves the champion alias only if all five promotion gates pass. Shadow, canary and rollback stay as Lesson 2 wrote them; ADR-007 records the policy.
The lessons registered stand-ins; the lab puts the real models in the registry: model v1 (Module 3 lab) as version 1 and model v2 (Module 6 lab) as version 2, judged on the gate weeks, 7 to 20 September. Then it replays the mornings of 15 to 27 September to show which trigger fires when, rebuilds v2 from its record, and adds a corrected test workflow for GitHub. No cell calls a hosted model.
Open a new Colab notebook, call it module-10-lab.ipynb, and run each cell in order.