Hand this page to your AI agent
Give your agent (Claude, ChatGPT or any assistant that can open web pages) this address and ask it to do the task on the page:
https://dbourdeau.github.io/cyphersolver/further/affry1757.html
Or copy the block below into the chat. It is the whole task: the reading, every open gap, what has been tried, the steps, and how to report back.
TASK: take a partial decipherment further: The comte d’Affry’s intercepted letters from The Hague, 1757–58
This page: https://dbourdeau.github.io/cyphersolver/further/affry1757.html
You are helping a public research project finish reading historical cipher letters. This one is read in part:
the key works, but some pieces are still open. Your job is to close one or more of the open gaps below.
THE READING
Write-up: https://dbourdeau.github.io/cyphersolver/affry1757.html (read it first: how the text was read, the key, the reading)
Date: 1757–58
Outcome: key from adjacent plaintext · partial
Read now: 94.2% of the deciphered cipher tokens give sense (pieces below may be untouched)
Files: https://github.com/dbourdeau/cyphersolver/tree/main/targets/affry1757 (NOTES.md, key, transcription, reading, scripts)
OPEN GAPS (from NOTES.md, "## Remaining gaps")
1. [no-key-material: needs a new source] 45 groups without a value that the register does not settle (listed above under "Not adopted") - blocker: no-key-material; the register piece is noise or the occurrences disagree
2. [no-key-material: needs a new source] groups that take two values in practice (727 moi/mois, 911 ns/co, 556 contre/contraire, 842 étoit/été, 1186, 895 devoir/devoit, 1193 utile/utilité, 16 roi de Prusse/prussien, 605 in R1074) - blocker: no-key-material; one value per group is all key_X can hold, so the measure under-reads these
3. [no-key-material: needs a new source] R1054 and R1064 groups that the Fagel register passes over without a word (R1054: 101, 760; R1064: 103, 178 in a false start, 146, 29 108) and the R1064 passport-date groups 978 634 114 - blocker: no-key-material; the register pages 5186 248R-249L and 62R-63R were checked on the scans 23 Oct 2026 (r2q) and both letters now read from them, these groups have no value in any letter
4. [illegible: needs a new source] groups cut by the binding or under ink (R1073 p.1 line ends, R1076 102|1024 and 663|668, R1054 ll.2/3/21, one group under the blot on R1070 I5590 l.4) - blocker: illegible; checked at full resolution 27 Oct 2026, no better image online
ALREADY TRIED (from NOTES.md, "## Escalation")
[x] siblings: all R1052-R1076 and R2067 opened; eight Lyonet decipherments found among the images
[x] clear-pages: the "clear" pages are Lyonet's decipherments, transcribed into plain/
[x] print: De Leeuw 2000, Bussemaker 1906, Coquelle 1904 checked
[x] key-rebuild: key_M.json voted from the alignments, inferred values in read/R*_new.tsv; key_X.tsv (5 Oct) pooled values
[x] retry: 5 Oct 2026, R1072/R1074/R1067/R1064 re-transcribed from the images, open groups pooled across all letters, all letters re-measured with measure_sense.py (0.778 -> 0.823 of all groups)
[x] clear-pages: (again): 21 Oct 2026, the Fagel registers NA 1.10.29 inv. 5186/5187 hold clear copies of all ten letters (WAINUT, PR #65); 58 values checked on 16 register scans and folded into key_X.tsv (0.890 -> 0.913)
[x] the: register's words for the valueless groups (wainut/open_groups.tsv): 86 adopted after a scan check, 45 left open (second pass, 21 Oct 2026; 0.913 -> 0.941)
[x] retry: 27 Oct 2026, R1054, R1068, R1070, R1073, R1076 checked on the images (two dropped lines of R1076 and two groups of R1070 recovered; reversed page order of R1070/R1076 found), all letters re-measured (0.941 -> 0.942)
[x] clear-pages: (register, R1054/R1064): 23 Oct 2026 (r2q), 5186 248R, 249L, 62R, 63L, 63R checked on the scans; both letters read from the register, figures followed where they differ
STEPS
0. Set up. If you can run a shell, fork and clone the repository and work inside it:
git clone https://github.com/dbourdeau/cyphersolver.git
Then read, in this order: CONTRIBUTING.md (how a contribution is sent and credited); README.md, sections
"Repository layout" and "Conventions" (how readings are measured and named); targets/affry1757/NOTES.md in full, and the
key, transcription and reading files it names; lang/README.md (shared language models).
Work in targets/affry1757/. Add your findings to NOTES.md under a dated heading without rewriting what is there, and
update the "## Remaining gaps" line of every gap you close. Keep WORKLOG.md there: one dated line per step
(hypothesis, value tried, solver run, crib, control), failures included. Do not edit docs/ (the site is generated).
If you cannot run a shell, fetch the files from the links above and keep your work in files you send with the issue.
1. Pick a gap. Start with the ones marked "doable now" (open-codes, not-attempted, left-open): the images and the key
are online, so they need only work. A gap marked "needs a new source" (no-key-material, too-short, illegible,
needs-physical-access) can be closed only by something new: a key
or a deciphered sibling found elsewhere, a better image, a printed edition or calendar, a photograph from the archive.
For those, search for that material first, and say where you looked even when you find nothing.
2. Start from the existing key and transcription in the folder. Do not rebuild the key from scratch, and do not
re-read parts that are already read unless you find an error in them.
3. For a code group or sign value: list every place the group occurs, show how each reads with the value you propose,
and say what still does not fit. For a passage: re-read it at the image and give the folio and line. For a missing
letter or leaf: say where it is held and how it can be reached.
4. Measure again. Apply the key to the whole text, write the reading file, and count the share of cipher tokens that
give sense (not an estimate). The reading is "complete" only when (1) at least 95% of its cipher tokens give sense;
(2) no gap is left untried; (3) every letter in it is covered; (4) what stays open is scattered code groups or names,
or pieces blocked from outside. Otherwise it stays "partial": say which gaps are still open and why.
5. Be honest. Mark every uncertain word with [?], leave unread groups as their numbers or signs, and never fill a gap
with a plausible guess. A gap retried and still open, with what was ruled out, is worth reporting.
REPORT BACK
With a clone: open a pull request with your changes to targets/affry1757/. Say in the description which gaps you worked on,
the share read before and after, and how you want to be credited (name, initials or handle, and a link).
Without one: open an issue: https://github.com/dbourdeau/cyphersolver/issues/new?template=further-reading.yml&title=Further+reading%3A+affry1757&page=affry1757.html
Give the write-up, the gap you worked on (its line in Remaining gaps, or the code group, folio and line), what you
propose, the evidence (every occurrence, the images or sources), the share read before and after, your step log,
and the tools and AI model you used.
If you cannot open issues or pull requests, write this report for your human to send. Credit goes to the person who sends it.Open gaps
gold can be done now: the images and the key are online, it needs only work. grey needs a new source first: a key, a better scan, an edition or the archive.
- no key known 45 groups without a value that the register does not settle (listed above under "Not adopted") - blocker: no-key-material; the register piece is noise or the occurrences disagree
- no key known groups that take two values in practice (727 moi/mois, 911 ns/co, 556 contre/contraire, 842 étoit/été, 1186, 895 devoir/devoit, 1193 utile/utilité, 16 roi de Prusse/prussien, 605 in R1074) - blocker: no-key-material; one value per group is all key_X can hold, so the measure under-reads these
- no key known R1054 and R1064 groups that the Fagel register passes over without a word (R1054: 101, 760; R1064: 103, 178 in a false start, 146, 29 108) and the R1064 passport-date groups 978 634 114 - blocker: no-key-material; the register pages 5186 248R-249L and 62R-63R were checked on the scans 23 Oct 2026 (r2q) and both letters now read from them, these groups have no value in any letter
- hard to read on the scan groups cut by the binding or under ink (R1073 p.1 line ends, R1076 102|1024 and 663|668, R1054 ll.2/3/21, one group under the blot on R1070 I5590 l.4) - blocker: illegible; checked at full resolution 27 Oct 2026, no better image online
Already tried
- ☑ siblings all R1052-R1076 and R2067 opened; eight Lyonet decipherments found among the images
- ☑ clear-pages the "clear" pages are Lyonet's decipherments, transcribed into plain/
- ☑ print De Leeuw 2000, Bussemaker 1906, Coquelle 1904 checked
- ☑ key-rebuild key_M.json voted from the alignments, inferred values in read/R*_new.tsv; key_X.tsv (5 Oct) pooled values
- ☑ retry 5 Oct 2026, R1072/R1074/R1067/R1064 re-transcribed from the images, open groups pooled across all letters, all letters re-measured with measure_sense.py (0.778 -> 0.823 of all groups)
- ☑ clear-pages (again): 21 Oct 2026, the Fagel registers NA 1.10.29 inv. 5186/5187 hold clear copies of all ten letters (WAINUT, PR #65); 58 values checked on 16 register scans and folded into key_X.tsv (0.890 -> 0.913)
- ☑ the register's words for the valueless groups (wainut/open_groups.tsv): 86 adopted after a scan check, 45 left open (second pass, 21 Oct 2026; 0.913 -> 0.941)
- ☑ retry 27 Oct 2026, R1054, R1068, R1070, R1073, R1076 checked on the images (two dropped lines of R1076 and two groups of R1070 recovered; reversed page order of R1070/R1076 found), all letters re-measured (0.941 -> 0.942)
- ☑ clear-pages (register, R1054/R1064): 23 Oct 2026 (r2q), 5186 248R, 249L, 62R, 63L, 63R checked on the scans; both letters read from the register, figures followed where they differ
Send a result
One closed gap counts: a code group valued, a passage re-read, a key or clear copy found elsewhere. It is credited to you on the write-up.