Methodology

How the practical regions of Europe of the Regions were drawn, where the layers disagreed, and where we disagree with ourselves — updated for draft_v0.2.2's two-level model ( fine-grained cultural units grouped into representation groupings, target 40–70).

1. Approach & assumptions

Every unit in this dataset sits deliberately between two administrative scales that already exist: NUTS 0 (the nation-state) and the official NUTS 1 macro-region. We call the units in between practical regions — not a new layer of government, but a candidate map of where cultural-economic coherence already exists, whether or not any current boundary draws it that way.

Why non-national units

This dataset is not a re-slicing of the nation-state at a smaller grain. It pursues two aims together: cultural unity — the cultural-units layer described below, identity-true at whatever grain that requires — and functional self-governance, the devolution and economic-self-sufficiency case the autarky index (further down this section) exists to measure. Germany is the model worth naming directly: it already operates as at least three centers of gravity with their own economic potential — Berlin, Munich, and Cologne/the Ruhrgebiet — rather than one dominant capital radiating outward. The asymmetry this dataset argues against is the current one, where a small state like Slovenia sits formally equal but practically outweighed next to a state many times its population and voice; the fix is not to make Slovenia bigger, but to work at the scale of far smaller regions everywhere. That rescaling only makes sense together with a strong European identity in its own right — without one, nothing actually changes: national leaders simply become the layer everything gets renegotiated through again, bypassing whatever the regional map says.

Input layers

Each region was assembled by triangulating several independent, often disagreeing layers of evidence, rather than any single official source:

Inclusion test

A candidate region had to clear a three-part test:

  1. one urban center already functioning as a cultural hub;
  2. its own diversified industrial base (not a monoculture);
  3. a distinct sub-national identity that is dependent on, not seeking independence from, its national state.

Where the input layers genuinely conflicted — a dialect continuum crossing a national border, a minority-language pocket inside a larger region, a contested internal boundary — the conflict was recorded as a toggleable conflict zone (conflict_flags in the data) rather than force-resolved into one boundary. 25 such flags exist across the dataset, from Eupen-Malmedy to Sápmi to Kosovo's internal north.

NUTS-vintage policy

Region nuts_codes follow the GISCO 2024 geometry vintage (NUTS_RG_20M_2024_4326.geojson), not the 2027 xlsx recoding that data/nuts_index.json is drawn from, wherever the two disagree. Three countries' codes were affected: Norway's 2024 county geometry (NO02/06/07/08/09/0A1/0A2/0A3) rather than the 2027 sheet's NO0C/0D/0E; Belgium's 2024-vintage BE21/23 rather than the 2027 recoding's BE26/27; and Bulgaria's pre-reform BG3/BG4 rather than the 2027 sheet's BG5/BG51-54. The rule throughout: author against whichever file the pipeline can actually render, and flag the mismatch rather than silently reconcile it.

Geometry sources

Autarky index

Each region carries a 7-dimension self-sufficiency estimate — Water, Food, Shelter, Energy, Transportation, Hygiene & Healthcare, and Clothing — scored 1–5 with a composite equal to the arithmetic mean. Security and Digital/Connectivity are explicitly out of scope: the index measures material provisioning capacity, not defensibility or network resilience, and folding either in would have required a different (and much more contested) evidentiary basis.

