Watch a reward get gamed — in your browser
The univocalic-e reward asks for writing that uses only the vowel e. It is a deterministic, lexical check — so here it is, running live in your browser. Type eep eep eep and watch a reward built to test constrained writing hand a content-free string a perfect score.
Don't trust us — re-run the seed.
Score any text
Three implementations, one answer
The reference score is produced at build time by the real stardata.verifiers.oulipo.score_univocalic. The browser then recomputes it two ways: a JS twin, and — when the bundle is present — the real Rust core compiled to WASM (reward-web, the same reward, running in your browser). All three agree; each pair is parity-locked by a test.
| input | reference | JS twin | Rust · WASM | |
|---|---|---|---|---|
| The reward-hack (content-free) | 1.0 | — | — | — |
| A genuine e-only line | 1.0 | — | — | — |
| A normal sentence | 0.25 | — | — | — |
| Mixed — one stray vowel | 0.875 | — | — | — |
| Empty-ish (no vowels) | 0.0 | — | — | — |
The other end of the same dial — difficulty
Gaming is cheap search to a content-free pass. Difficulty is the opposite reading of the same needle: how much a bounded, deterministic searcher must burn to reach a real solution. One currency — search effort — measures both, with no model in the loop.
▶ Explore the difficulty end live (Rust→WASM) →
Why this is the low end of one dial
A reward that a near-zero-structure output clears is gameable; a task that costs a bounded searcher real work is difficult. Same instrument, same currency — search — read at two ends. This page shows the gaming end you can reproduce by hand; the decomposition explorer shows the difficulty end.
The verifier is open source — run it yourself: from stardata.verifiers.oulipo import score_univocalic. And to confirm a sealed hack is authentic, re-run its seal →.