Repository navigation
Per-appellation grapes and colours where one document covers several - #29
Merged
Merged
Conversation
… the Alsace grands crus The 51 Alsace grands crus share one cahier; sections III and V state a general rule, then name the crus that depart from it. Stage 02 read both sections whole, so every cru carried Pinot noir, red, Sylvaner, Chasselas and Pinot blanc, and a grape filter returned all 51 (found through the MCP server). shared_cahier.own_text / own_encepagement keep the units that name the record (lettered clause, table row block, sentence), else the general ones; "à l'exception de « X »" excepts X, a "X ou Y" register name answers to either alias, and "pour les vins rouges / rosés" items drop when the record's own colour lacks them. Red is now Hengst, Kirchberg de Barr and Vorbourg only; Sylvaner Zotzenberg only; the accessories Altenberg de Bergheim's and Kaefferkopf's. The same rule splits Anjou / Cabernet d'Anjou / Rosé d'Anjou (Cot is Rosé d'Anjou's) and Pouilly-Fumé (Sauvignon) / Pouilly-sur-Loire (Chasselas). A SIQO product named "… vendanges tardives …" / "… sélection de grains nobles …" now adds that category when its categorie column says "Vin tranquille" — Kaefferkopf had lost VT / SGN, Monbazillac gains sweet. Full stage 02: 57 records changed, grapes / styles / categories only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Stage 04 synthesized every sottozona as a copy of its parent, so Friuli
Colli Orientali Pignolo di Rosazzo listed nineteen varieties and white,
Romagna Cesena Albana and Trebbiano. 02f (parser v5) now records, per
sottozona annex of the disciplinare PDF, the sottozona names its title
declares (after the last "sottozona"; Barbera d'Asti's Colli Astiani title
opens on Tinella's labelling rule), its Article 2 roster when that article
is a variety article, and its styles when it has an organoleptic article
(found by its opening — annexes renumber); stage 04 gives them to the
sottozona the annex names. 37 of 78 sottozone take their annex's roster;
Riviera Ligure di Ponente's annexes carry no variety article and keep the
parent's.
Parser: a participle closes a "vitigno X" name ("uve del vitigno Pignolo
prodotte"), "uva X" reads like "vitigno X" (Isera's "dall'uva Marzemino
gentile prodotta"), "per un minimo del 30%" is a share tail (Valtènesi's
Groppello), and a sottozona's own name never reads as a grape ("Tinella"
had fuzzy-matched Grenache). Outside the annexes this adds Curtefranca's
rosso / bianco roster, Colli Berici's Tai rosso (Grenache) and Colli di
Parma's Moscato bianco. "chiaretto" reads as rosé.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
INAO publishes one cahier per appellation and a DGC is a section of it; stage 02 copied the parent's colours and roster onto every DGC, so Touraine Oisly read red and rosé with Cot and Pinot noir, Saumur Puy-Notre-Dame white with Chenin, the red-only Languedoc and Côtes du Rhône Villages DGCs white and rosé. dgc_rules.dgc_text reads the part of section III / V that names the DGC: a prose reservation sentence or clause, or — for the two-column pdftotext tables — a centred or full-width heading scoping the rows below it, else the left label paired with the value block it overlaps. A DGC section V does not name keeps the parent's roster minus the clauses / rows of a colour it is not allowed (Côtes de Bordeaux Cadillac). Only a reservation counts in prose (an IGP's description of a unit's whites is not a rule), "hormis / sauf" except, and a clause ending "la liste suivante :" takes the list after it (Var Correns). 78 of 1,074 DGCs changed grapes or styles, 47 more record `dgc_rules` only; no parent changed. shared_cahier's table-row splitter no longer fires on a prose list wrapped onto a line opening with a name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s for them
Vinho Verde: the caderno says wines with a sub-região name "devem ser
exclusivamente obtidos a partir das castas enumeradas nos quadros
seguintes para a respetiva sub-região"; each of the nine sub-regiões now
reads its own table (Monção e Melgaço: seven varieties with Alvarinho, not
the DOC's 46). A two-word row whose words both resolve is a name and its
synonym with the ";" lost ("Vinhão Sousão", "Alvarelhão Brancelho" had
fuzzy-matched a white variety).
Valais: OVV art. 88 reserves Grand Cru to fifteen varieties; the twelve
communal Grands Crus carried the 45-variety Valais AOC list. Ticino: art. 23
splits the DOC roster by grape colour and art. 20 reserves «Rosso - Bianco -
Rosato del Ticino» to one colour, so each tier takes its colour's list and
style (Bianco del Ticino was tagged red); the DOC Ticino loses Alphonse
Lavallée, Léon Millot and Plantet, read from the list of varieties barred
from blending. `list_varieties` reads these short lists (footnote digits,
wrapped names, Italian articles); "Sauvignon Grigio" folds to Sauvignon gris.
Spain: a subzona reads its DO's national pliego (Rioja Alta lacked the
Malvasía the Rioja pliego adds), and Vinos de Madrid's "Principales Subzona
de …" lines make those varieties a subzona's principal grapes.
Checked and left inheriting, the documents stating no own roster: ES Rioja,
Ribeira Sacra, Monterrei, Costers del Segre, Alicante, Valencia; PT
Alentejo, Douro, Porto, Trás-os-Montes, Tejo; CH GE premiers crus, VD, BE,
SZ, FR; LU communes. 42 records changed, grapes / styles only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…napshot CI installs no py7zr (bootstrap group), so the sottozona annex test could not load scripts/it/02f_extract_masaf.py. annex_entry moves into _lib/it/masaf.py and the script keeps a thin wrapper. The committed vocabulary snapshot CI matches against predated the "Sauvignon Grigio" alias; regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Found through the MCP server: a grape filter returned all 51 Alsace grands crus for Pinot noir, because each cru carried the union of the shared cahier. The same pattern — a document that singles out an appellation or sub-denomination, read whole for every record — turned up across the corpus. Each record now reads the clauses, rows or annex that name it, and keeps the parent's rules where its document names none.
shared_cahier.py): red is Hengst, Kirchberg de Barr and Vorbourg only; Sylvaner Zotzenberg only; Cot is Rosé d'Anjou's; Pouilly-Fumé is Sauvignon, Pouilly-sur-Loire Chasselas. Kaefferkopf regains VT / SGN (SIQO product names over a mis-setcategorie).dgc_rules.py): 78 of 1,074 changed — Touraine Oisly white Sauvignon, Saumur Puy-Notre-Dame red Cabernet franc, the red-only Languedoc and Côtes du Rhône Villages DGCs, Côtes de Bordeaux Cadillac / Castillon red only. Two-columnpdftotexttables are read by column (headings scope rows, labels pair with the value block they overlap).Every change was checked against the source text; documents that name sub-areas only for area or terroir keep the parent's roster (listed in the last commit). No parent record outside Alsace grand cru / Anjou / Pouilly changed. 1,115 tests pass;
audit_empty_grapes --strictclean.Not done: five Valais Grand Cru varieties absent from the lexicon (Amigne, Humagne blanc, Rèze, Cornalin du Valais, Humagne rouge — needs a VIVC pass); Rías Baixas' ≥ 70 % subzona-label rule; ~30 MASAF annex sottozone with no record yet.
Needs a full rebuild before deploy (stage 02 FR, IT 02f
--all --include-nonstub, PT / CH stage 02, stage 03, stage 04).🤖 Generated with Claude Code