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/r2276.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: A letter from Reims on the chapter’s postulation, 19 June 1589
This page: https://dbourdeau.github.io/cyphersolver/further/r2276.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/r2276.html (read it first: how the text was read, the key, the reading)
Date: 1589
Outcome: known key applied · partial
Read now: 69.3% of the deciphered cipher tokens give sense (pieces below may be untouched)
Files: https://github.com/dbourdeau/cyphersolver/tree/main/targets/r2276 (NOTES.md, key, transcription, reading, scripts)
OPEN GAPS (from NOTES.md, "## Remaining gaps")
1. [no-key-material: needs a new source] p. 1 ll. 16-26, 38-40 and p. 2 ll. 1-3, 13-21, 36-40 decoded, not read (holes in nearly every clause; reading audit 22 Oct 2026; re-read 23 Oct 2026, 0.069) - blocker: no-key-material; these are the torn-edge lines and the unread words below, which the DECODE and Gallica images do not resolve
2. [illegible: needs a new source] torn right edge of p. 1 ll. 1-4 and 16-31, and the left margin of p. 2 ll. 1-2, 15-28, 39-40 (about 700 px of text) - blocker: illegible; paper lost, no other copy of the letter
3. [illegible: needs a new source] ink blot on p. 3 l. 2 (`d F z v - v m H z`) and the stained start of p. 3 l. 3 - blocker: illegible; signs under the stain cannot be told apart on the only image
4. [too-short: needs a new source] about 25 single-sign `?` in running text (e.g. t1.9 `u`, t1.11 `t`, t1.18 `3`, t1.35 `R`, t1.38 `Y`/`P`, t2.3 `x`/`m`, t2.4 `u`, t2.32 `3`, t2.36 `D`, t3.4 `Z`, t3.7 `3`) - blocker: too-short; one sign each, the sentence reads without it, no value can be proved
5. [no-key-material: needs a new source] the boxed cross ⊞ (`N`) at t1.36 - blocker: no-key-material; = "parle" in BnF fr. 4715 f. 2; applied at t1.21 ("ouy ? parler", 5 Oct) but it does not fit t1.36 ("de ? Bardin", probably a title)
6. [needs-physical-access: needs a new source] about 80 unread words of two or more signs (listed as `?` in reading.txt; worst lines t1.16, t1.22-26, t1.33, t1.38-39, t2.2-3, t2.10, t2.13-16, t2.19, t2.21, t2.39, t3.1, t3.5, t3.9) - blocker: needs-physical-access; no French word fits both the signs and the sentence after six reading rounds, a full alignment of the sibling fr. 4715 f. 2 and candidate search over a 30k-word lexicon; several contain signs with no attested value (Z with overline, 8 with superscript t, U, W, q, k); neither the DECODE PNGs nor the Gallica IIIF scan resolves the signs, so the only remaining route is a new high-resolution colour scan or the manuscript itself (BnF fr. 20974 pp. 1-3)
ALREADY TRIED (from NOTES.md, "## Escalation")
[x] siblings: BnF fr. 4715 f. 2 (Cardinal de Guise to Nevers, 1586, same cipher, interlinear decipherment) fully aligned, ~1,050 sign=value pairs (fr4715_aligned.txt); targets/orbais/ (fr. 3413 no. 62, same cipher) read; fr. 20974 f4 is the letter's own verso with a different (1556) key pasted on; fr. 3612 (Piles's letters and Tomokiyo's key source) is not digitised
[x] clear-pages: none; the letter is cipher throughout and p. 4 carries a key of another correspondence
[x] known-keys: Tomokiyo's Nevers-Piles table (fits, partial), Nevers-Pelleve and Nevers-Guise tables (targets/orbais/: do not fit), the 1556 Albany key on p. 4 (does not fit)
[x] print: Tomokiyo guise.htm and unsolved.htm (Biermann 2021 identification, no text); web search for the Reims postulation, Brulart, Frison, Elbeuf ransom: no edition of the letter found
[x] key-rebuild: hard-EM over a word Viterbi decoder (hardem.py), value counts from aligned readings (keyest.py), codes rebuilt from context (cardinal, leur, pour, faire, ie, vous, lettre, le/du) and from fr. 4715 (parle); key_v2 to key_v8
[x] retry: every `?` word re-run in two targeted rounds with the extended key and candidate search (seg.py, cand.py); 60 -> 57 on pp. 1 and 3, 61 -> 53 on p. 2
[x] push: to 95% (5 Oct 2026): `unread.py` lists the 322 unread signs by line; `crop.py` cuts native-resolution line crops from `sources/`. Re-checked t1.16, t1.39, t2.2, t2.3, t2.21, t2.39 on the image: t1.39 opens with a swash G (que) missing from t1.txt; t1.16 sign 10 looks like a bare double bar rather than H, and the o of "chanoines" is alpha (F); t2.2 "sache" sign 2 looks like theta (o). None of these turns an unread word into French, so t1-t3 are unchanged pending a second look. N = parle applied at t1.21 (+2 signs). Hand candidates rejected as context guesses: t2.39 "deia escoule" (needs L = e), t1.26 "des que tant mois", t1.39 "que ... publiees", t2.14-15 "admo... remise". Result 3600/3920 = 0.918 (key_v8); 95% not reached. The unread words sit on the worst-imaged lines (DECODE PNGs at ~3000 px, strokes of U/W/q/k and overlined Z indistinct); a higher-resolution scan (Gallica btv1b9062131g natives) is the next lever.
[x] re-read: 23 Oct 2026 (batch b32): DECODE record, Tomokiyo pages, fr. 3612 catalogue record (not digitised) and the Gallica cipher-volume descriptions checked again; nothing new
[x] better: image (5 Oct 2026): Gallica btv1b9062131g fetched by IIIF at full resolution (two-page spreads ~7470x5960; p. 1 = right half of f2). Text block ~2,850 px wide, same as DECODE, grey microfilm capture with lower contrast; rare-sign strokes no clearer; t1.39 / t1.16 / t2.2 corrections not confirmed; no change. Remaining open words relabelled needs-physical-access.
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/r2276/NOTES.md in full, and the
key, transcription and reading files it names; lang/README.md (shared language models).
Work in targets/r2276/. 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/r2276/. 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+r2276&page=r2276.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 p. 1 ll. 16-26, 38-40 and p. 2 ll. 1-3, 13-21, 36-40 decoded, not read (holes in nearly every clause; reading audit 22 Oct 2026; re-read 23 Oct 2026, 0.069) - blocker: no-key-material; these are the torn-edge lines and the unread words below, which the DECODE and Gallica images do not resolve
- hard to read on the scan torn right edge of p. 1 ll. 1-4 and 16-31, and the left margin of p. 2 ll. 1-2, 15-28, 39-40 (about 700 px of text) - blocker: illegible; paper lost, no other copy of the letter
- hard to read on the scan ink blot on p. 3 l. 2 (`d F z v - v m H z`) and the stained start of p. 3 l. 3 - blocker: illegible; signs under the stain cannot be told apart on the only image
- too short to break about 25 single-sign `?` in running text (e.g. t1.9 `u`, t1.11 `t`, t1.18 `3`, t1.35 `R`, t1.38 `Y`/`P`, t2.3 `x`/`m`, t2.4 `u`, t2.32 `3`, t2.36 `D`, t3.4 `Z`, t3.7 `3`) - blocker: too-short; one sign each, the sentence reads without it, no value can be proved
- no key known the boxed cross ⊞ (`N`) at t1.36 - blocker: no-key-material; = "parle" in BnF fr. 4715 f. 2; applied at t1.21 ("ouy ? parler", 5 Oct) but it does not fit t1.36 ("de ? Bardin", probably a title)
- needs the archive about 80 unread words of two or more signs (listed as `?` in reading.txt; worst lines t1.16, t1.22-26, t1.33, t1.38-39, t2.2-3, t2.10, t2.13-16, t2.19, t2.21, t2.39, t3.1, t3.5, t3.9) - blocker: needs-physical-access; no French word fits both the signs and the sentence after six reading rounds, a full alignment of the sibling fr. 4715 f. 2 and candidate search over a 30k-word lexicon; several contain signs with no attested value (Z with overline, 8 with superscript t, U, W, q, k); neither the DECODE PNGs nor the Gallica IIIF scan resolves the signs, so the only remaining route is a new high-resolution colour scan or the manuscript itself (BnF fr. 20974 pp. 1-3)
Already tried
- ☑ siblings BnF fr. 4715 f. 2 (Cardinal de Guise to Nevers, 1586, same cipher, interlinear decipherment) fully aligned, ~1,050 sign=value pairs (fr4715_aligned.txt); targets/orbais/ (fr. 3413 no. 62, same cipher) read; fr. 20974 f4 is the letter's own verso with a different (1556) key pasted on; fr. 3612 (Piles's letters and Tomokiyo's key source) is not digitised
- ☑ clear-pages none; the letter is cipher throughout and p. 4 carries a key of another correspondence
- ☑ known-keys Tomokiyo's Nevers-Piles table (fits, partial), Nevers-Pelleve and Nevers-Guise tables (targets/orbais/: do not fit), the 1556 Albany key on p. 4 (does not fit)
- ☑ print Tomokiyo guise.htm and unsolved.htm (Biermann 2021 identification, no text); web search for the Reims postulation, Brulart, Frison, Elbeuf ransom: no edition of the letter found
- ☑ key-rebuild hard-EM over a word Viterbi decoder (hardem.py), value counts from aligned readings (keyest.py), codes rebuilt from context (cardinal, leur, pour, faire, ie, vous, lettre, le/du) and from fr. 4715 (parle); key_v2 to key_v8
- ☑ retry every `?` word re-run in two targeted rounds with the extended key and candidate search (seg.py, cand.py); 60 -> 57 on pp. 1 and 3, 61 -> 53 on p. 2
- ☑ push to 95% (5 Oct 2026): `unread.py` lists the 322 unread signs by line; `crop.py` cuts native-resolution line crops from `sources/`. Re-checked t1.16, t1.39, t2.2, t2.3, t2.21, t2.39 on the image: t1.39 opens with a swash G (que) missing from t1.txt; t1.16 sign 10 looks like a bare double bar rather than H, and the o of "chanoines" is alpha (F); t2.2 "sache" sign 2 looks like theta (o). None of these turns an unread word into French, so t1-t3 are unchanged pending a second look. N = parle applied at t1.21 (+2 signs). Hand candidates rejected as context guesses: t2.39 "deia escoule" (needs L = e), t1.26 "des que tant mois", t1.39 "que ... publiees", t2.14-15 "admo... remise". Result 3600/3920 = 0.918 (key_v8); 95% not reached. The unread words sit on the worst-imaged lines (DECODE PNGs at ~3000 px, strokes of U/W/q/k and overlined Z indistinct); a higher-resolution scan (Gallica btv1b9062131g natives) is the next lever.
- ☑ re-read 23 Oct 2026 (batch b32): DECODE record, Tomokiyo pages, fr. 3612 catalogue record (not digitised) and the Gallica cipher-volume descriptions checked again; nothing new
- ☑ better image (5 Oct 2026): Gallica btv1b9062131g fetched by IIIF at full resolution (two-page spreads ~7470x5960; p. 1 = right half of f2). Text block ~2,850 px wide, same as DECODE, grey microfilm capture with lower contrast; rare-sign strokes no clearer; t1.39 / t1.16 / t2.2 corrections not confirmed; no change. Remaining open words relabelled needs-physical-access.
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.