SilverSight/tests/test_lean_witnesses.py
allaun cf6096882f chore: commit all pending work from prior sessions
Includes:
- n-dimensional generic modules (BraidStateN, MatrixN, SpectralN,
  ClassifyN, FisherRigidityN, FixedPointBridge)
- Feasible Set Theorem proofs + QUBO relaxation
- Anti-smuggle protocol (seedlock, mutation testing, cross_validate,
  qc_flag, symbol verification)
- Q16_16 bridge with quad matrix representation
- Infrastructure scripts (entry gate, determinism checks)
- Test suites for Lean modules, scripts, and QUBO pipeline
- FixedPoint migration and HachimojiN8 updates
- Documentation updates (ARCHITECTURE, GLOSSARY, DOCUMENT_SETS)
- QUBO conflict sweep and FSR validation
- GitHub Actions anti-smuggle workflow

Build: 3307 jobs, 0 errors
2026-06-30 04:54:40 -05:00

148 lines
5.5 KiB
Python

"""test_lean_witnesses.py — Verify Lean #eval witnesses match expected values.
Each module has #eval statements with -- expect: comments. This script
builds each module, captures the #eval output, and checks against expectations.
"""
from __future__ import annotations
import re
import subprocess
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parent.parent
# Modules to test: (module_name, build_target, timeout_s)
LEAN_MODULES = [
("SilverSight.FeasibleSet.Theorem", "SilverSightRRC", 60),
("SilverSight.FeasibleSet.QUBORelaxation", "SilverSightRRC", 60),
("SilverSight.CollectiveIntelligence.CostTransparency", "SilverSightRRC", 60),
("SilverSight.RRC.Emit", "SilverSightRRC", 120),
("SilverSight.RRC.Q16_16Manifold", "SilverSightRRC", 120),
("CoreFormalism.FixedPoint", "SilverSightFormal", 60),
("CoreFormalism.SidonSets", "SilverSightFormal", 60),
("CoreFormalism.InteractionGraphSidon", "SilverSightFormal", 60),
("SilverSight.PIST.Spectral", "SilverSightRRC", 120),
("SilverSight.PIST.FisherRigidity", "SilverSightRRC", 60),
("SilverSight.HachimojiN8", "SilverSightRRC", 60),
("SilverSight.HachimojiN8Bridge", "SilverSightRRC", 60),
("SilverSight.AVMIsa.Emit", "SilverSightRRC", 120),
("SilverSight.ReceiptCore", "SilverSightRRC", 60),
("SilverSight.RRC.ReceiptDensity", "SilverSightRRC", 60),
("SilverSight.PIST.Classify", "SilverSightRRC", 120),
("SilverSight.PIST.CartanConnection", "SilverSightRRC", 120),
("SilverSight.PIST.YangBaxter", "SilverSightRRC", 60),
]
def lake_build(target: str, timeout_s: int) -> tuple[int, str]:
try:
r = subprocess.run(
["lake", "build", target],
cwd=REPO_ROOT, capture_output=True, text=True, timeout=timeout_s,
)
return r.returncode, r.stdout + r.stderr
except subprocess.TimeoutExpired:
return -1, "TIMEOUT"
except FileNotFoundError:
return -2, "lake not found"
def extract_eval_output(build_output: str) -> list[str]:
"""Extract #eval output lines from lake build output."""
lines = []
for line in build_output.split("\n"):
if "info:" in line and "#eval" not in line:
# info lines contain eval results: "info: file.lean:123:4: <value>"
parts = line.split(":", 3)
if len(parts) >= 4:
val = parts[-1].strip()
if val and val not in ("0",):
lines.append(val)
return lines
class TestLeanModules(unittest.TestCase):
"""Build each Lean module and verify compilation."""
def test_all_modules_compile(self):
"""All Lean modules must compile (lake build)."""
failures = []
for module, target, timeout in LEAN_MODULES:
rc, out = lake_build(module, timeout)
if rc != 0:
failures.append(f"{module} (exit {rc}): {out[-200:]}")
if failures:
self.fail("\n".join(failures[:5]))
def test_specific_milestone_outputs(self):
"""Key #eval outputs must match expected values."""
# Build specific modules and check their eval output
test_cases = [
# (target, expected_eval_output_contains)
("SilverSight.RRC.Emit", "compatibleStructuralProjection"),
("SilverSight.RRC.Emit", "alignedExact"),
("SilverSight.FeasibleSet.Theorem", "Built"),
]
for target, expected in test_cases:
rc, out = lake_build(target, 120)
self.assertEqual(rc, 0, f"{target} build failed")
self.assertIn(expected, out, f"{target} eval output missing '{expected}'")
class TestLeanHachimoji(unittest.TestCase):
"""Hachimoji N8 correctness."""
def test_n8_compiles(self):
rc, out = lake_build("SilverSight.HachimojiN8", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
class TestLeanFeasibleSet(unittest.TestCase):
"""Feasible-Set Theorem and QUBO Relaxation."""
def test_theorem_compiles(self):
rc, out = lake_build("SilverSight.FeasibleSet.Theorem", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
def test_qubo_relaxation_compiles(self):
rc, out = lake_build("SilverSight.FeasibleSet.QUBORelaxation", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
def test_cost_transparency_compiles(self):
rc, out = lake_build("SilverSight.CollectiveIntelligence.CostTransparency", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
class TestRrcEmit(unittest.TestCase):
"""RRC Emit alignment gate."""
def test_emit_compiles(self):
rc, out = lake_build("SilverSight.RRC.Emit", 120)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
def test_q16_manifold_compiles(self):
rc, out = lake_build("SilverSight.RRC.Q16_16Manifold", 120)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
class TestCoreFormalism(unittest.TestCase):
"""CoreFormalism modules."""
def test_fixedpoint_compiles(self):
rc, out = lake_build("CoreFormalism.FixedPoint", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
def test_sidon_sets(self):
rc, out = lake_build("CoreFormalism.SidonSets", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
def test_interaction_graph_sidon(self):
rc, out = lake_build("CoreFormalism.InteractionGraphSidon", 60)
self.assertEqual(rc, 0, f"Build failed:\n{out[-300:]}")
if __name__ == "__main__":
unittest.main()