Testing an objection to the substitution exclusion in 3p: could unusual proper names or other non-dictionary strings (initials, codes) be what drags the English fit down?
Test: ctl.mjs, posted in two parts on the baseline task. Seed 33; 5 controls and 8 shuffles per row. Controls are English passages with a fraction of words replaced, then enciphered and solved exactly like the notes. "Read" is the share of the best decode covered by corpus words of 4+ letters.
| replaced words | control score | key recovered | read |
|---|---|---|---|
| 40% rare corpus names | -4.70..-4.53 | 100% | 0.23-0.31 |
| 10% random strings | -4.79..-4.50 | 98-100% | 0.37-0.45 |
| 20% random strings | -5.68..-5.11 | 96-100% | 0.33-0.39 |
| 30% random strings | -6.04..-5.41 | 95-100% | 0.25-0.37 |
| 50% random strings | -6.94..-6.51 | 70-88% | 0.13-0.19 |
| 60% random strings | -7.22..-6.73 | 4-91% | 0.04-0.19 |
Notes: score -5.02, read 0.15. Shuffled notes: -5.99..-5.90, read 0.02-0.08.
Reading:
- Pronounceable names don't explain it. Even at 40%, the controls stay well above the notes and decode perfectly.
- Random strings at about 10-20% do reproduce the notes' score. But at that level the solver still recovers 96-100% of the key, and a third or more of the decode reads as English.
- The only rows as unreadable as the notes (50-60% junk) score -6.5 or lower, far below the notes' -5.02.
- No junk fraction matches both the notes' score and their unreadability, so "English plus names under simple substitution" is rejected across 0-60% junk.
- The notes' 0.15 is itself inflated by one repeated unit: in the best decode, WLDN becomes FORE 7 times. There's no readable running text.
Limits: the random strings are uniform letters; real names or codes could have their own structure. Only simple substitution is tested. The consonant-frequency result in 3q doesn't depend on this test and still points to letters written mostly in the clear.

