Skip to content

Feat/zoom lod - #27

Merged
bdevloed merged 5 commits into
mainfrom
feat/zoom-lod
Oct 4, 2026
Merged

bdevloed merged 5 commits into
mainfrom
feat/zoom-lod

Conversation

@bdevloed

@bdevloed bdevloed commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

zoom and bulk misc changes

bdevloed and others added 5 commits September 23, 2026 09:04
…at Trousseau noir

The fr override pinned `trousseau-gris` to the "Trousseau" article, so the
French Pineau des Charentes card showed the noir variety's summary on the
gris pill (visitor flag, 2026-09-21). `null` marks the fr article as absent;
the fr/nl tooltips now carry the en "Trousseau gris" extract, translated.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… z12, parcels above

Zoom, not the Simple/Advanced toggle, now decides which geometry the map
draws. The 1,259 French records with an INAO parcellaire get a generalised
vineyard footprint below the detail zoom — a 250 m morphological closing of
their parcels (scripts/_lib/vineyard_envelope.py: connected-component
decomposition before the closing, Languedoc 31 s instead of 832 s; a
content-addressed cache under raw/cache/) — and the parcels themselves from
z11, with a crossfade to z11.9. Median footprint area is 1.3× the parcels
against 5–8× for the commune union the default view drew before, which
painted the Gironde estuary for Saint-Estèphe (visitor flag, 2026-09-21).
Every other record keeps one polygon at every zoom.

Stage 04 writes a third GeoJSON/tileset, appellations-overview (z3–z11);
the detail tileset is z11–z12 (88 + 42 MB, was 114 + 95). The commune-level
appellations-villages.geojson is still written for audit_geometry_overlaps
but no longer tiled. Gates: every slug in both bands (two records had no
low-zoom feature before), the footprint bbox inside the parcels' bbox + r,
a ratio warning. `area` stays the parcellaire area on both features so
fill-sort-key and the paint ramps never step at the crossfade; `parts` and
`frag` (perimeter/area) drive the outline: constant ink per fill from z10
(a 112-parcel record draws a 0.4–0.8 px edge, a single-part one keeps the
area ramp), an opacity ramp on `parts` below the crossfade, and footprints
draw with no outline below z6.5 and a lighter fill at the overview.

The panel and the SSR card now say what every polygon is: the zoom-reactive
footprint line, a "union of the n communes, water included" line for plain
commune unions (every French IGP and Champagne said nothing before), and a
zone-source line for the other countries' regulators (geoportal / MAPA /
Bétard 2022 / administrative union). Feedback Flagged/Retracted/Note and
Appellation Viewed carry `lod` and `zoom`. The toggle no longer swaps
layers; it still gates spirits and the expert facets (to be simplified).
New audit: scripts/audit_vineyard_envelopes.py (parity, containment,
inflation, bridging onto neighbours, --water via BD TOPO incl. rivers).

Also carries the 2026-09-22 feedback-triage leftovers that touch the same
files: `view_mode` on the feedback events, the PLAUSIBLE_API_KEY-in-.env
notes in CLAUDE.md / docs/analytics.md, and the CURATOR_TODO triage section.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…" becomes a chip toggle

The sidebar's Grapes section (a second "Search grapes…" typeahead with its
own chip tray, plus a permanent "main grape only" checkbox) is gone: the
omnisearch is the only search box. A grape picked there appears as an
active-filter chip as before, now followed by a chip-shaped "Main grape
only" checkbox that narrows the filter to the principal roster; the toggle
exists only while a grape chip does, is no longer persisted in
localStorage, and clears with the last grape chip. Removes
buildGrapeChipFilter and its helpers from app.js, the facet markup and its
CSS from the template, and the `search_grape_placeholder` msgid.

Also: audit_vineyard_envelopes reports bridging as the union of the
neighbours' parcels inside the added area (overlapping neighbours were
summed twice, giving shares above 100 %) and treats an appellation that
covers half of the record's parcels as shared ground rather than a bridge.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…s delimit their area

849 records read (every non-French record with a cadastral / exclusion /
partial-municipality marker in its delimitation text, or a real same-country
overlap with another appellation), classified by one reader per batch and
re-verified against the full text for every high-rated record. Overlapping
specifications almost never name each other; where a border is resolved it is
by each document's own sub-municipal line. Cadastral identifiers exist in 99
records (ES 50 → SIGPAC, IT 20 → cadastral fogli, SI 12 + SK 7 → cadastral
municipalities, DE 8 → Flurstücke); sub-municipal administrative units carry
Portugal (freguesias), Romania, Greece and Cyprus; Italy's default is a
road-by-road narrative trace with altitude limits. Recommended order and the
CURATOR_TODO pointer included.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Geometry
- GR area-units layer: Greek PGIs draw LAU commune unions from the ΥΠΑΑΤ
  spec prose (containers vs members, localities as proxies, former
  επαρχίες, boundary lines through Wikidata/GeoNames landmarks); pins in
  gr/commune_overrides.json, gr/landmarks.json.
- ES: compound municipios + municipio mergers tables, FEGA SIGPAC
  footprint reading (Sierra Sur de Jaén, Priorat, Montsant), IET Galician
  parroquias incl. redrawing whole-municipio MAPA zones (Monterrei).
- IT comune parser: exclusion clauses, "Provincia di X:" headers,
  multi-word misses, ISTAT spelling folds. RO/PT/DE commune resolvers.
- Detector review: outlier whitelist with cited evidence, overlap audit
  classes (BORDER/TIER/GENERALISATION/SOURCE-DRAWN/SUSPICIOUS), aires
  near-exact + alias binding (Calvados Domfrontais).
- Zoom-LOD: adaptive footprint radius, bridging/water audit, lod + zoom
  on feedback events.
- FR parcellaire: curator gap fills + audit, rows carried forward from
  the 2026-05-11 release (Saint-Sardos, Languedoc Montpeyroux), aires
  supplements (Cévennes, Côtes de Thau, Maures).

FR corpus
- SIQO supplements + stage-02 drop guard; promoted GIs registry
  (Languedoc Montpeyroux → Montpeyroux); name overrides (Marc d'Alsace
  Gewurztraminer).
- Stage 02: homologation dates, unnumbered 2024 layout, aire table
  label column, proximity sentence, whole-département aires, page-cut
  lists, 2026 eau-de-vie template, linear DEPT_HEADER_RE.
- FR wine regions replace INAO comités as the region facet.

IT
- MASAF in-PDF variety annex read as roster or accessory complement per
  Article 2 wording (Bolgheri Sassicaia, regional IGTs).

Search / SEO
- Punctuation fold, derived ELOT / BG search forms, BG official
  transliteration bracket, Wikidata region search terms + exonyms.
- SSR card revealed when the app cannot render (Googlebot saw blank
  entity pages); map-word titles, fact-first descriptions, Latin-first
  GR/BG titles, IndexNow on canonical URLs only, stale entity pages
  pruned, language switcher keeps the appellation.
- WebMCP tools behind the origin-trial token.

Fixes the omnisearch gate test harness for the shared openAppellation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bdevloed
bdevloed merged commit a619b99 into main Oct 4, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant