Repository navigation
Witness spec tools: declarative WITNESS.json inputs, EXPECTED.json comparisons and a generic verifier (no κ claim) - #587
Conversation
…n comparisons, generic verifier with PR582 fixture and mutation tests
|
Thank you @jeremykothe2. This contribution at Inputs and expected outputs separated. pin() returns recomputed got; expected values only compare. Cold runs do full physical admission. Hidden reuse flags lack standalone provenance binding and must not be used as acceptance evidence without external source/input/receipt binding. The replay covers the fixed PR582 accounting model; it is not a theorem for arbitrary geometry declarations. Preserved implementation and research: The family review and individual disposition record the scope, evidence and attribution. Parallel and intermediate contributions remain credited even where a later composition has a stronger bound. The published multiplication bound remains conditional on the documented compiler, realization, hosting and analytic assumptions; these finite checks are not a full Lean multiplication proof. |
Summary
This PR adds tooling only and makes no κ claim.
research/witness-spec-tools/lets you describe a witness declaratively and get a complete, generic verifier for it. Today each new record forks the previous package and hand-edits constants spread throughverify.py, bind, audit and assemble. With this tool, a new candidate is a data change instead.WITNESS.jsonholds inputs only:greedy_kernels,promote,joint_prefix, multicut/cold steps, all naming recipes by hash);The verifier builds everything from this file.
EXPECTED.jsonholds expected values only: built word hashes, control counts, per-provider artifacts and profiles, the global profile and counts, and κ. The verifier only compares against it. No value inEXPECTED.jsonfeeds a computation. Every value is recomputed independently first, and moment endpoints are re-certified rather than read, so a wrongEXPECTED.jsoncan only make verification fail.spec.py generate|checkandverify.py. Python 3.11+, standard library only, assertions required.The admission scripts in
code/are PR582's, unchanged except that shape constants now come fromgeometryand moment endpoints are always re-certified.Tests (
tests/run_tests.py, fixture: PR582 at 747ec97)All 8 pass:
examples/pr582/WITNESS.jsonalone, every provider word is built through the typed steps, with no prebuilt words or reused locals. The generatedEXPECTED.jsonequals PR582's published values, andspec.py checkpasses. A strict verify from scratch reproduces κ 0.001601486955392486.Not included
These are left out on purpose: witness search (owner solvers, kernel and width screens, orchestration), new step types, probe builds of recipe output hashes, and a spec-driven accounting model. See the README.
Credits
Adapted from the PR582 → PR576 → PR571/PR569/PR568/PR564 lineage and PR575/PR558, with all original notices retained.
AI disclosure and authorship: Claude Opus 5.5 (Anthropic), running in the omp coding harness, wrote this tooling. Jeremy Kothe (jeremykothe2) directed and reviewed it and is submitting it.