Scores are expert-style estimates, not measurements. We are explicit about that subjectivity rather than dressing the numbers up as harder than they are: each score carries a one-to-three sentence rationale citing the decisive factor (e.g. a region's water score reflects watershed/reservoir capacity relative to population; energy reflects generation mix and grid dependency), authored per-region rather than derived from a single external statistical series. Composite scores should be read as relative-ranking signals across the dataset, not as validated indices.

2. Priority axes & re-drawn boundaries (v0.1.2)

The input-layer list in section 1 is not a flat checklist — the user set an explicit priority ordering for this draft, and v0.1.2's boundary changes (splits, merges, re-homings) were made by re-weighing every contested unit against these axes in this order:

  1. Culture & عصبية (ʿaṣabiyya) — Gemeinschaftsgefühl / group identity. Ibn Khaldūn's term for the social solidarity that binds a group together comes first: does a population actually feel itself to be one thing, independent of where a modern administrative line happens to run? This is the axis that drove the Styria≠Carinthia, Basel/Bern-Mittelland/ Romandie Grossregion groupings, Upper Silesia's Ślązacy self-declaration, and the Kashubia/Kuyavia/Warmia-Masuria "fit" gradient (section 6).
  2. Einzugsgebiete (catchment areas) — the functional area a city or region genuinely draws people, commuters, and services from, independent of identity. Used to decide edge cases once identity alone under-determines a boundary (e.g. Deventer's Overijssel/Achterhoek catchment, Preston-Lancaster's dipole).
  3. Train lines — rail corridors as a proxy for lived, everyday connectedness (commuter and intercity), read where identity and catchment both leave a boundary open.
  4. Waterways — rivers and canals as historic trade and settlement corridors (the same logic already underlying the Rhône-Alpes and Mur/Enns-valley cases from v0.1.0).
  5. Watersheds — drainage-basin topography, the lowest-priority tiebreaker, used mainly for Alpine and fjord-culture cases where no stronger signal resolves the line.

Every v0.1.2 boundary change was re-drawn through this lens stack, highest-priority axis first: ʿaṣabiyya/identity as the primary test, catchment areas and transit/water corridors as tiebreakers where identity alone is ambiguous or contested. Where a v0.1.0 boundary already matched this ordering, it was left untouched — the axes are a re-verification method, not a mandate to re-draw everything from scratch.

3. Two-level model: cultural units & representation groupings

Philosophy: define the cultural atoms first, at the finest grain that still passes the inclusion test (section 1) and the priority-axes re-check (section 2) — then, and only then, group those atoms into a separate representation layer sized for practical governance. The two questions — "where does identity actually run?" and "how many seats can a chamber usefully have?" — are answered independently, in that order, so that a representation constraint never quietly overrides an identity finding.

cultural units (default-visible)
alternate-view composites
representation groupings (target 40–70)
variant sets

Loading live counts from the current data build…

Cultural units (fine-grained, identity-true)

The data/regions/*.json zone files are the atomic layer: every record that clears the inclusion test on its own ʿaṣabiyya grounds gets its own unit, regardless of how small that makes it relative to a governance-sized region. This is why the dataset now runs to roughly two hundred units rather than converging early on something closer to the 40–70 target — that convergence happens one layer up, not here.

Representation groupings (40–70 target)

data/groupings.json partitions every default-visible cultural unit into exactly one grouping — singletons are allowed where a unit is already large enough (or too distinct, e.g. a sovereign microstate) to stand alone. This layer, not the cultural-unit layer, is what the original 40–70 target was always meant to size. Content agents working zone-by-zone initially overshot this target substantially (a zone-by-zone artifact, documented candidly in the v0.1.2 changelog); a dedicated cross-zone consolidation pass brings the dataset-wide total toward the target range. Read the number in the stat strip above as authoritative for whichever build served this page, not the prose here.

The map switch

The map exposes a Cultural units ⇄ Representation groups master switch. In cultural-unit mode every atom renders with its own boundary and label. In representation mode, grouping members visually dissolve into their parent grouping — a thick shared outer border replaces the internal seams, and a single label covers the whole grouping — without deleting or renaming the underlying cultural units, which remain the dataset's source of truth.

EP delegation model: population balance across representation groupings

v0.1.2 keeps the European Parliament chamber as-is rather than proposing a new institution — the change is in how seats would be allocated: each representation grouping sends a roughly equal delegation, instead of national delegations sized by degressive proportionality. The design target for the resulting population spread is a max factor of 3–7 between the largest and smallest grouping, 10 at the absolute outside — tighter than today's EP, where Germany's ~96 seats against Malta's 6 already implies a 16× spread by seat count, and the per-seat population gap runs to roughly 10× (Malta ≈86,000 people per seat vs. Germany ≈860,000).

Amendment A3 (round-4 feedback) adds a second grouping layer purpose-built to hit that target, alongside the original affinity-based layer, and Amendment A4.1 (round-5 feedback) adds a third, state-boundary variant: data/grouping_schemes.json carries the original Affinity (66) scheme (culturally-driven, unchanged from the count-target discussion above) plus however many further schemes — such as Balanced, engineered so its non-exempt max factor lands at or below 7×, and A4.1's balanced-national variant, which additionally forbids any grouping from crossing a state border — the current data build defines. Groupings a scheme marks factor_exempt (sovereign microstates, exclaves, and similar singletons) sit outside that scheme's factor calculation and are listed separately as special status, rather than dominating the spread the way they did under the single-scheme analysis. A scheme may additionally mark a sovereign_floor list (A4.1 — small sovereign states that cannot merge upward without crossing a state border): those groupings are excluded from the factor too, but labeled distinctly as "sovereign minimum — cannot merge without crossing a border" rather than "special status", since they represent a structural floor rather than an exemption. Every scheme's live stats are shown side by side below, generated from the data file rather than a fixed pair; the full data-driven breakdown lives on the data table page.

Loading live population-balance analysis…

4. Autarky index: per-dimension rationale & beta dimensions

Section 1 already describes the 7-dimension autarky index and its composite score. v0.1.2 makes two additions on top of that unchanged foundation.

Required per-dimension rationale

Every region's autarky.rationales object now carries a required, non-empty, one-sentence score basis for the three dimensions the user singled out as most load-bearing — water, food, and energy — citing the concrete factor behind the number (a watershed, a specialty export, a hydropower/grid-dependency fact). Rationales for the remaining four dimensions are optional and present wherever a region's authoring agent had a decisive factor worth recording. This is additive to, not a replacement for, the single-sentence autarky.rationale field already described in section 1.

Beta dimensions

Four of the seven dimensions are marked beta in this build: shelter, transportation, hygiene & healthcare, and clothing. "Beta" here means the dimension is judged easily importable within the continent — a shortfall is a logistics/trade problem, not a structural one, unlike water or food where geography sets a hard local ceiling. Selecting a non-composite beta dimension in the detail panel shows a small box under the region name with that dimension's score basis and a "beta" badge, so the distinction is visible at the point of use, not only in this document.

Hygiene & Healthcare, redefined

This dimension is redefined for v0.1.2 as the region's industrial capacity to produce the medical and sanitation wares it needs (masks, basic pharmaceuticals, dressings, water-treatment chemicals, hospital consumables) — not bed counts, staffing ratios, or clinical outcomes, which belong to a health-system-quality question this index does not attempt to answer. A region can score low here while having excellent hospitals, if it manufactures none of what those hospitals consume.

Honest subjectivity, unchanged

The section-1 caveat still applies without softening: these remain expert-style estimates, not measurements, read as relative-ranking signals rather than validated indices. Adding required rationales makes the basis for each score legible and checkable — it does not make the scores themselves more objective.

5. Parliament rule & exceptions

Rule: any region with its own parliament gets its own cultural unit. A parliament — a directly elected legislative body with genuine law-making competence — is treated as the single strongest available proof that a population already governs itself as one thing, stronger than dialect maps or catchment analysis alone. Applying this rule swept every in-scope state: it resolved several v0.1.0 parsimony merges that had been flagged as open tensions (Rhineland-Palatinate≠ Saarland, Berlin≠Brandenburg, Styria≠Carinthia, Salzburg≠Upper Austria), and it is why Bosnia and Herzegovina's three entity parliaments (Republika Srpska, the Federation, Brčko) each now get their own unit.

The rule is not applied blindly, though: most of Europe's unitary states (France, Netherlands, Nordics, Ireland, Poland's, Czechia's and Slovakia's sub-national tiers, most of Southeastern Europe) have no regional parliament at all below the national legislature — county/kraj/voivodeship/oblast councils are deconcentrated administration, not legislatures, and the rule simply does not fire there. The exceptions below are the opposite case: units where a real, legislative sub-national parliament does exist, but the cultural unit was deliberately kept spanning more than one of them anyway — the user asked explicitly to see these, rather than have them absorbed silently into the "it's fine, don't worry about it" pile.

Loading…
Cultural units that deliberately span more than one real sub-national parliament
Unit Parliaments inside Why kept merged
Loading exceptions…

Rendered client-side from data/parliament_exceptions.json — the same file the pipeline and app both read, so this table cannot drift from the dataset it describes.

The inverse case: one parliament, several cultural units

The exceptions table above covers units that merge several real parliaments. The opposite pattern also exists in the dataset, and is just as real an exception to a naive "one parliament, one unit" reading, even though it doesn't fit the merge-table's columns: a single real parliament whose jurisdiction is split across several cultural units, because the identity case for splitting outweighed the administrative case for one parliament, one region. This affects Baden-Württemberg (one Stuttgart Landtag, split into de-baden and de-wuerttemberg on their distinct pre-1952 histories), Bavaria (one Bayerischer Landtag in Munich, split into de-franconia, de-bavarian-swabia and de-munich-altbayern), North Rhine-Westphalia (one Düsseldorf Landtag, split into de-rhineland and de-westphalia), and Scotland (one Holyrood, split into uk-scotland-central-belt and uk-scotland-highlands). A related but distinct partial case: the Sámi Parliaments of Finland, Sweden and Norway are real elected bodies with genuine cultural-autonomy competence, but not territorial legislatures over their whole host region (fi-lapland-sapmi, se-norrland-upper, no-tromso-north-norway) — a partial exception worth naming even though it fits neither table direction cleanly.

6. Variant sets: alternative views

Some regions are genuinely contested between two or more defensible boundary readings — not a case where one answer is right and the rest are mistakes, but one where the honest move is to let the user see and switch between the readings directly. v0.1.2 introduces variant sets (data/variant_sets.json) for exactly this.

The three-view pattern

Most sets follow the same three-view shape, though the exact labels are set-specific:

On the map, each set renders a small clickable chip at its authored anchor coordinate (zoom-aware); clicking cycles or opens the view options directly at the point on the map the set concerns, rather than burying the choice in a sidebar list (the sidebar keeps a compact mirror for accessibility/search, but the map chip is the primary interaction — this was explicit user demand).

Notable calls

Pomerania sub-region fit, as supplied by the user
Sub-regionCore identity markerFits "Pomerania"?
Kashubia (Tricity hinterland)Distinct Slavic language, seaside continuityStrong
Kuyavia (Bydgoszcz–Toruń)Hanseatic/Royal-Prussia river-trade townsWeak
WarmiaCatholic, German-Polish contact zoneWeak
MasuriaProtestant, post-war resettledWeakest

7. The six push-back challenges

The project brief itself mandated that six specific claims be challenged rather than assumed. Each is addressed here with the verdict reached and the evidence behind it.

a. Lower Saxony vs. Saxony

Verdict

Kept as two separate, unrelated regions — the naming resemblance is a historical accident, not a genealogical link.

Despite the near-homophone English names, Niedersachsen (Lower Saxony) and Sachsen (Saxony) are historically and dialectally unrelated. Lower Saxony descends from the medieval Duchy of Saxony's north-western, Low-German-speaking remnant. Modern Sachsen descends from the Wettin Margraviate of Meissen / Kingdom of Saxony, an East Central German-speaking territory that inherited the "Saxon" title through a 12th-century dynastic transfer, not linguistic-territorial continuity. Both are authored as separate regions (de-lower-saxony, de-saxony); each record's nuts1_disagreement flags the naming confusion directly.

b. Hungary subdivision

Verdict

The brief's proposed four-way split (Budapest / Győr-Western Transdanubia / Pécs-Southern Transdanubia / Szombathely-Balaton) is rejected. Two regions are authored: hu-budapest and hu-videk ("the countryside").

Three findings drove the rejection. First, Hungary's NUTS-2 regions were a top-down, EU-driven 1999 statistical construct that "failed to create a regional identity" (Assembly of European Regions, 2021) — the meso-tier lost any policy function after 2010, and Budapest itself was only carved out of Közép-Magyarország as its own unit in 2018, meaning the administrative geography the four-way proposal rests on had already been partially reversed. Second, "Szombathely-Balaton" is not an official or academically recognized unit at all: Szombathely and Győr sit inside the same official NUTS-2 region (Nyugat-Dunántúl/HU22), so the four-way proposal actually splits one real region into two competing, unofficial carve-ups — where a real rivalry does surface (Győr–Sopron), it operates at the county level, beneath any of the four proposed units. Third, Transdanubian-vs-Alföld dialectology is real linguistically but rides on no organized regionalist or autonomy movement anywhere in a country that "has been centralized throughout 1000 years of its history" (regscience.hu).

Two is defended over four because no organic basis exists for four units; two is defended over one (treating Hungary like Slovenia) because the Budapest/vidék cleavage is a live, currently salient political and demographic divide (~30% of the national population and a disproportionate GDP share concentrated in the capital), unlike the abolished statistical regions. We are transparent that hu-videk only weakly clears the single-urban-hub criterion — Debrecen, Szeged, Miskolc, Pécs and Győr are comparably sized — an honest limitation, not a manufactured pass. The rejected four-way proposal also omitted the Great Plain and Northern Hungary entirely (Debrecen/Szeged/Miskolc, roughly 40% of the population), a coverage gap independent of the identity critique.

c. Kosovo, Bosnia & Herzegovina, and Vojvodina — organic regionalism vs. post-conflict partition

Verdict

These three sit at genuinely different points on the organic-vs-imposed spectrum and are treated differently, not as one category.

Vojvodina is the clearest case of organic regionalism: multiethnic (Serb/Hungarian/Slovak/Romanian/Croat/Rusyn), several co-official languages, a Habsburg military-frontier and Kingdom-of-Hungary history predating 1918 — its distinctiveness predates any 20th-century conflict by centuries and its autonomy evolved gradually (1945, 1974, reduced 1990, partially restored post-2000). It is modeled as its own region (rs-vojvodina).

Bosnia and Herzegovina's internal entity structure (Federation / Republika Srpska / Brčko) is the opposite case: the 1995 Dayton Agreement drew these lines specifically to freeze 1992–95 war front lines and ethnic-cleansing outcomes, not to recognize a pre-existing cultural boundary. BiH is therefore kept as one region (ba-bosnia-herzegovina) — against the formal single-unit-exception list, which BiH is not on, but by the same underlying logic — with the entity lines rendered only as a toggleable conflict_flag, refusing to treat a war-partition as equivalent to organic subdivision.

Kosovo sits in between: its Albanian-majority regional distinctness from Serbia is itself centuries-old (Ottoman-era demographic shift, 1912 annexation against local wishes, 1974–89 autonomy, 1989 revocation) — organic in origin — but its current statehood, as opposed to mere regional distinctness, was produced by the 1998–99 war and NATO intervention, and the Serb-majority north remains a live, contested fault line. Kosovo is modeled as a single exception-list unit without an internal north/south split, treating its external-boundary dispute with Serbia as the real point of contestation rather than manufacturing a second internal partition on top of an already-contested one.

d. Timișoara / Banat

Verdict

Kept as mandated, distinct from Transylvania and Wallachia — but honestly weaker at its administrative edges than at its core.

Banat is real and strong at its Timișoara–Timiș–Caraș-Severin core. It is weaker at the edges the NUTS-2 boundary (RO42) forces in: Arad county is transitional Banat/Crișana, and Hunedoara county — the iron-and-coal Hunedoara/Hațeg belt — arguably reads as more Transylvanian than Banatian. The mandated split and the RO42 boundary (the only cleanly resolvable option) were kept rather than inventing an unresolvable sub-county carve-out, but ro-banat-timisoara's own nuts1_disagreement states plainly that the case is stronger in its core than at its edges — this is not smoothed over.

e. Regions failing the three-part test

Verdict

Several weak-fit regions were kept anyway, for stated reasons; others were merged or excluded, also for stated reasons. None were silently dropped.

Kept despite a weak fit: Calabria (it-calabria) — Reggio Calabria, Catanzaro and Cosenza form a genuinely polycentric triad with no dominant city, and the formal industrial base is thin and distorted by organized-crime economic activity, but no adjacent region is a culturally honest merge target, so it stays standalone with the weakness stated openly. Finnish Lakeland (fi-lakeland, Savo-Karelia) — added later as a coverage fix (see below) with its polycentric Kuopio/Joensuu/ Lappeenranta fit noted honestly rather than assigning it a false single hub. East Midlands (uk-east-midlands) — Nottingham, Leicester and Derby form a polycentric conurbation with no single dominant city, unlike Birmingham, Manchester, Leeds or Newcastle. Hungary's hu-videk — see challenge (b) above.

Merged into a neighbor, reasoning stated in that region's nuts1_disagreement: Molise into Abruzzo (pre-1963 "Abruzzi e Molise" union); Valle d'Aosta into Piedmont (population/scale, no mandated toggle); Centre-Val de Loire into Pays de la Loire, Bourgogne-Franche-Comté into Rhône-Alpes, Auvergne into Aquitaine, and Champagne-Ardenne into Lorraine (each a stated corridor/contiguity rationale); Opole into Silesia rather than Lower Silesia (shared Upper-Silesian dialect); four eastern Polish voivodeships into one Eastern Poland bloc (EU's own "Polska Wschodnia" precedent); Podillia/Poltava-area Ukrainian oblasts into one Central Ukraine catch-all (no orphaned oblasts).

v0.1.2 update

Several of the regions the next paragraph lists as "assessed and excluded" are now included: Spain's La Rioja, Cantabria, Asturias, Extremadura, Murcia and Ceuta+Melilla; Portugal's Alentejo and Centro; Italy's Basilicata. See the v0.1.2 changelog (section 13) for the full list. The v0.1.0 paragraph below is kept verbatim as the historical record of the original count-discipline reasoning, not as a current statement of what's excluded.

Assessed and excluded as standalone regions (v0.1.0, historical) (defensible, but left out on count discipline, and flagged as candidates for a higher-resolution future pass): Spain's Asturias, Cantabria, La Rioja, Murcia and Extremadura; Portugal's Alentejo, Oeste e Vale do Tejo and Centro; Italy's Basilicata; Spain's Ceuta and Melilla. Aegean Islands (gr-aegean-islands) is the zone's clean example of a region that fails the test outright — no dominant hub, tourism monoculture — and is kept only because national-coverage completeness leaves no other honest home for its ~510,000 residents. Svalbard and Jan Mayen were excluded outright: near-uninhabited, no functioning urban hub, no diversified base beyond research/tourism outposts.

Added back after later review: East Midlands (UKF) was originally excluded as a ~4.9M-person coverage gap on the grounds that its three cities are polycentric with no dominant hub. A subsequent dataset-QA pass (Task 4) revisited that call and added uk-east-midlands back in, with the polycentric weakness recorded honestly in its inclusion_test rather than smoothed over — a coverage fix, not a reversal of the underlying evidence.

f. Count tension: 40–70 target vs. 191 actual

v0.1.2 update

This tension is now structurally resolved rather than merely argued through, by the two-level model (section 3): the 40–70 target was always a representation-layer target, not a cultural-unit-count target, and v0.1.2 makes that split explicit with its own data/groupings.json layer. The v0.1.0 verdict below is kept verbatim as the historical record of how that tension was first reasoned about, before the two-level model existed to resolve it structurally.

Verdict (v0.1.0, historical)

The dataset landed at 191 records — 188 base/congruent regions plus 3 noncongruent unified variants (Tyrol, Basque, Ireland) — well above the brief's 40–70 target and above even its own flagged 90–110 alternative. This was not a truncation failure: the brief itself instructed "let the count emerge from criteria... do NOT silently truncate," and every zone's overshoot is individually traceable and stated below rather than absorbed silently.

Three structural drivers account for nearly all of the overshoot:

  • Mandated splits, honored rather than dropped. Germany alone carries 18 explicitly mandated splits (Baden; Württemberg; Franconia; Bavarian Swabia; Munich/Altbayern; Hamburg; Bremen; Schleswig-Holstein; Lower Saxony; Saxony; Rhineland; Westphalia; Hesse; Rhineland-Palatinate+Saarland; Thuringia; Saxony-Anhalt; Berlin-Brandenburg; Mecklenburg-Vorpommern), which with five mandated Austrian regions, six Swiss macro-regions, Liechtenstein and the Tyrol toggle pair alone total 31 Germanic-core records against a zone guidance of "roughly 20–26." Norway's five mandated fjord-culture nodes, Finland's five mandated nodes plus Åland, and Romania's four historically distinct macro-regions behave the same way: every one of these was named explicitly in the brief, with the instruction to honor it "rather than silently dropping" it.
  • Full-coverage assignment. Once a country's territory had to be assigned without orphaning any part of it (all 16 Polish voivodeships, all of Ukraine's 27 SR2024 units, all of Italy's 20 traditional regions), thinly-populated or weak-identity remainders still needed a home — a Central Ukraine catch-all, an Eastern Poland bloc, a Peloponnese-Central-Greece catch-all — each one real territory that had to go somewhere.
  • Nordic and Ukrainian mandates specifically. The brief named five separate Norwegian nodes, six separate Finnish nodes (including Åland), three separate Swedish nodes plus Gotland, and six separately mandated Ukrainian conflict zones (Kyiv, Lviv, Odesa, Kharkiv, Donetsk, Luhansk) — each individually small in European terms but collectively adding roughly 30 records that a lower-resolution version of this dataset would have collapsed into perhaps eight to ten larger regions.

Zone-by-zone, the overshoot recurs everywhere: zone 1 (Germanic core) landed at 31 vs. "20–26"; zone 2 (France+Benelux) at 21 vs. "16–20"; zone 3 (Iberia+Italy) at 36 vs. "24–30"; zone 4 (Nordics+Baltics) at 24 vs. "18–22"; zone 6 (Central Europe) at 19, near the top of "15–19"; zone 7 (Southeast) at 22 vs. "15–19"; zone 8 (East+microstates) at 16 vs. "12–15." Hungary is the one counter-example, moving from a proposed four down to a defended two (see challenge b) — the net dataset count is therefore lower than a naive sum of every locally-defensible split would have produced, not higher.

8. Explicit disagreements with the spec's fixed decisions

The brief instructed that fixed decisions be applied and verified, but challenged rather than silently overridden where the evidence pointed elsewhere. These are the live disagreements on record:

Madeira added by analogy, not by mandate. The brief's scope list named only the Azores as a mandated Portuguese autonomous outlying unit. Madeira was added anyway (pt-madeira) because it holds an identical constitutional status — its own regional government, its own 1976/1991 Statute of Autonomy — and omitting it while including the Azores would have been an arbitrary asymmetry.

Ferrara → Emilia is contested, not settled. The mandated Emilia≠Romagna split assigns Ferrara to Emilia on the basis of Pellegrini's 1977 Carta dei dialetti d'Italia, which classifies Ferrarese within the Emiliano dialect group. The competing frame — Ferrara's historical administrative pairing with Ravenna and Forlì under the Papal Legations (Legazioni pontificie) — points the other way, toward Romagna, and is recorded in it-emilia's nuts1_disagreement as a live tension rather than adjudicated away.

Rhineland-Palatinate + Saarland merge, flagged as an open challenge. The brief names this as one combined region and it is authored that way, but Saarland has a materially distinct 20th-century history (League-of-Nations mandate 1920–35, a 1935 plebiscite, French administration again 1945–56, a 1955 reunification referendum) plus its own Saarländisch dialect — arguably a stronger claim to separate identity than several other combined-per-mandate regions in this dataset. The merge is followed as instructed, but flagged as an open question for review rather than a settled call.

Carinthia folded into Styria, not named in the zone spec. The zone-1 spec's Austrian region list omits Carinthia. Rather than leave its NUTS-2 code unclaimed or silently invent a sixth Austrian region, Carinthia was folded into Styria, producing at-styria-carinthia — matching NUTS-1 AT2 exactly. Carinthia's own identity (Kärntnerisch dialect, Slovene-speaking minority, Alpine-lake economy) is real and documented in that record, not erased.

Bulgaria: index and geometry disagree with each other. data/nuts_index.json lists Bulgaria under a newer scheme (NUTS-1 BG5, NUTS-2 BG51–BG54) that does not resolve against the committed GISCO geometry file, which still carries the pre-reform codes (BG3/BG4, BG31–34/BG41–42). The pre-reform codes — the ones that actually render — were used, and the discrepancy is flagged here as a primary-source inconsistency rather than silently reconciled. Incidentally, the older six-region scheme these codes imply matches Bulgaria's culturally legible planning regions better than the newer four-way split would have.

Five Ukrainian conflict-flag zones are rendered as text-only flags, without their own geometry — a settled dataset convention. zakarpattia-minority-identity, kherson-frontline-occupation, donetsk-occupation-frontline, luhansk-occupation-status, and zaporizhzhia-npp-and-frontline were originally authored with sub-oblast (raion-level) codes for precision, but this pipeline only resolves Ukraine at the oblast level via geoBoundaries, and no sub-oblast boundary source is integrated. Their zone_nuts_codes were cleared to an empty list — full description retained, geometry omitted rather than overstating the affected area to an entire oblast. The description carries the substance in each case. This follows the identical precedent already used for Moldova's Transnistria and Georgia's Abkhazia/South Ossetia flags, and was adopted as the dataset convention on that basis rather than as a one-off exception. See the data-limitation note on Ukraine's oblast-level resolution below for the underlying constraint.

9. NUTS-1 comparison

Loading… of the dataset's default-visible cultural units explicitly diverge from the official NUTS-1 (or, for non-EU/non-Eurostat countries, the corresponding SR-1) boundary they overlap — figures reflect whichever build served this page, not a number frozen at v0.1.0's 109-of-191. The table below is rendered client-side from data/regions.json and data/nuts1_reference.json: for every region with a non-empty nuts1_disagreement, we derive its overlapping official NUTS-1 unit(s) by taking the first three characters of each of its nuts_codes (the NUTS-1 code is always the country-plus-one-character prefix of any finer NUTS code by construction) and looking each one up against the reference list, mapping Greece's regional code (GR in this dataset) to its official Eurostat code (EL). Where no reference entry exists — the United Kingdom (excluded from Eurostat's NUTS classification entirely since Brexit) and the CNTR-sourced microstates/Moldova/Georgia (which have no NUTS-1 subdivision to compare against) — the cell says so rather than guessing.

Loading…
Practical region vs. overlapping official NUTS-1/SR-1 unit(s), with the recorded disagreement
Practical region Country Official NUTS-1 unit(s) Disagreement
Loading region data…

Reverse summary: how official NUTS-1 units fare

Computing…

10. Data limitations

Moldova and Georgia are single-polygon, country-level geometry. Both are modeled with CNTR country geometry because no sub-national NUTS geometry exists for either in this pipeline. Their Transnistria and Abkhazia/South Ossetia conflict flags carry a full description but an empty zone_nuts_codes list — the breakaway territories cannot be rendered as separate shapes, only described in text.

Ukraine's war-time population figures are ceilings, not current counts. Donetsk, Luhansk and Crimea's populations are pre-war/pre-occupation figures (2021 and 2014 Ukrainian state statistics respectively); active occupation, war damage and mass displacement since 2014/2022 make verifiable current counts unavailable from Ukrainian government sources, and occupying/de-facto authorities' figures are not treated as reliable census data. Autarky scores for occupied and front-line regions (Donetsk, Luhansk, Crimea, and the occupied portions of Kherson/Zaporizhzhia folded into the Odesa-South and Dnipro-Zaporizhzhia regions) reflect substantial war-driven degradation relative to pre-war baselines and carry higher uncertainty than the rest of the dataset.

Some conflict flags are text-only, without geometry. Five Ukrainian conflict flags (Zakarpattia minority identity, the Kherson and Zaporizhzhia frontlines, the Donetsk and Luhansk occupation statuses) and the Moldova/Georgia breakaway-territory flags carry no renderable boundary — see section 3 above for why — and appear in the map's legend and detail panels as description text only, not as a hatched overlay.

Population vintages are mixed, roughly 2021–2024. Figures are drawn from Eurostat regional statistics and national statistical offices where a single release matches this dataset's custom boundaries, and are otherwise computed as sums of constituent NUTS-2/3 populations from the closest available 2021–2023 releases. Where an exact current-year figure could not be directly verified, a well-established recent estimate is used and flagged via each region's population_note rather than invented. UK, Ireland, and several Southeastern European regions' figures in particular should be read as directionally reliable estimates, not official statistics — no single published release matches this dataset's custom region boundaries.

The UK has no entry in the NUTS-1 reference table used for section 4. The UK's NUTS-1 codes (UKCUKN) still resolve against the 2021 GISCO geometry file used for this dataset's UK regions, but the UK was dropped from Eurostat's own current NUTS classification after Brexit, so data/nuts1_reference.json (sourced from the live Eurostat/GISCO NUTS-1 list) carries no UK rows at all. Rather than inventing UK reference entries to fill the gap, the comparison table states this limitation directly against every UK region row.

11. Sources

Sources are tiered: A legal/government/ statistical-office primary sources, B journalism and analysis, C community and dialectology-adjacent sources. Sources older than ten years carry a ⚠️ flag.

Pellegrini (1977) and Wiesinger (1983) are both older than ten years ⚠️ and are used here for historical dialect classification, where the underlying linguistic boundaries change on a much longer timescale than the sourcing recency convention assumes — flagged rather than silently exempted.

12. Kaliningrad note

Kaliningrad Oblast — a Russian exclave of roughly 15,000 km² and approximately 1.0 million residents, wedged between Poland and Lithuania on the Baltic coast — sits geographically inside the mapped space of this dataset but is not included as a region record or geometry. It is non-EU Russian sovereign territory, cut off from mainland Russia since the 1945 territorial reorganization that renamed the formerly German/Prussian city of Königsberg — annexed from Germany, its ethnic-German population expelled — as Kaliningrad. It appears in the map's legend and here purely as a text note, acknowledging its exclave status without drawing it into the region framework this dataset otherwise applies to the EU, EFTA, and neighboring/candidate countries.

13. Changelog — v0.2.2 draft

v0.1.3 (this build, Amendment A4): contested/cultural overlays (Sápmi, Székely Land, Kashubia, and similar) are now off by default behind a "Contested & cultural overlays" master toggle in the map sidebar (A4.2), and data/grouping_schemes.json gains a state-boundary-respecting balanced-national scheme with a sovereign_floor list for states that cannot merge upward without crossing a border (A4.1). The itemized list below documents the earlier v0.1.0 → v0.1.2 diff.

A concise list of what changed. Where a figure is cheap to compute from the live data build, it is pulled client-side and marked (live); everything else is a fixed count as of the v0.1.3 draft build, not re-verified on every page load.

cultural units (live)
in-scope countries at ≥97% coverage (live)
special_status (dashed) units (live)