A functional toolkit for authoring resource-leveling algorithms — compose constraint and scoring blocks, enumerate feasible schedules

feat(leveling): embed run provenance in materialized projects master

Every LevelingRun.materialize output now carries a levelset metadata block: engine version, the filled run config (rerunnable — the reproducibility artifact), seed, achieved scorer values, analysis warnings, and search annotations. ProjectFileSchema gains the optional field and the JSON reader/writer round-trips it (non-parsing provenance is dropped on read rather than failing the file). Answers "why does this schedule look like this?" from the file itself, spaCy config.cfg-style.


+156 -2
6 changed files