TJC-1814: fix first CI run: grep guard, explicit pinned nanoda step - #1
Conversation
Two failures surfaced on the inaugural run, both now fixed:
- The standalone-paper guard failed closed exactly as designed: current
ubuntu-latest runner images no longer ship ripgrep, so 'rg --version'
exited 127. The guard now uses grep -qE (always present); behavior
verified locally in both directions.
- lean-action's nanoda integration cannot run on this package: its module
detection requires a [package] table in lakefile.toml (which Lake
rejects - top-level 'name' is mandatory) and it conflates the package
name with the root module name ('goemans' vs 'Goemans'). Replaced the
nanoda input with an explicit workflow step in ci.yml and release.yml
that exports module Goemans directly and pins lean4export and nanoda_lib
by commit (stricter than the action's unpinned HEAD clones). The pinned
lean4export builds cleanly against the repo toolchain; permitted-axiom
set mirrors the action with sorryAx excluded.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
TJC-1814 Formalize Goemans gap paper in Lean 4: Rybin counterexample + Theorem A (ρ* worst case)
Formalization project for the Weaver/TJC paper "How Far Can Goemans's Cost Conjecture Fail?" (r3, 2026-07-23), per its Appendix A targets. Repo: MilestonesM1 — Counterexample (machine-checked refutation) ✅ done 2026-07-23
M2 — Theorem A upper bound (worst case): ρ(H) ≤ ρ = 2/(2√2−1) ≈ 1.0938363** ✅ done 2026-07-23
M3 — Sharpness + non-attainment ✅ done 2026-07-23
M4 — Section 5 formalization (gate collapse + Prop 5.1) ✅ done 2026-07-23
Working over ℤ for decidable checks (kernel |
Two failures surfaced on the inaugural CI run (30047099497), both fixed here:
rg --version— exactly the failure mode it was designed to catch loudly. The guard now usesgrep -qE(always present). Verified locally in both directions (no match on the real paper; synthetic@local/#importinput trips it).[package]table that Lake's TOML schema rejects (top-levelnameis mandatory; verified empirically), and it conflates the package name with the root module name (goemansvsGoemans). Replaced thenanoda:input with an explicit step inci.ymlandrelease.ymlthat exports moduleGoemansdirectly and pinslean4exportandnanoda_libby commit — stricter provenance than the action's unpinned HEAD clones. The pinned lean4export builds cleanly against the repo toolchain (checked locally). Permitted axioms mirror the action's default withsorryAxexcluded (equivalent tonanoda-allow-sorry: false).🤖 Generated with Claude Code