Skip to content

v0.7.0

Latest

Choose a tag to compare

@Alberto-Codes Alberto-Codes released this 10 Sep 17:24
1a680cb

The 1907 scan reads entry 22 as BROWN SAUCE OR ESPAQNOLE, so no name in that
witness carried the word Espagnole except a derivative's, and the mother bound
to LENTEN ESPAGNOLE with twelve preparations beneath it. The rule that bound it
is true of this book — Escoffier presents a base before its derivatives — and
it never checked the premise underneath: that the base is among the candidates
at all. This release is the guard for the witness where it is not. An entry
that says it is made from Espagnole is not Espagnole.

The scan lost one letter, and a derivative was crowned the mother sauce

The state this tag represents

escoffier-1909  151 sauces, 57 derived, 94 unresolved
escoffier-1907  140 sauces, 51 derived, 89 unresolved
export          293 lines, 271,737 bytes, identical SHA-256 on every run
import --check  2 catalogues and 291 preparations rebuilt. Nothing written.
diff 1907 1909  11 unmatched, 18 parent-changed, 35 ocr-suspected

A mother no longer binds by a name run to a preparation whose opening paragraph
states that mother. The statement test is ADR-0008's own — a whole run of words
inside one sentence of the opening paragraph — now shared by both readers
through a new module, saucier.domain.statement. In 1907 that removes the only
candidate for espagnole, the mother stays uncatalogued in that witness rather
than falling back to a derivative, and Lenten Espagnole takes the parent its
first sentence names.

There are ten mother bindings across the two witnesses. One is the exact name
ESPAGNOLE in 1909, which wins before the guard runs. One is the wrong 1907
binding this removes. The remaining eight are name runs that face the guard and
survive it, because Escoffier opens a base with its quantities rather than with
its name. So the whole change to the parsed data is one field: entry 24's
"parent": null becomes "parent": "espagnole", seven bytes on the 271,730
that v0.6.0 exported. The 1909 census does not move and its JSON is
byte-identical. See
ADR-0018.

Behaviour change: the 1907 Espagnole lookup now refuses

saucier show espagnole --source escoffier-1907 printed LENTEN ESPAGNOLE and
exited 0 through v0.6.0. It now prints no preparation named 'espagnole' and
exits 1. saucier tree espagnole --source escoffier-1907 heads on the bare
concept instead, with Lenten Espagnole among the children rather than above
them. Anything scripted against either command sees that. The commit landed
with a fix title and release-please derived a patch from it; the refused exit
code and the new public module are why this tag is 0.7.0.

Run it

No GPU, no API key, no database, no network. Both source texts are committed.

git clone https://github.com/Alberto-Codes/saucier
cd saucier && git checkout v0.7.0
uv sync && uv run saucier parse
sed -n 1730p corpus/escoffier-1907.txt
uv run saucier tree espagnole --source escoffier-1907
uv run saucier show lenten-espagnole --source escoffier-1907
uv run saucier show espagnole --source escoffier-1907   # refuses, exit 1

0.7.0 (2026-09-10)

Fixes

  • domain: reject mother bindings to derivatives that state the mother (#20) (1664e75)

Chores