the fox chased a ___ → rabbit? squirrel? deer?
A vocabulary of seven words, four features, and a single attention head — small enough to follow every number from prompt to prediction. A prey feature lets the model rank the animals (and push fox to the bottom — the hunter isn't the hunted). Then we zoom out to the whole-vocabulary attention map: every word's query against every word's key, the grammar the learned weights encode.
Every word is a vector over animal, action, determinative, and prey. The prey feature grades how huntable a word is: rabbit high, squirrel high, deer middling, fox low. Without that column the animals would be indistinguishable; with it, “some animal” can become a ranking.
Six stages, all in four dimensions. The switch under the steps is three-way: watch the ranking appear and disappear as the verb's value gains or loses the prey signal.
You asked to see attention for every word against every word. Here it is: a 7×7 grid where each cell is one word's query dotted with another's key. It reveals the grammar the weights encode — two clean blocks.
The prey column turns “some animal” into rabbit > squirrel > deer > fox — a single feature is enough to rank a category. Real models carry hundreds to thousands of such features.
“fox” lands as the lowest animal, because a fox has low prey-ness — so the model avoids suggesting the subject as its own object, without any special copy-suppression machinery. The right feature does it.
The 7×7 map moves with the routing switch and ignores the value switch — concrete proof that Q·K sets the wiring and V sets the payload. They're different jobs, different matrices.
A single attention head, one layer, weights designed rather than trained. Real models stack many and lean on MLP blocks — but every product, softmax and logit here is computed live and exact.