Read further · read 87.2% · ciphertext-only break · partial

Two Sforza letters of 4 May 1446: the reply to Zorzo del Maino and Milan to Sforza

Two cipher slips of the same day from the Archivio Sforzesco (BnF italien 1583 ff. 68 and 70, DECODE R7898 and R7899). George Lasry transcribed both with CTTS and generated the key from the ciphertext; Astra and Fable 5.1 improved it. The reply to Maino weighs Count Francesco’s obligations and asks for eight or ten trusted names; the Milan letter reports a move against Cremona. 721 of 827 cipher signs give sense; 14 sign classes and the f. 70 signature are open.

Date
1446
Read now
87.2% of the cipher tokens give sense
Write-up
it1583.html
Files
targets/it1583
Open gaps
no key known ×4hard to read on the scan

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/it1583.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: Two Sforza letters of 4 May 1446: the reply to Zorzo del Maino and Milan to Sforza
This page: https://dbourdeau.github.io/cyphersolver/further/it1583.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/it1583.html (read it first: how the text was read, the key, the reading)
  Date:       1446
  Outcome:    ciphertext-only break · partial
  Read now:   87.2% of the deciphered cipher tokens give sense (pieces below may be untouched)
  Files:      https://github.com/dbourdeau/cyphersolver/tree/main/targets/it1583 (NOTES.md, key, transcription, reading, scripts)

OPEN GAPS (from NOTES.md, "## Remaining gaps")
  1. [no-key-material: needs a new source] 47 unresolved cipher occurrences in 14 sign classes (#30 x8 adopted as a null 23 Oct 2026, leaving 39 in 13; #25 x10, (4) x6, (6) x5, #36 x4, #35 x3, (22) x3, (25) x2, six classes once): mostly at line and paragraph openings (#35 (6) (4) opens f. 68 lines 1 and 9) - blocker: no-key-material; probably nulls, titles or abbreviations, but a language-model pass over both letters could not fix any of them, and only the sibling 1446 letters could add occurrences
  2. [no-key-material: needs a new source] f. 70 signature block after "mediolani die qvarto mai" (24 tokens: p ? v a r qva c e et e ? s m n ? s t a ? ? m r) - blocker: no-key-material; assigned letters do not form the name; Mazzatinti's attribution to Vincenzo Amidani is not confirmed by the cipher
  3. [no-key-material: needs a new source] provisional values (8)=l, (24)=n, (16)=in (4 occurrences) and doubtful words (f. 68 "?intita"; f. 70 "se mono", "do", "vaia", "raconmando", extra "o o") - blocker: no-key-material; each rests on one or two occurrences
  4. [illegible: needs a new source] clear-text supplies: f. 68 line 5 end "[aya? ...]"; f. 70 "[fornendo?]", "[ques?]te" (written in clear over damaged or crowded strokes) - blocker: illegible; only a binarized scan of f. 68 and a DECODE photograph of f. 70; a colour BnF scan would decide them
  5. [no-key-material: needs a new source] f. 70 lines 1-5: decoded, not read - blocker: no-key-material; re-read 23 Oct 2026 (b29): labels confirmed on the image, #30 = null adopted, the clause of lines 4-5 rests on (25), (19), (26), #25, (4) with no key value; none of the sibling 1446 records R7900-R7915 uses this alphabet; sense hypotheses (25)=Duca, (19)=ordine, (26)=gente flagged for review

ALREADY TRIED (from NOTES.md, "## Escalation")
  [x] siblings: 23 Oct 2026 (b29): R7900-R7915 fetched and viewed, none in this alphabet (R7900/R7901 = the Vincentius cipher with its clear text). Earlier: f. 70 (the next leaf, on R7899 P1) is already deciphered with the same key; the seventeen other 1446 cipher records from ital. 1583 (R7899-R7915, ff. 75-158) were not opened that session: they need the DECODE login and a CTTS sign-level transcription of several thousand signs, a separate target. They are the one route to more occurrences of the open classes.
  [x] clear-pages: f. 68's clear phrases are the letter's own clear text, not a decipherment; no decipherment on R7898 or R7899
  [x] known-keys: September 2026, all 208 Sforza key records on DECODE (ASMi cart. 1591, 1597, 1598); 1597 no. 14 is the same family but a different alphabet, no. 17 (1447) different; none is this key
  [x] print: Mazzatinti 1883 gives the headings only; no edition or decipherment found (September search)
  [x] key-rebuild: `extend_open.py` tried every letter, the word values and null for each of the 14 open classes and the 3 provisional ones, scoring both letters with it-cinquecento: no letter value wins by a margin that would justify it (e.g. (6): o vs e, margin 0.8 nats); the scorer prefers null for most, which is consistent with nulls but biased toward them, so nothing adopted
  [x] retry: 23 Oct 2026 (b29): f. 70 re-read sign by sign on R7899 P1, texts/f70_reread_log.md. Earlier: the provisional l / n / in rechecked in the same pass ((24): t vs n, margin 0.7; (16): null vs in, 1.7): left provisional

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/it1583/NOTES.md in full, and the
   key, transcription and reading files it names; lang/README.md (shared language models).
   Work in targets/it1583/. 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/it1583/. 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+it1583&page=it1583.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.

Already tried

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.

Open a further-reading issueOther kinds of reportHow credit works← All partial readings