Repository navigation
Conversation
The joint-dual source manifest pinned the sha256 of the repository-wide Makefile, README.md and NOTICE. They are not inputs to the joint-dual computation, but nearly every contribution edits them, so `make verify-joint` failed with "AssertionError: Makefile" (or README.md) until the contributor re-pinned research/joint-dual/SOURCE.json and regenerated joint-dual-kappa.json and joint-dual-validation.json. These three files then conflicted on every rebase. Drop the three files from the pinned closure and re-pin. All other 48 pins, the kappa and the 47 strict constraints are unchanged; only the manifest digests in the two certificates change. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- verify-research: the 28 historical audits each write only their own certificate, so scripts/run_parallel.py runs them concurrently, slowest first (JOBS limits the processes; JOBS=1 runs them in order). - verify-tests: run_isolated_tests.py keeps one interpreter per test module and runs the modules concurrently; they write only temporary files. - make verify-parallel: runs every `make verify` group concurrently, each in a fresh git snapshot of the working tree (as CI does), and fails if a group changes a committed file. - formal-historical-verify: the Python circuit check runs alongside the Lean build. - CI: a new push to a pull request cancels the run for its previous commit. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
make paired-cube-verify drops from 27.7 s to 14.3 s, and paired_cube_producer.py from 24.6 s to 11.2 s. The regenerated graph, frames, selection and report are byte-identical; the network certificate changes only in the pinned sha256 of frames.py. - basis(): reduce a new row only by the pivots set in it. The rows stay reduced, so the order does not matter and the output is unchanged. - contained(): min(x, x^y) equals x^y exactly when x has the top bit of y, so test that bit directly; first reject when span(A) leaves the union of the supports of B. - perp(): memoize; it is called 130k times with 43.5k distinct arguments. - New caches are bounded like the existing contained() cache. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Thank you @eumemic. This contribution is now recorded on main in the scoped reconciliation review and contributor credits. Contribution: Isolated parallel verification runner and frame-equivalence work. Review and limits: Adapted runner integrated actively, with positive-job validation and correct tracked/ignored-file snapshots; six new adversarial tests. Historical optimizer retained separately with existing 12,000-case equivalence evidence; no blanket runtime benchmark claimed. The complete original source, proof/research notes, notices and relevant replay/CI evidence are retained through the pinned source archive. The review distinguishes fresh runs, exact-head historical CI and prior integration evidence. Closing this historical PR as reconciled; its obsolete headline does not replace the current selected bound, and draft/retracted claims retain their explicit qualifications. Reviewed head: |
Change and mathematical scope
No mathematical change. Kappa, constraints and certificate values are unchanged. Two joint-dual certificates change only in the source-manifest digests they bind.
Makefile,README.mdandNOTICEin the joint-dual freeze.research/joint-dual/SOURCE.jsonpinned these repository-wide files, so any PR that edits them failsverify (*, joint)withAssertionError: Makefile(orREADME.md) until it re-pins and regeneratesjoint-dual-kappa.jsonandjoint-dual-validation.json. This was the failure in most recent failed PR runs, including Raise conditional kappa to 4.611281e-4 with tightened adapter toll #148. 59 of the 100 open PRs carry that re-pin, so they all conflict with each other on those three files, and every merge to main repeats it. The three files are not inputs to the joint-dual computation. This removes them from the pin script and fromcheck_sources, re-pins, and regenerates the two certificates.scripts/run_parallel.py, standard library only):verify-research: each of the 28 historical audits writes only its own certificate. I confirmed this by recording every file each command opens. They now run concurrently, slowest first.verify-tests: still one interpreter per test module, now several modules at a time. The modules write only temporary files.JOBSlimits the number of processes. The default is one per CPU and per 3 GiB of memory, since the largest audits use 3.1 GB.JOBS=1restores sequential order.make verify-parallel: runs everymake verifygroup concurrently, each in a fresh one-commit git snapshot of the working tree (tracked files plus untracked, non-ignored files). It fails if a group changes a committed file. This is the same isolation and reproducibility check CI makes. Logs go tobuild/verify-parallel/.make verifyitself is unchanged.formal-historical-verify: the Python circuit check (about 95 s in CI) runs alongside the Lean build.scripts/paired_cube/frames.py, the Paired cubes and shared completed cores for conditional kappa = 4.609169e-4 #144 code every current contributor builds on):make paired-cube-verifydrops from 27.7 s to 14.3 s, andpaired_cube_producer.pyfrom 24.6 s to 11.2 s. The regenerated graph, frames, selection and report are byte-identical. The network certificate changes only in the pinned sha256 offrames.py. The changes:basis()reduces a new row only by the pivots set in it.contained()tests the top bit of each row directly, which is equivalent tomin(x, x^y), and first rejects when A's support leaves B's.perp()is memoized: 130k calls have 43.5k distinct arguments.Validation
CI timings below are from the main run 37886960787 (Python 3.13). The other timings are from a 96-core c7a machine with Python 3.12.
verify-research, 4 coresverify-tests, 4 coresmake verify)make verify-parallel)make verify-parallelpasses all 14 groups and changes no committed file (four runs, the last on this exact three-commit tree). Peak memory with all groups at once is about 12.5 GB.JOBSand 4 pinned cores,verify-researchandverify-testspass and leave the tree clean.pin_joint_dual_sources.pyfollowed byverify_joint_dual.pyreproduces kappa = 4764513337/10^14, all 47 strict inequalities and all seven margins. All 48 remaining pins match.verify-research(9.3 min). After this change, the longest jobs should beformal (historical),joint,producersandclones, at about 5–6.5 min. This PR's own CI run will show the actual times.These are measured slow spots that this PR does not change:
data_corners.cppcheck, with an identicaldata-corners.jsonoutput, runs in five producers: copied-fixed, pair-assembly, skip-strips, skip-suffix and split-skip. Each run takes about 2 min single-threaded, which adds about 10 min to a full verification and about 30 CI job-minutes to each push. Those producers are hash-pinned, so removing the duplicates means re-pinning their certificates.joint_dual_reclaim_compiler.acquire(243 of 277 s, mostly 570ksortedcalls inside a loop),quadratic_affine.inner(168 s),partial_swap/positive.run(214 s) andternary_side.build(131 s).🤖 Generated with Claude Code