the assay office / record
The Rule at the End of the Line
Written 2026-09-29. Claims re-read against their sources on 2026-09-29: 40 checked, confirmed, 1 wrong, 0 unverifiable, 6 first-hand observations checked against their record. By claims-pass subagent (Claude Code, Opus 5.5), one agent on oversight/claims-pass.md, before publish (page in working tree only; live URL 404 as expected).
Reader-side check (steps 2-3, adjusted because the page is not deployed). Live: https://artwaste.land/strata/is-the-voynich-manuscript-a-hoax/ -> 404, and /checks/verify-is-the-voynich-manuscript-a-hoax.mjs -> 404 (expected, not a finding). Scratch copy outside the repository holding only verify-is-the-voynich-manuscript-a-hoax.mjs, public/strata/is-the-voynich-manuscript-a-hoax/ and public/strata/is-the-voynich-manuscript-a-language/: `node verify-is-the-voynich-manuscript-a-hoax.mjs` -> exit 0, 70 passed, 0 failed, one "SKIP generator runs" line (the repository-only checks of section 6 are skipped there; the metadata.csv check is skipped silently). Inside the repository (read-only run): exit 0, 76 passed, 0 failed. node v22.22.2. Step 6 (self-reading verifier): the page prints no transcript of the verifier. In the scratch copy, changing a sentence figure makes it fail as it should ("falls from 0.137" -> 0.237: FAIL; "17 of the 20" -> 18: FAIL; "2.91 to 3.02" -> 2.81: FAIL). Worded figures it does not read from the page: "about a tenth", "a third of the manuscript at the line start", "Their 38 public transcriptions", "36 are long enough" (each changed alone: still 70 passed). They are true, so this is only a coverage note. Source record: `node assay/sources.mjs is-the-voynich-manuscript-a-hoax --online` -> offline sound; 8 FOUND, 11 UNREADABLE (PDFs), 8 in the repository; 2 "DOI MISMATCH" lines that are false alarms, because the claim fields are sentence fragments that do not name the authors (Crossref agrees with the page's citations; see below). Every UNREADABLE PDF was fetched live and pdftotext'd for this pass.
Claims
- CONFIRMED Timm and Schinner's generator, "published in Cryptologia in 2020 as <q>a concrete text-generator algorithm (the "self-citation" process), easily executable without additional tools even by a medieval scribe</q>"
https://api.semanticscholar.org/graph/v1/paper/DOI:10.1080/01611194.2019.1596999?fields=title,abstract,year,venue : live abstract contains the quotation verbatim; Crossref: Cryptologia 44(1) 1-19, published online 2019-05-25, in print 2020-01-02 - CONFIRMED Volunteers were told to <q>create a 'document' by filling three pages with fake, meaningless text in a 'language' that you make up as you go</q>
https://ceur-ws.org/Vol-3313/paper4.pdf : p. 2, verbatim: "Volunteers were given an instruction sheet telling them to "create a 'document' by filling three pages with fake, meaningless text in a 'language' that you make up as you go." - MINOR "Their conclusion was that gibberish of this kind <q>is able to replicate either natural language or Voynichese across nearly all of the metrics which we tested</q>"
https://ceur-ws.org/Vol-3313/paper4.pdf : the words are verbatim, but the sentence they come from makes it depend on the sample: "We find that "gibberish" writing varies widely in its statistical properties and, depending on the sample, is able to replicate either natural language or Voynichese across nearly all of the metrics". "gibberish of this kind" leaves that out and reads as a property of all of it - CONFIRMED and that the results <q>refute the idea that the low-level linguistic structure of the VMS text is too non-random to be meaningless</q>
https://ceur-ws.org/Vol-3313/paper4.pdf : abstract: "We argue that these results refute the idea that the low-level linguistic structure of the VMS text is too non-random to be meaningless." - CONFIRMED They also wrote that <q>our writing samples are too short to test whether the higher-level structure of VMS pages and quires could also be produced by gibberish</q>
https://ceur-ws.org/Vol-3313/paper4.pdf : abstract, verbatim - CONFIRMED volunteers mostly students on a Yale course about the manuscript (2018 class before studying its statistics, 2019 class later in the semester), plus three members of the public who did not know the connection, plus the authors
https://ceur-ws.org/Vol-3313/paper4.pdf : p. 2: "Thirty-nine participants were students ... (19 from the 2018 class, where the exercise was carried out before students had become familiar with the statistical properties of the VMS text, and 20 from the 2019 class, where the exercise was carried out later in the semester). An additional three participants were recruited from the public and had no knowledge of the study's connection to the VMS. Three writing samples were also contributed by the authors." - CONFIRMED by hand, in pen
https://ceur-ws.org/Vol-3313/paper4.pdf : p. 2: "handwritten documents"; "participants were instructed to write in pen without punctuation" - CONFIRMED "the volunteers wrote one each, and the authors contributed three"
https://ceur-ws.org/Vol-3313/paper4.pdf : 42 volunteers + 3 author samples = 45, the row count of research/voynich-machines/upstream/gaskell-bowern-metadata.csv (19 "2018 class", 20 "2019 class", 3 "Agnostic", 3 "Experimenter") - CONFIRMED Gaskell and Bowern report that gibberish repeats words more than meaningful text does
https://ceur-ws.org/Vol-3313/paper4.pdf : abstract: "gibberish tends to exhibit ... higher repetition of words and characters, including triple repeats"; p. 4: "higher mean occurrences of repeated characters and words" - CONFIRMED under their modified MIT licence, which asks that the paper be cited
https://raw.githubusercontent.com/danielgaskell/voynich/main/README.md : "Any publications making use of the Software and Datasets, or any substantial portions thereof, shall cite the Software and Datasets's original publication" - CONFIRMED In 1976 the cryptanalyst Prescott Currier told a seminar that <q>the line is a functional entity</q> in the manuscript
https://www.voynich.nu/extra/curr_main.html : "The first point is that the line is a functional entity in the manuscript on all those pages where the text is presented linearly."; D'Imperio (ed.), Proceedings of a Seminar, dated 30 November 1976; Currier's "cryptologic career" began in 1935 - CONFIRMED because <q>the frequency counts of the beginnings and endings of lines are markedly different from the counts of the same char-acters internally</q>
https://www.voynich.nu/extra/curr_main.html : verbatim, hyphen included; it is the first of Currier's "three things" - CONFIRMED In 2014 Torsten Timm offered an explanation in which the line ending is an accident of the method (block quotation, p. 19 of v3)
https://arxiv.org/pdf/1407.6639v3 : block quotation verbatim on p. 19 of v3; "Both observations" there covers the position-typical glyphs (including "62% of the occurrences of the p-glyph ("m") are at the end of a line") and the length of line-first words, and the explanation names "the beginning or at the end of a line", so "the line ending is an accident of the method" is a fair gloss - CONFIRMED Timm replied that <q>the context dependency only points to a self-referencing system</q>
https://arxiv.org/pdf/1407.6639v3 : footnote 67, a reply to Montemurro and Zanette by name: "In fact, the context dependency only points to a self-referencing system, but this alone is not enough to allow the conclusion that this must be a linguistic system." - CONFIRMED Montemurro and Zanette (2013) argued ... it has <q>a complex organization in the distribution of words that is compatible with those found in real language sequences</q>
https://journals.plos.org/plosone/article/file?id=10.1371/journal.pone.0066344&type=manuscript : abstract, verbatim; Crossref 10.1371/journal.pone.0066344 = Montemurro, Zanette, PLoS ONE 8(6) e66344, 2013 - CONFIRMED on parchment radiocarbon dated to between 1404 and 1438
https://www.voynich.nu/papers/Carbon_GH_2009.pdf : Figure 7, "Weighted Mean Age (n=4)": "1404AD (95.4%) 1438AD". The live PDF is byte-identical to the kept copy. The record's excerpt is the wrong lines: it quotes Figure 2 (Leaf #26, 68.2%), not the Figure 7 its "where" names - CONFIRMED ZL 3b, CC0, from voynich.nu
https://www.voynich.nu/roadmap.html : "they are being made available at this web site in accordance with the Creative Commons CC0 licence" - CONFIRMED a second, independent transliteration (Takeshi Takahashi's)
https://www.voynich.nu/data/000_README.txt : "IT2a-n.txt: The transliteration by Takeshi Takahashi, as included in the interlinear file by Jorge Stolfi in 1999" - CONFIRMED This is their own program (MIT licence)
https://raw.githubusercontent.com/TorstenTimm/SelfCitationTextGenerator/master/LICENSE : "MIT License / Copyright (c) 2019 Torsten Timm"; live file byte-identical to research/voynich-machines/upstream/LICENSE - CONFIRMED the ten-entry table printed on the page is finalLineReplacementsStrings in Glyph.java
research/voynich-machines/upstream/Glyph.java : lines 220-231, entry for entry; live raw.githubusercontent.com Glyph.java byte-identical to the upstream copy - CONFIRMED "The special case for the last is on line 321 of the same file"
research/voynich-machines/upstream/SelfCitationTextGenerator.java : line 321 `String newToken = Glyph.replaceLineFinalGlyph(lastToken);` inside tryToTrim (313-357), whose only caller is line 264. Bytecode of the jar agrees: tryToTrim is the only caller of replaceLineFinalGlyph, and Glyph.endsWithEndGlyph is never called - CONFIRMED a second rule throws away an exact repeat of the previous word half the time (commented // limit repeated words)
research/voynich-machines/upstream/SelfCitationTextGenerator.java : lines 232-236: `if (equalLastGroup) { ... useMorphedGroups = rand < 50; }` - CONFIRMED copy from the same place on earlier lines (with probability 28% by default)
research/voynich-machines/cache/conf.properties : `method.sourceChooser.same_position_probability=28`; PageSourceGroupChooser.java uses it as `rand <= probability` with `pos = ChooserHelper.calcLinePosition(...)` (same character offset in an earlier line). Line-initial words use max(10, p/2) = 14%, which is the page's "different copying probability for the first word of a line" - OBSERVED their default settings reproduce their published text byte for byte; an unmodified recompile (of Glyph.java, and of SelfCitationTextGenerator.java for the repeat ablation) reproduces it too; sc-published-seed19.txt is byte-identical to their repository's file
recreated: `java -jar text-generator.jar` with the default conf.properties; `javac` of upstream Glyph.java, and separately of upstream SelfCitationTextGenerator.java, against the jar, then run; `cmp` with cache/generated_text.txt : all three identical; sha256 1e954a17... equals the live raw.githubusercontent.com graphs/GeneratedText/generated_text.txt; seeds 1 and 7 at 4129 lines regenerate cache/sc/seed1.txt and seed7.txt byte for byte - OBSERVED The predictions were committed to the repository before any machine was run
git show 3c34921d7e : commit 2026-09-29 00:28:35Z "prereg: ... (committed before any is measured)" adds research/voynich-machines/PREREGISTRATION.md (identical to the served copy); the next commit touching the layer is 234a6c7047 at 01:04:57Z - OBSERVED the Rugg (2004) paper could not be obtained, so the grille was not built
research/voynich-machines/README.md : "Not built: a Rugg (2004) table-and-grille generator ... the paper is closed access and could not be obtained." The citation checks at Crossref: 10.1080/0161-110491892755, Cryptologia 28(1) 31-46, 2004 - OBSERVED every figure in the prose (27 predictions, 22 held / 5 failed; all medians and ranges)
recreated: `node verify-is-the-voynich-manuscript-a-hoax.mjs` (repo, 76/76) plus an independent Python recomputation from data/machines.json : every number in the prose matches: 2.10/2.03; 0.137->0.003; 0.002; 0.149, 0.043-0.059; 0.85-1.03; 1.37-1.74, 17 of 20; 2.03-2.70; 36 v 62; 2.91-3.02; 0.37; 0.96; 1.44 v 1.47; 70%/79%/12%; 0.089/0.142/0.002; 0.127-0.150, 0.002-0.005, 0.000-0.005; 0.057; 79-480; 248; 5,200; 2.97 v 2.84; 0.013/0.011, 0.011/0.021, 0.140/0.059; DC_38, DC_42 (Experimenter); 0.06, 0.58; 9 and 23 of 36; DC_20 9 v 1.6; 287 v 219; 4.7%; 34,780 words - WRONG "A companion layer measured its text beside fifty medieval books ... and found it outside all fifty in three ways: its next letter is unusually easy to guess, it writes the same word twice in a row more often than chance, and its words behave differently at the edges of a line." (index.html line 124)
public/strata/is-the-voynich-manuscript-a-hoax/data/machines.json; public/strata/is-the-voynich-manuscript-a-language/index.html : outside all fifty on two measures only. On line edges three books reach or pass its line end (0.089: Madrid Lázaro Galdiano 0.132, Cologne Bodmer 168 0.219, Vatican Reg. lat. 1616 0.229) and one passes its line start (0.149: Mazarine Inc. 59, 0.207). The companion says so ("Three of the fifty reach or pass the Voynich at the line's end"; "No manuscript reaches its line-start value (0.149): failed"), and so does this layer's own PREREGISTRATION.md: "outside all fifty on character entropy (h2) and on identical neighbouring words, and at the edge on line position" - MINOR "because a ten-entry rule in its source code rewrites the ending of the word that closes each line" (index.html line 142)
research/voynich-machines/upstream/SelfCitationTextGenerator.java : recreated with an instrumented copy of SelfCitationTextGenerator.java (scratch, recompiled against the jar; output byte-identical to the published run). The rule rewrites a line's last word on 456 of 1,199 lines (38%) of the published run (1,455 and 1,500 of 4,128 for seeds 1 and 7). tryToTrim is reached for the last word on 731 of 1,199 lines (61%), and the table changes only a word whose final token is in it. So not "each line" - CONFIRMED "The main loop consults it whenever the next word will not fit in the space left on the line, which is to say for the word that ends the line, and rewrites that word's ending by it" (index.html line 179)
research/voynich-machines/upstream/SelfCitationTextGenerator.java : line 263 `if (availablePlaceInLine - morphedGroup.length() <= 0)` -> tryToTrim (it also fires when the word would exactly fill the line). Instrumented run: every rewritten word that was kept ended its line (456/456 published run; 1,455/1,455 and 1,500/1,500 seeds 1, 7). 1,054 more rewritten candidates were thrown away because they still did not fit. The description is fair - OBSERVED "With the rule gone, m and g vanish from the generator's text altogether ... copying by position does not carry the line ending, because nothing puts one there for it to copy"
recreated: word count over research/voynich-machines/cache/{sc,sc0,sc0p100}/seed*.txt (header lines excluded) : 0 words ending in m or g in the text of all 40 rule-removed runs (the only 20 hits are the "#Properties" header lines), against 49,762 in the 20 rule-on runs. Nothing else in the jar's bytecode references lineFinalGlyphs or endsWithEndGlyph - MINOR "0.000 to 0.005 without it and with every word copied from the same place on an earlier line" (index.html line 198; also "copying-by-position up to 100%", line 142)
research/voynich-machines/cache/conf.properties; https://raw.githubusercontent.com/TorstenTimm/SelfCitationTextGenerator/master/source/src/main/java/de/voynich/text/sourcechooser/PageSourceGroupChooser.java : setting 100 does not make every word a same-place copy. Line-initial words use max(10, 100/2) = 50%; paragraph-initial lines draw from earlier paragraph starts (70%); "suggestion" mode (40% when suggestions exist) draws elsewhere. Instrumented PageSourceGroupChooser, sc0p100 seed 1 (output byte-identical to the repository's run): 98,902 same-position choices out of 113,292 source choices (87%); 8,195 paragraph-initial, 3,593 suggestion, 2,590 random-position line-initial - MINOR "No machine tried here reaches the manuscript's line starts: ... and about zero in the others." (line 143) and "Anything that does not know where its lines end scores about zero: the chain, the shuffle, the cipher of prose." (line 173)
public/strata/is-the-voynich-manuscript-a-hoax/data/machines.json : the chain and the shuffle are about zero (all below 0.0015). The cipher is not: line start 0.005 to 0.122 (Mazarine Inc. 59 cipher 0.122, carried over from its printed list's 0.207), line end 0.006 to 0.032. It keeps its Latin book's lines. The verifier tests "about zero" only for the chain and the shuffle - MINOR "The generator has rules there too (gallows letters for the first word of a paragraph, a different copying probability for the first word of a line) and they raise its line-start signal to 0.057." (line 200)
https://raw.githubusercontent.com/TorstenTimm/SelfCitationTextGenerator/master/source/src/main/java/de/voynich/text/morph/AbstractBaseGroupMorpher.java : the list leaves out the most direct line-start rule. handleGallows -> addLineInitalGlyph, "prefer an lineInitalGlyph [o,y,d,s] to start a line" (30%), and removeLineInitalGlyph for words not at a line start, both active under the default canFollow=curveline. "they raise ... to 0.057" is causal, and no run removes these rules (README "Open edges" proposes adding a line-initial glyph rule as though none exists) - MINOR "The people were students on a course about the manuscript, writing a few hundred words each, in a Latin alphabet." (line 247)
research/voynich-machines/upstream/gaskell-bowern-metadata.csv : of the 36 samples measured: 31 students (13 from 2018, 18 from 2019), 3 the authors' ("Experimenter", one of them DC_42, which the page itself singles out), 2 members of the public ("Agnostic"). Line 203 of the page says this correctly - CONFIRMED "In 2014 Torsten Timm offered an explanation" (the year, given that the page quotes v3 of 2015)
https://arxiv.org/pdf/1407.6639v2 : v2, submitted 12 Sep 2014, contains the quoted passage word for word. v1 (24 Jul 2014) does not. "published five years later" (2019 online) also holds - CONFIRMED citations: Timm and Schinner, Cryptologia 44.1 (2020) 1-19; Rugg, Cryptologia 28.1 (2004) 31-46; Montemurro and Zanette, PLoS ONE 8(6) e66344 (2013); Hodgins, NSF-Arizona AMS Laboratory, 17 February 2009; Gaskell and Bowern, CEUR 3313 paper 4
https://api.crossref.org/works/10.1080/01611194.2019.1596999 : Crossref matches all three DOIs (titles, authors, volume, issue, pages). The Hodgins letter is dated "17 February 2009" and signed at the "NSF-Arizona AMS Laboratory". The CEUR PDF is Vol-3313/paper4 - CONFIRMED "Their 38 public transcriptions are used here as released" / "the 38 transcriptions in Gaskell and Bowern's public repository, unaltered"
https://raw.githubusercontent.com/danielgaskell/voynich/main/data/gibberish_transcriptions.zip : the live zip is byte-identical to the cached copy, holds 38 files, and every sample text in data/gibberish.json equals its file exactly - CONFIRMED "re-measured from CATMuS Medieval (all 194,808 rows, text columns only)"; "CATMuS Medieval, CC BY 4.0"
https://datasets-server.huggingface.co/size?dataset=CATMuS/medieval : num_rows 194808 (train 152,816, validation 19,402, test 22,590); dataset card licence cc-by-4.0; research/voynich-machines/cache/catmus_text.jsonl has 194,808 lines - OBSERVED "(That correction was added after the first run, when the line-blind word chain scored 0.05 to 0.09 here; it was not in the pre-registration.)"
recreated: `node verify-is-the-voynich-manuscript-a-hoax.mjs` : the verifier re-measures word-chain seed 1 in windows without the floor: median window in the 0.045-0.095 band at both edges (PASS). README "Added after the first results" says the same, and PREREGISTRATION.md has no floor
What was done
- [fixed] WRONG, index.html line 124: "found it outside all fifty in three ways: its next letter is unusually easy to guess, it writes the same word twice in a row more often than chance, and its words behave differently at the edges of a line." On line edges the manuscript is inside the fifty: three books reach or pass its line end and one passes its line start (machines.json; companion layer; this layer's PREREGISTRATION.md says "at the edge on line position"). Suggested: "found it outside all fifty in two ways (its next letter is unusually easy to guess, and it writes the same word twice in a row more often than chance) and at the edge of them in a third: its words behave differently at the edges of a line, as only verse, a list and one scribe's shorthand do." Also check src/content/strata/is-the-voynich-manuscript-a-hoax.md body and the JSON-LD for the same wording (they do not currently repeat it). now "outside all fifty in two ways (...) and at the edge of them in a third"; re-read against machines.json (four books reach its line end or line start) and the companion layer.
- [fixed] MINOR, index.html line 142: "a ten-entry rule in its source code rewrites the ending of the word that closes each line". It fires on about 38% of lines (456 of 1,199 in the published run). Suggested: "rewrites the ending of the word that closes a line (about two lines in five)" or "of a line's last word". now "the word that closes a line, whenever that ending is in its table"; the instrumented 456-of-1,199 count is the auditor's and is not put on the page.
- [fixed] MINOR, index.html line 198: "with every word copied from the same place on an earlier line". Setting 100 governs only page copies of non-initial words (87% of source choices in seed 1). Suggested: "and with copying from the same place turned up to its maximum". Line 142's "copying-by-position up to 100%" is accurate as it stands. now "with copying from the same place on an earlier line turned up to its maximum".
- [fixed] MINOR, index.html lines 143 and 173: "about zero in the others" and "Anything that does not know where its lines end scores about zero: the chain, the shuffle, the cipher of prose." The cipher keeps its Latin book's line breaks, and so its line-edge signal: line start up to 0.122 (Mazarine Inc. 59). Suggested, line 143: "about zero in the chain and the shuffle; the cipher carries whatever its Latin book had". Line 173: drop "the cipher of prose", or say it inherits its book's lines. both sentences now say about zero for the chain and the shuffle only, and that the cipher keeps its book's lines; the verifier now checks the cipher is not called about zero.
- [fixed] MINOR, index.html line 200: the parenthetical list of line-start rules leaves out addLineInitalGlyph/removeLineInitalGlyph (AbstractBaseGroupMorpher.java: "prefer an lineInitalGlyph [o,y,d,s] to start a line", 30%), and "they raise its line-start signal to 0.057" is untested. Suggested: "(gallows for a paragraph's first word, an o, y, d or s added to a line's first word, a different copying probability there) and it reaches 0.057". Also reconsider research/voynich-machines/README.md "Open edges" item 1, which proposes such a rule as if it were new. re-read AbstractBaseGroupMorpher.java lines 189-224 (addLineInitalGlyph, rand < 30); the list now names it, "they raise" is now "with them it reaches"; README open edge 1 rewritten.
- [fixed] MINOR, index.html line 247: "The people were students on a course about the manuscript". 31 of the 36 samples were; 3 are the authors' and 2 are from the public. Suggested: "The people were mostly students on a course about the manuscript". now "mostly students".
- [fixed] MINOR, index.html line 203: "gibberish of this kind <q>is able to replicate ...</q>" omits the source's "varies widely ... and, depending on the sample,". Suggested: "that gibberish varies widely and, depending on the sample, <q>is able to replicate ...</q>". now "gibberish varies widely and, depending on the sample, <q>is able to replicate ...</q>"; the source record's excerpt now carries the whole sentence.
- [fixed] MINOR, assay/sources/is-the-voynich-manuscript-a-hoax.json entry "radiocarbon": the excerpt quotes Figure 1/2 lines (Leaf #26, 68.2%, "1404AD (68.2%) 1438AD"), while "where" names Figure 7. The Figure 7 line is "1404AD (95.4%) 1438AD" (Weighted Mean Age (n=4)). The page claim is right; the record's excerpt should be the Figure 7 line. excerpt is now the Figure 7 line "1404AD (95.4%) 1438AD", which is in the kept copy.
- [fixed] MINOR, verify-is-the-voynich-manuscript-a-hoax.mjs line 181 (and public/checks copy): the SKIP message says "to check all 60" but the section checks 80 runs ("all 80 generator runs ..."). Outside the repository the metadata.csv check (DC_42 = Experimenter) and the Glyph.java / line-321 checks are skipped without a line saying so. the SKIP line says 80; the metadata and Java-source checks now print SKIP outside the repository.