π― Signal β week one
A three-minute run where you find what's wrong. One thumb, three lives, and some
items with nothing wrong with them at all β which is the part that actually
measures something.
./serve.sh # then open the URL it prints
./run-tests.sh # 47 checks, including 10,000 items re-verified independentlyThis is the week-1 slice from The Build Decision:
prove the loop is worth repeating before building any economy on top of it. There
are no accounts, no credential, no earning. One question: does anyone play twice?
What's in it
Six item kinds, all generated, none authored: arithmetic chains, number
sequences, odd-one-out, spelling, receipts that may not add up, and short
"does the conclusion follow" problems. A run mixes them freely.
The five difficulty knobs are in from the start, because they are far easier
to design in than to retrofit:
| Knob | At the shallow end | At the top |
|---|---|---|
| Lines to scan | 2 | 6 |
| Salience | glaring | one digit |
| Base rate | every item is flawed | half are clean |
| Decoys | none | several |
| Ambiguity | none | real |
The base rate is the interesting one. At level 1 something is always wrong, so a
new player learns the verb. As it climbs, clean items arrive β and the skill
quietly changes from spotting things to not inventing them. That second skill
is the one that transfers to real work, where a false positive wastes someone's
afternoon.
The staircase. Three right in a row steps difficulty up; one wrong steps it
down harder. The step starts large and shrinks with experience, so a quick player
is out of the shallow end within a minute and a slower one is never yo-yoed. Nine
correct answers reach level 3; thirty pass halfway. Someone getting one in four
right stays in gentle water indefinitely.
The measurement. Every answer lands in one of four boxes β hit, miss, false
alarm, correct rejection β and the run reports precision, false-alarm rate and
dβ², the signal-detection measure of how well you actually separate wrong from
right. dβ² is the point: a player who finds every error by calling everything
wrong scores 0.74 where a genuinely accurate player scores 4.28. No other number
on the screen can tell those two apart.
The tests are the interesting part
tests/core.js doesn't trust the generators. It re-does the arithmetic itself on
10,000 items across every difficulty and insists that every clean item really
is clean, every flawed item has exactly one broken line, and the broken line is
genuinely broken. A game whose whole premise is "find what's wrong" cannot afford
to be wrong about what's wrong.
tests/wiring.js boots the page against a DOM stub and actually presses the
buttons, because a dead button once got past a static check in this estate.
Both found real bugs on the first run: a missing cap() that crashed the
odd-one-out generator, and a clock that stayed blank for the first 200ms of every
run.
What is deliberately not here
No accounts, no daily seeded run, no lens drafts, no credential, no earning. Those
are weeks 3β6 and they all depend on the answer to week 1's question. The seeded
RNG is wired and tested so the daily run can drop in later without a rewrite.