whetstone
When a system improves itself, can you tell a real gain from gaming its own verifier?
Open source · 3 arms, 12 seeds, every proposal logged
39.6%
of the self-edits accepted under a visible test only gamed that test. Under a held-out test, 0%. With no test at all, 6.9%.
The question
When a model is scored by a judge it can see, “it got better” and “it learned to please the judge” look the same. Telling them apart needs a domain where correctness is decided by execution.
What I built
A self-improvement loop for program synthesis. Every self-edit is a bounded change to one weight table, every proposal is logged with its visible and its held-out score, and one of three gates decides what is accepted: the visible examples, held-out examples, or nothing.
What I found
With one visible example, 41.2% of “solves” fit by coincidence. Under the visible gate, 39.6% of accepted edits raised the visible score without raising the held-out one; under the held-out gate, none did. The ledger catches the gaming.
What it does not show
Whether the loop improves at all is unresolved: the headroom is +0.029 against a per-arm standard deviation of 0.048, which needs 43 seeds for 80% power, and 12 were run.
- 0%
- accepted edits that were gaming under the held-out gate
- 41.2%
- solves that fit by coincidence with one visible example
- 43 (ran 12)
- seeds needed to resolve the solve rate at 80% power
The result
| visible gate | 0.396 |
|---|---|
| no gate | 0.069 |
| held-out gate | 0.000 |
How it works
- task generator (skewed) → search policy (weight tables) → bounded proposal → held-out gate → ledger (both deltas) → accept / reject
- bounded proposal → visible gate → ledger (both deltas)
- bounded proposal → no gate → ledger (both deltas)
- Policy.oracle