Waiting Its Turn
There is a stage in the middle of you that runs exactly one decision at a time. This page will put a second decision in the queue behind the first, measure how long it stood there, and then make a hard job cost you nothing at all by hiding it inside the wait.
The last two pages in this lab measured how expensive one decision is: your hand as a channel with a bit rate, then choosing as a channel with a bit rate. This one asks something else. How many decisions can you make at the same time?
The answer is one. Not one at a time is faster. One. Somewhere between recognising a thing and deciding what to do about it there is a stage that will not run twice at once, and when a second job arrives while the first is inside it, the second job stands in a hallway and waits. Telford called it a refractory period in 1931, borrowing the word from neurons. Welford gave it its shape in 1952.
Which is a strange formula to meet, because the number in front of SOA is not a parameter anyone gets to fit. It is minus one. Every extra millisecond of head start you give the first task is one millisecond less that the second one spends waiting. That is the whole model, and your hands are about to vote on it.
Anyone can show that two jobs at once are slower than one. That is not a discovery, it is arithmetic about effort. The queue claim is far sharper: it says the wait sits at a specific place inside the second task, with stages in front of it that run freely while the first task is still busy.
So: make the letter hard to see. Drop its contrast until resolving it takes an extra fifty or eighty milliseconds. That cost is paid in front of the queue, and in the queueing region it lands inside a wait that was going to happen anyway. The algebra says the two terms cancel exactly.
short head start → the faint letter costs nothing at all
Same letter, same eyes, same page. A difficulty that is real when the task is alone and free when the task is queued. It has an ugly name, underadditivity, and it is the headline here: three measured numbers, one of which is supposed to be zero.
If you hold your first answer and fire both keys together as one packet, you produce a gorgeous minus-one slope for entirely the wrong reason. You would not be queueing, you would be batching, and nothing afterwards can separate the two.
So the gap between your two presses is measured on every trial, trials under 100 ms are discarded, the rate is printed, and above 40 percent the headline is refused outright. The instruction that fights it is the only one that matters on this page: answer the tone the instant you hear it, without waiting to see the letter.
- The head start is measured, never assumed. The tone lives on the audio clock and the letter on the display clock, so the interval that actually happened is not the one that was requested. The audible onset comes from the browser's own output-timestamp, the painted onset from the animation frame after the one that drew it, and every regression below runs on that measured difference, trial by trial.
- Unadmitted audio latency is a constant. It shifts every head start down and every tone reaction time up by the same amount, which a slope cannot see, a difference of differences cannot see, and the elbow comparison cannot see either, because both sides of it move together.
- The intercept is therefore never interpreted. That is where your machine lives, and this page will not pretend to know how much of it is you.
- What can reach a slope: jitter rather than lag, so frame gaps are metered live and printed, and a browser that coarsens its clock against fingerprinting is caught by recovering the quantum from your own numbers.
- 🔊 Sound on. Half of this experiment is a tone. There is a three-tone check before anything is recorded.
- ⌨️ Left hand on D and F: low tone, high tone. Right hand on J and K: the letter X, the letter O. Touch works too, with four buttons.
- ⚡ Tone first, always, the moment you hear it. Then the letter.
- 🌫️ Some letters are deliberately faint. They are meant to be slow, not impossible. Do not slow down for them on purpose.
- 🧊 Three short practice blocks, thrown away. Then six scored ones.
- ⏱️ About seven minutes. Everything stays in your browser, nothing is recorded, nothing leaves the page. Escape aborts.