feat(gate): DescriptionLengthGate — MDL promotion gate (sibling to HeldOutGate)#230
Merged
Conversation
A Minimum-Description-Length promotion gate, sibling to HeldOutGate, implementing the Builder/Breaker acceptance rule from Wang & Buehler, 'Self-Revising Discovery Systems for Science' (arXiv:2606.01444): L(M, D) = lambda * L_model(M) + L_data(D | M) accept M' over M iff L(M', D) < L(M, D) Both candidate and baseline are scored on the same enlarged evidence (every shared task, not just held-out). L_model is the gzip-bit size of the model text (a Kolmogorov-complexity proxy); L_data is the residual surprise -sum log2(score), capped at the score floor. A candidate that improves outcomes by bloating its model grows L_model faster than it shrinks L_data and is rejected (rejectionCode 'model_bloat') — a complexity-penalized alternative to HeldOutGate's overfit-gap heuristic, for when the model text whose size to penalize is available. Pure, deterministic, zero new deps (node:zlib). 9 tests.
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.
What
Adds
DescriptionLengthGate— a Minimum-Description-Length promotion gate, sibling toHeldOutGate, insrc/description-length-gate.ts. Implements the Builder/Breaker acceptance rule from Wang & Buehler, Self-Revising Discovery Systems for Science (arXiv:2606.01444, MIT LAMM):−Σ log2(score)over the shared tasks, capped at a score floor (a failed task costs ~10 bits, never ∞).Why merge it
HeldOutGateanswers "does the candidate generalize on held-out items?" via a paired-delta CI + an overfit-gap heuristic.DescriptionLengthGateanswers a different, complementary question: "does the candidate explain the evidence more cheaply?" — it charges the candidate for its own size, so a model that scores better only by bloating (memorizing counterexamples) growsL_modelfaster than it shrinksL_dataand is rejected withrejectionCode: 'model_bloat'. That's the principled, information-theoretic form of the overfit penaltyHeldOutGateapproximates — useful whenever the model text whose size you want to penalize is available (a prompt, skill, profile, or symbolic model). It needs no held-out split, which makes it usable in self-improvement loops where every task is accumulated evidence.It's a pure, additive primitive: a substrate gate alongside the existing one, callers opt in by constructing it.
Notes
node:zlib); no upward deps — substrate-pure.lambdais the lever).