Allow solutions to depend on Lean Pool - #653
Conversation
|
The production dependency-isolation fix is leanprover/lean-eval-submissions#1840. That PR and leanprover/lean-eval-generator#9 need to merge before this PR; the submissions deployment must also promote the new dispatch ref. Production will give LeanPool a private build directory so only imported modules are compiled inside comparator’s sandbox. I am handling the fix, validation, and upstream generator repin. |
|
Both prerequisites are merged. Generator #9 is pinned to its upstream merge commit, and submissions #1840 is deployed successfully through staging, the dispatch canary, and production (workflow run 36377540838). The production dispatch tag is lean-eval-dispatch/fc441e8362ee91bb05a88e9c099055cdc0834bb3. The cold Git-dependency sandbox regression, 1109 Python tests, and a warning-free sandboxed build of a real LeanPool module importing Mathlib passed; the upstream repin also passes all 155 Lean unit tests. Waiting for this PR’s remaining catalog checks before merging. |
kim-em
left a comment
There was a problem hiding this comment.
Approved. LeanPool is pinned and available to solutions while its library roots are rejected in statements and local statement helpers. Generator support is merged and pinned upstream. The production fix in leanprover/lean-eval-submissions#1840 is merged and deployed: imported LeanPool modules compile inside comparator in private per-workspace caches, while shared dependencies remain read-only. Cold sandbox tests and a real LeanPool/Mathlib import pass without warnings; all 155 Lean unit tests pass. Merge once the remaining required catalog CI passes.
kim-em
left a comment
There was a problem hiding this comment.
Re-reviewed after merging the new main toolchain upgrade. The generator pin includes both the Lean 4.35 String API fix and solution-only dependency support. All 155 Lean unit tests, the cold private-cache sandbox fixture, and an actual LeanPool/Mathlib import pass on Lean 4.35.0-rc3 without warnings. Production dependency isolation is already merged and deployed in leanprover/lean-eval-submissions#1840. Approved pending the rerun of required catalog CI.
kim-em
left a comment
There was a problem hiding this comment.
Approved at 78a3333. Generator support and legacy/module interoperability are merged upstream in #9 and #11; production private sandboxed caches are merged and deployed in lean-eval-submissions#1840. The complete pinned LeanPool library builds without warnings against LeanEval exact current dependencies inside a private Linux sandbox (13,892 jobs). A fresh workspace emitted by the pinned generator accepts a cold LeanPool proof and its unchanged solution bridge without warnings. All 155 Lean unit tests pass. Independent review found no blockers. Merge after required catalog/scoring CI passes.
Make Lean Pool available to submitted solutions while keeping trusted problem statements and their local helpers independent of it. The generator includes the pinned package in every workspace and rejects statement imports from its
LeanPool,Challenge, andSolutionroots.Generator support is merged upstream in leanprover/lean-eval-generator#9 and leanprover/lean-eval-generator#11. The latter explicitly permits the existing legacy workspace files to import module-system dependencies without compatibility warnings, preserving their visibility rules and all other warning checks. Production isolation is merged and deployed in leanprover/lean-eval-submissions#1840: imported LeanPool modules compile inside comparator in private workspace caches, while shared package sources and other dependencies remain read-only.
This preserves main’s Lean 4.35.0-rc3 upgrade and pins LeanPool at
e9d53e9cbcff8dfd0cc816ba94db7a26b082929f, the compatible revision whose ten build shards and assembled-library lint passed in LeanPool CI. The scoring smoke test uses the existing submission format, importsLeanPool.Basic, and runs the proof through comparator.Validation: