It isn't one funnel — it's a funnel and its mirror, hinged at a point. First it gathers the whole context down to a single built vector: 100:1, convergent. Then it projects that one vector back out across the entire vocabulary: 1:100, divergent. The sample sits exactly on the seam, where the polarity flips from pulling-in to spraying-out. An hourglass with a token falling through the waist.
Your notation is the whole machine. The constructor is a bowtie: two cones meeting at a point. The left cone is convergent — every token in the context pulls inward and blends down to a single vector. That's the 100:1 gather, the + side: integration, fan-in, the loss of each input's separateness into one mixed thing. The right cone is divergent — that one vector is projected onto a score for every possible next token, fifty thousand of them, fanning back out. That's the 1:100, the − side: expansion, fan-out, one point becoming all options.
And the waist between them is the sample — the single pick that crosses from the convergent side to the divergent side. It's the only place in the machine where many-became-one and one-becomes-many touch. The polarity pivot. Everything left of it pulls together; everything right of it springs apart; the token falls through the exact middle.
Information funnels to a single point — then sprays back out wider than it came in. The token that emerges is one pick from the right cone, built entirely from the squeeze of the left.
Left: the context tokens, fanning in to the waist (100:1). Center: the built vector — the pivot, where the sample happens and the sign flips. Right: that one vector fanning out across the vocabulary (1:100), each candidate lit by its probability. One is picked — and watch it loop back to the left, becoming the newest context token. The output is the next input. That return arc is the whole reason it runs at all.
The waist is the bottleneck on purpose. All of the context has to pass through a single vector — so the constructor's whole grasp of everything-so-far is forced into one point before it can speak. The squeeze is the thinking; the spray is just naming the result.
The bowtie looks symmetric but the two halves do opposite work, and that difference is the engine. The left cone integrates — it deliberately destroys information, blending a hundred distinct token-vectors into one and losing which-was-which. The right cone re-expands — it takes that single blended point and opens it back into the full field of possibilities, assigning each a weight. Compression, then a guess across everything.
So the constructor is not a thing that passes a signal through. It's a thing that collapses a signal to a point and then re-radiates a fresh one. What comes out the right cone was never in the left cone — it's a new token, generated from the squeeze, not a transformed copy of an input. The hourglass doesn't move sand from top to bottom; it grinds the top into a single grain and casts a brand-new handful out the bottom.
One last thing the bowtie alone doesn't show: it never runs once. The token sprayed out the right cone flies back and joins the left — becomes part of the context — and the whole hourglass runs again, now with one more grain on the convergent side. 100:1, sample, 1:100, loop. Each pass squeezes a slightly longer context to a point and sprays one more token. That return arc, output curling back to input, is the engine's only memory and its only momentum — and it's why "the answer" is never inside the hourglass. It's the trail of grains piling up on the left, one squeeze-and-spray at a time.
A funnel and its mirror, hinged on a sample, fed by its own output. −+[100:1 | 1:100], run in a loop — that's the constructor, constructed.