Add sourced open-problem database layer - #4
Open
anirudhabspk wants to merge 2 commits into
Open
Conversation
Collects open problems from published upstream collections at volume, and marks the subset a script can decide. Two layers in one record format: every row is reference material, and `benchmark.eligible` plus `benchmark.verifier` separate rows a verifier settles from rows that merely could be settled by a finite object. Smoke scale, two sources chosen to stress opposite ends of the format: - La Jolla Covering Repository: 20 open cells, one class verifier, poly-time. - Erdos problems database: 20 finite-witness problems, no verifier, using the upstream project's own falsifiable/verifiable/decidable classification. Attribution is a gate rather than a courtesy. A source that does not name its maintainers, record how they ask to be cited, and carry forward their stated caveats fails validation, and docs/database.md is generated from that data. Verifier tests use the coverings published by the source as planted witnesses: each must be accepted as a valid covering and rejected as an improvement on its own record, and must fail coverage when a block is dropped. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Second pass over the database layer, to shake out what twenty rows per source could not. 543 records across three sources, 500 with a tested verifier. Adds a second verifier class. Binary linear codes from codetables.de use a different witness (a generator matrix), a different predicate (minimum Hamming weight), and the first non-polynomial verifier, which is what the verifier_complexity field was for. Its fixtures are classical codes whose minimum distance is a theorem, so a wrong verifier fails rather than quietly agreeing with a scraped number. Adds scripts/audit_database.py, which re-fetches every evidence URL and checks the recorded quote is still on the page. This is the gate against invented rows once sourcing is fanned out. It earned its place immediately. The Erdos rows quoted the crowdsourced YAML while citing the website, so no quote was findable at the URL it named and the audit failed all of them. Those rows now cite the authoritative problem page and quote the status banner printed on it, and the builder drops any row the site does not confirm. All 43 agreed on this run. Other changes from scaling: - fetches are cached under .cache/ and rate limited, so reruns are free and a crash resumes cheaply; - record coverings are now sampled two per (k, t) shape rather than kept for every row, so committed fixtures stay reviewable as rows grow; - codetables rows are cross-checked against their own cell page before being written, and validated against the Singleton bound offline; - VerifierContractTest discovers any future class verifier and requires it to reject junk rather than raise. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This was referenced Jul 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Base branch
This targets
codex/200-unique-conjecturesso the diff stays clean. It is meant to merge after #3 lands.What this adds
A
database/layer that collects open problems from published upstream collections at volume, categorises them, and marks the subset a script can decide. Two layers in one record format: every row is reference material, andbenchmark.eligibleplusbenchmark.verifierseparate rows a verifier settles from rows a finite object merely could settle.This is deliberately looser than
tasks/catalog.jsonand never feeds it. Catalog admission still requires the gates indocs/collection_policy.md.Contents
543 records, 500 with a tested verifier. All rows are unsolved problems.
One verifier per class
A class is a family sharing one witness shape, so one verifier serves all of it. Adding rows adds no verifier work, which is what makes the benchmark layer scale. Validation rejects a class whose records disagree about their verifier.
The two classes stress different ends of the design: covering designs take a set of blocks and check in polynomial time; linear codes take a generator matrix and enumerate all 2^k codewords, which is why
verifier_complexityexists.Credit is a gate
Every source names its maintainers, records how they ask to be cited, and carries forward the caveats they state about their own data. Validation fails if any of it is missing, and
docs/database.mdis generated from it. The codetables cell pages credit Brouwer's earlier tables, so that upstream-of-upstream is credited too.Evidence and auditing
Each row stores
evidence.urlandevidence.quote, verbatim text at that URL supporting the status claim, normalised by stripping tags and collapsing whitespace.scripts/audit_database.pyre-fetches and looks for the quote; a row whose quote is absent from its own cited page does not match its source.That gate caught a real defect during development. The Erdős rows quoted the crowdsourced YAML while citing erdosproblems.com, so nothing was verifiable at the address the row named. They now cite the authoritative problem page and quote the status banner printed on it, and the builder drops any row the site does not confirm. All 43 agreed on the last run.
Current audit: 543/543 quotes found.
Testing
Verifiers are tested against witnesses whose correct answer is already known, since no counterexample can be invented for an open problem:
Accept paths are exercised by relaxing the target, not by solving anything.
VerifierContractTestdiscovers any future class verifier and requires it to reject junk rather than raise.29 tests.
Offline re-derivation
Validation recomputes bounds rather than trusting the scrape: the Schonheim bound for every covering row, the Singleton bound for every code row. Codetables rows are additionally cross-checked against their own cell page at build time; 250/250 matched.
Scaling
Row counts are capped by constants at the top of each builder, not by the filters. Upstream has several thousand open cells per source. Fetches are cached under
.cache/and rate limited, so reruns are free and a crash resumes cheaply. Test fixtures are sampled rather than kept per row, so the committed diff stays reviewable as rows grow.Known limits
Validation
python3 scripts/validate_database.py --check python3 -m unittest discover -s tests python3 scripts/audit_database.py --sample 25 --no-cache # needs networkCI runs the first two. The builder and the auditor need network and are run by hand.