The Language-Distance Ruler
Currier A and B are the Voynich manuscript's two dialects — but is the split a change of language, or the same engine drifting? We built a ruler: a same-engine floor at zero, real language changes at the far end, and measured where A|B falls. It's a real structural seam (0.273 bits/char) — but only 31% of the way to the nearest real language boundary, about 3.2x too small to be a language. An independent blind 10-model panel, control-gated, agrees 6-0 (six of the ten cleared the gate). The seam is measured; what the system is stays unread.
Release 016 found the Voynich splits into two dialects— Currier A and Currier B, straight from the transliteration’s own metadata. 017 built a meaning-free machine that fakes the whole manuscript from three letters of memory. This one asks the question those two left open: the A→B shift is real — but is it a change of language, or the same engine drifting? A raw distance between them means nothing on its own, so we don’t report one. We build a ruler.
Where we land:held open. The A-to-B seam is real but only about a third of the way to the nearest language boundary we measured — far smaller than any language gap on our ruler; a blind, control-gated 10-model panel (LLMs, not independent of shared training) agrees — the six that cleared the gate, six to nil. Measured seam, unread system.
1 · A ruler, not a number
One instrument, three kinds of mark, all measured in the same unit — D, the extra bits per letter a foreign character-model pays over the nativeone (own-code interpolated add-α n-gram, every model capped to the same word budget so nothing looks closer just from more data):
- The floor— split Currier A into two halves, Currier B into two halves, and the meaning-free babble engine into two batches. These are one engine, two samples. They should read zero. Reported first, free-to-fail.
- The rungs— every pair among English, Latin, German, French. These are genuine language changes, close (same family) to far (cross family). This is what a real language boundary costs.
- The measurement— Currier A | B. Where does it fall between the two?
2 · What the ruler reads
Two facts, earned and marked. One: A and B are notthe same sample — at 0.273bits/char they sit far above the same-engine floor, so the A→B shift is a genuine structural change, not noise. Two: that change is far smaller than any language gap we measured.The closest pair of real languages we could find — French | Latin, which already share an alphabet and a deep common root — still costs 3.2× more. A and B are nowhere near that far apart.
And it holds when we deepen the instrument — raising the model from 2 letters of context to 3 pushes every distance up, but A | B stays low in the gap:
| instrument | Currier A|B | nearest language | % into the gap |
|---|---|---|---|
| order-2 | 0.273 | 0.863 | 31% |
| order-3 | 0.318 | 1.270 | 25% |
The read is the same both ways: whatever separates Currier A from Currier B, it is dialect-distance, not language-distance— one generative system re-tuned between scribes or sections, not two different tongues sharing a script.
3 · A second light
The ruler is the machine light. For a different kind of light we ran a blind cross-model panel— ten non-Anthropic models (OpenAI, Google, Meta, Mistral, DeepSeek, xAI, Alibaba) via the Vercel AI Gateway, each shown the same transliterated word-samples, pair order shuffled, the real question hidden among controls. Own-code (grade_gateway.py), and hard-gated: a model’s call on Currier A | B counts only if it first separates the controls — the same-split pair as one system, the two known language pairs as two. The gate did real work, discarding four models that failed in both directions (two over-split the same-system control; two called genuine languages one system). Of the six that got every control right, all six independently called Currier A | B ONE system re-tuned — six to zero, the same direction the ruler points. Two lights, two kinds, one read.
Verdict
Measured own-code on a floor-to-language ruler, the Currier A→B shift is a genuine structural change (0.273 bits/char, far above the same-engine floor of 0.00) but sits only 31%of the way to the nearest real language boundary — 3.2× too small to be a change of language. So the ruler discriminates: it rules out “identical” and it rules out “two languages,” landing the seam on one system, re-tuned— and a 10-model panel (LLMs, so not independent of shared training or prior Voynich scholarship), blind and control-gated, agrees 6–0. The ruler is calibrated only on between-language European pairs — it carries no within-language dialect rung — so “dialect, not language” is read by elimination, not direct calibration. We still don’t crown what that system is— the dark stays unread — but its famous internal border is now measured, and it reads as a dialect seam rather than a language wall.
Why our math sees more
Because it refuses to read a distance in a vacuum. “Currier A and B differ” is true and empty; the whole question is differ by how much, next to what.So we built the scale before we took the reading — a same-engine floor that must land on zero, real language changes for the far end — and let the measurement fall where it falls, in public, on an instrument that could have put A | B out with the languages and didn’t. That is the method: measure the dark against marks you laid down first, and read only what the ruler can hold.
Sources & method
instrument —own-code interpolated add-α character n-gram (ruler.py), orders 0..k mixed, symmetric cross-penalty D in bits/char; common budget 4000 train / 1000 test words per model; R=10 seeds, mean ± SD. Reported order-2 headline, order-3 robustness. Stdlib only.
corpora —Voynich: ZL transliteration (Zandbergen–Landini, EVA 2.0, voynich.nu), Currier A ~10.9k / B ~23.2k clean tokens. Languages: Project Gutenberg (Austen, Caesar, plus German & French plain texts), same own-code pipeline. Floor engine: the 017 babble Markov. Companions: Release 016 (structural pass) · 017 (the babble engine).
the third light — blind cross-model panel via the Vercel AI Gateway (grade_gateway.py, own-code, transliterated, control-gated), run 2026-07-07: 10 non-Anthropic models, 6 cleared the control gate, 6–0 for one system re-tuned. Independent corroboration; the ruler is the machine light and stands on its own.
method lay the scale before the reading · floor must land on zero · languages set the far end · read only what the ruler holds
ethos grade the held structure, not the collapsed answer · measure the dark against marks laid down first · no god number, a god hold
Dark Math The Observer’s Index — dark = the consistent, light = the medium of observation. The unread · arc 1 · the language-distance ruler.