atelier. Raimbaut d'Orange

Raimbaut d'Orange · section 7

The revision of 21 September 2026

The revision of 21 September 2026

Version 3.1 of the edition went online on 7 July 2026. On 21 September I asked Claude (Fable 5.1, in Claude Code) to analyse the project and to propose improvements, and we then did the work in one day. Claude wrote the code and made the corrections; I gave the instructions, supplied some crops from the scans, and approved each deploy. The day has 21 commits, 13 deploys and two releases, v3.2 and v3.3.

The earlier sections describe the project as it was at version 3.1, and their numbers are the numbers of that version. This section records what changed.

The server

Until that day, nginx passed each request to a small Python file server. That server did not compress files, did not set cache headers, and answered a missing page with the default Python error page.

nginx now serves the files directly from disk, and the Python service is stopped and disabled. HTML is always revalidated, while CSS, JavaScript and fonts are cached for one year; a hash in the URL changes when one of those files changes. The stylesheet is 67.8 kB on disk and 16.6 kB on the wire. The site has its own 404 page, and the server sends the usual security headers. A copy of the server configuration is in the repository.

The deploy script now does three things that it did not do before:

  • It runs a check first, and stops if the check fails.
  • It extracts the new site next to the old one and then swaps the two directories, so a failed upload cannot leave half a site online.
  • It writes a git tag for each deploy that comes from a clean tree.

Citation and licence

Each page now has a canonical URL and the metadata that reference managers read (citation_* and Dublin Core). The text is under CC BY 4.0 and the code under the MIT licence. The colophon has a "Pour citer" paragraph, the licence, and the git revision of the build.

The repository is connected to Zenodo. The concept DOI is 10.5281/zenodo.22873502, and versions 3.2 and 3.3 each have their own DOI.

I also checked the rights for the manuscript images. One image comes from the BnF. For the images from the Vatican library I prepared a request for permission, and until there is an answer the colophon does not say that the library gave it.

The site

  • Search. The site has a search page, built with Pagefind. The index contains the reading text only, without the navigation and the toolbars.
  • Accessibility and SEO. The site now has a skip link, a <main> landmark, a favicon, a sitemap and a robots file. The sitemap is made from the edition data, because Eleventy lists only the first page of a paginated template.
  • Manuscript images. There were 23 image files, some of them duplicates. There are now 12 source files, and the build makes two renditions of each: 600 px for the page, and up to 2200 px for the viewer.
  • Print. A print stylesheet uses a light palette, shows all the notes, and adds the citation at the end.
  • Fonts. The two Junicode files are now subsets with fixed axes. The roman went from 294 kB to 173 kB and the italic from 317 kB to 183 kB.
  • Build. The build now deletes the output directory before it starts. Before this change, old files stayed in the output, and the deploy published them.
  • Hand notes. The 43 descriptions of handwritten notes in the typescript were in English. They are now in French, like the rest of the edition.

The check

manage.py verify rebuilds all the derived data from the corpus and fails if a committed file differs from the rebuilt one. It also checks three counts: 586 pages, 39 chansons, and footnote markers that agree with their notes. GitHub Actions runs this check on each push.

The first run showed a fault. The typography normalizer was not idempotent: a second run changed about 80 files, because it rewrote the chanson marker lines and because its dash rule needed more than one pass. Both faults are repaired. The check also runs on Linux, which showed that one script did not run on Python 3.10; that is repaired too.

The repository

The scripts of the first transcription stage, their inputs and the review diff moved to provenance/, and the old UX proposal moved to docs/archive/. The generated review reports are no longer tracked, because each build rewrites them. The repository now has a README, licence files, CITATION.cff and .zenodo.json.

The editorial backlog

The review reports listed the open cases, and we worked through them. The numbers below come from the reports at v3.1 and at v3.3.

Report v3.1 v3.3
Footnote references that need a human look 51 3
Alignment mismatches in footnotes 11 0
Article titles set in « » 27 54
Bare ibid. without a page 30 7
Back-references resolved / not resolved 473 / 4 477 / 0
Back-references with high confidence 126 147
Index references with no match in the verse 85 1
Manuscript sigla not in the table 6 1

Three of these lines need an explanation.

Back-references. The old script recorded only full citations as the "last work cited". A citation by siglum, by short title or by supra did not change that record, and as a result about 70 ibid. pointed to the wrong work. They counted as resolved, so no report listed them. The script now records all these forms of citation, and Claude compared each changed target with its note.

Manuscript lists. The "Manuscrits" list of each of the 39 chansons was read again against the typescript, and 26 pages had errors. Most were sigla that the first transcription had joined or misread. One siglum, α, was in fact an italic a.

Verse numbers. A new script, check_verse_markers.py, compares the printed verse numbers (5, 10, 15 …) with the number of lines between them. It runs as part of verify.

In total, 73 corpus pages changed: 86 lines added and 95 removed.

How the scans were read

At first I sent a crop of the scan for each doubtful passage. Then I asked whether Claude could read the PDF files itself, and it could: it rendered the page from the PDF to an image and read the image, and for a doubtful digit it rendered a small area at a larger scale. The PDFs stay private and are not in the repository.

An error of inference, and the rule that came from it

In chanson XXXVII, the verse audit showed that the markers 45, 50, 55 and 60 were each one line too late. Claude concluded that the transcription was wrong and moved the markers in the corpus. I then sent the scan of page 373, and the typescript itself has the markers on those lines. The error was my father's, not the transcription's.

Claude put the corpus back, and the rule is now as follows:

  • The corpus contains what was typed, and the facsimile view shows that.
  • If the transcription is wrong, the corpus is corrected.
  • If the typescript is wrong, the corpus is not changed. The irregularity goes into a hand-written file, verse-numbering.json, with the reason and the page, and the reading view uses that file.

The file now has entries for 15 chansons and 20 corrections to index references. Two examples: the index gives FRAITURA as IX, 2, but the expression is in XI, 2; it gives ARAPAR as XXXI, 14, but the word is in XXI, 13.

A calculation can show that something is wrong. Only the scan shows whose error it is.

One more finding came from this work. The Index des mots cites the verse where the Remarques discuss a word, which is not always the verse that contains it. Six of the last seven open index references were explained this way.

What is open

  • One index reference has no explanation: RIMAR X, 28.
  • One siglum, m, is typed in a manuscript list and is not in the table of manuscripts.
  • Three article titles have quotes that do not pair in the corpus, and seven ibid. have no page.
  • The Vatican library has not yet received the request for the images.