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:
- Language and dialect — recognized regional languages and dialect-atlas classifications (e.g. Pellegrini's Carta dei dialetti d'Italia, Wiesinger's East Franconian classification, Kashubian/Silesian/Moravian census self-declarations).
- Administrative reference — current NUTS-1/2/3 geometry and historic administrative units (duchies, Kingdoms, pre-1990s planning regions) where they carry living identity.
- Watersheds and valleys — river-basin and Alpine/fjord topography that structures settlement (e.g. the Rhône-Alpes corridor, Norway's five fjord-culture nodes).
- Aquatic bioregions (planned layer) — a finer, hydrology-first classification than the topographic watershed/valley signal above: HydroSHEDS-based drainage-basin bioregions, cross-referenced from Jakob's Unlocking Housing project (idea2.site/unlocking-housing). Not yet integrated into any region-boundary decision in this dataset; planned as a dedicated lens in the map's perspectives panel (alongside the political, linguistic, and self-sufficiency perspectives) once that geometry is exported for this dataset's scope.
- Commuting basins — functional urban areas, used to decide how far a metropolitan region's gravity extends (e.g. which Home Counties belong to London's commuter belt versus East Anglia).
- Urban cultural centers — the presence of an institution-bearing city (media, universities, regional government) that a region can plausibly organize around.
Inclusion test
A candidate region had to clear a three-part test:
- one urban center already functioning as a cultural hub;
- its own diversified industrial base (not a monoculture);
- 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
- GISCO
NUTS_RG_20M_2024_4326.geojson— EU27, EFTA, and enlargement/candidate countries (default source). - GISCO
NUTS_RG_20M_2021_4326.geojson— United Kingdom (post-Brexit UK boundaries no longer ship in the 2024 release) and, for the single mixed-sourceireland-unifiedrecord, Ireland too, since the 2021 file happens to carry both countries' geometry under one vintage. - GISCO
CNTR_RG_20M_2024_4326.geojson— country-level polygons for microstates (Andorra, Monaco, San Marino, Vatican City) and for Moldova and Georgia, which have no sub-national NUTS geometry available in this pipeline. geoBoundaries-UKR-ADM1(© OpenStreetMap contributors via geoBoundaries, ODbL) — Ukraine's 27 oblast-level units, fetched because GISCO's own NUTS file ships Ukraine as a single undivided country polygon with no SR2024 sub-national breakdown.
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.
- Water
- Food
- Shelter
- Energy
- Transportation
- Hygiene & Healthcare
- Clothing
- Security (out of scope)
- Digital/Connectivity (out of scope)
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:
- 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).
- 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).
- Train lines — rail corridors as a proxy for lived, everyday connectedness (commuter and intercity), read where identity and catchment both leave a boundary open.
- 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).
- 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.
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.
| 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:
- Current — the region(s) as they sit within today's state boundaries (the dataset's default rendering).
- Connected (sometimes "unified") — a hypothetical cross-border or cross-unit merge that follows the cultural/historical case to its conclusion, ignoring the state line.
- Overlap — both readings shown at once, translucent, with a hatch pattern where they physically overlap, so the disagreement itself becomes visible rather than adjudicated away.
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
- Basque over-coverage. The
connectedview's French-side geometry (FRI15, Pyrénées-Atlantiques) covers all of Béarn, a distinct non-Basque territory, not just Iparralde — an honest over-coverage, stated directly in the view's own note rather than smoothed over. The fix (geoBoundaries FRA ADM3, Bayonne-arrondissement geometry) is identified but not yet integrated; planned for a future pipeline pass. - Northern Ireland stays distinct in every view of
the
irelandset, including the all-islandunifiedview — it renders as a distinct outlined unit on top of the united-Ireland shape rather than disappearing into it, per explicit user instruction that a unification frame must not erase the live internal fault line it would actually have to resolve. - Dutch lowlands, explicitly hypothetical. The
flandersset'sconnectedview (dutch-lowlands-unified) merges Flanders with the Dutch language area across the Belgian-Dutch border; it is labelled as a cultural/linguistic hypothetical throughout, not a governance proposal — component units keep their real parliaments (Vlaams Parlement, Staten-Generaal) in every other view. - Silesia, Poland+Czechia. The
silesiaset'scurrentview keeps Poland's Upper Silesia (Katowice) and Czech Silesia separate by state; itsconnectedview reunites the historic Duchy of Silesia across the modern border assilesia-unified— a cultural mapping exercise, explicitly not a territorial claim. - Liverpool/Manchester overlap. Per direct user request ("suggest a variant with overlaps especially for Liverpool and Manchester"), the two city-regions get a dedicated overlap view showing both catchments translucent, without inventing an artificial third "shared belt" region.
- Pomerania, two versions. The default
broadview matches Statistics Poland's own PL6 macroregion; thesplitview exposes the honest fit gradient behind that convenience, per the user-supplied table:
| Sub-region | Core identity marker | Fits "Pomerania"? |
|---|---|---|
| Kashubia (Tricity hinterland) | Distinct Slavic language, seaside continuity | Strong |
| Kuyavia (Bydgoszcz–Toruń) | Hanseatic/Royal-Prussia river-trade towns | Weak |
| Warmia | Catholic, German-Polish contact zone | Weak |
| Masuria | Protestant, post-war resettled | Weakest |
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
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
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
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
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
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).
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
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.
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.
| 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 (UKC–UKN)
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.
- A Eurostat NUTS / GISCO reference geometry and classification (
NUTS_RG_20M_2024,NUTS_RG_20M_2021,CNTR_RG_20M_2024) - A EU Functional Areas toolkit (commuting-basin definitions)
- A Destatis (Federal Statistical Office of Germany)
- A INSEE (France), Statbel (Belgium), CBS (Netherlands)
- A ISTAT (Italy), INE (Spain), Statistics Portugal / INE Portugal
- A ONS, NISRA, CSO Ireland (UK/Ireland regional statistics)
- A GUS (Poland), Czech Statistical Office, ŠÚ SR (Slovakia)
- A KSH (Hungary), including regscience.hu regional-policy analysis
- A State Statistics Service of Ukraine (UkrStat), pre-war/pre-occupation baselines
- A 2021/2011 national censuses (Poland — Silesian nationality; Czechia — Moravian nationality) ⚠️ 2011 entry >10 years
- A geoBoundaries (Ukraine oblast ADM1 geometry) — © OpenStreetMap contributors, ODbL
- B Assembly of European Regions (2021) — Hungarian regionalisation policy analysis
- B Regional press and regionalism analyses (Scouse/Merseyside devolution, Cornish national-minority recognition, Norrlandsfrågan, Szlonzoki self-declaration reporting)
- C Pellegrini, G.B. (1977) — Carta dei dialetti d'Italia (Emilia/Romagna dialect classification) ⚠️ >10 years
- C Wiesinger, P. (1983) — East Franconian dialect classification ⚠️ >10 years
- C Council of Europe Framework Convention for the Protection of National Minorities (2014 Cornish recognition) ⚠️ >10 years
- C Community/dialectology sources for regional-language status (Kashubian, Rusyn, Occitan-Catalan Roussillon)
- B Ibn Khaldūn, Muqaddimah (14th c.) — origin of ʿaṣabiyya as a social-solidarity concept, used here as a priority-axis label rather than a historical citation ⚠️ >10 years
- A Sametinget (Sweden), Sámediggi (Norway), Saamelaiskäräjät (Finland) — Sámi Parliament competence and jurisdiction, for the parliament-rule partial-exception cases
- A Statistics Poland (GUS) "Polska Wschodnia" macroregion definition; Swiss Federal Statistical Office (BFS) Grossregionen definitions — official-macroregion precedents cited in the parliament-exceptions table
- A GISCO
CNTR_RG_20M_2024— Armenia (AM), Guernsey (GG), Jersey (JE), Isle of Man (IM), Gibraltar (GI) country-level geometry, all already present in the committed file (no new fetch required)
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.
- Two-level model. Cultural units (identity-fine) and representation groupings (40–70 target) are now separate layers — see section 3 — resolving the count tension section 7(f) originally documented as unresolved.
- Coverage holes closed. Spain (La Rioja, Cantabria, Asturias, Extremadura, Murcia, Ceuta+Melilla), Portugal (Alentejo, Centro), Italy (Basilicata/Potenza), and Greece's Ionian islands are all now covered — every one of these was explicitly listed as a v0.1.0 coverage gap (section 7's push-back challenge (e), "assessed and excluded" paragraph, kept above for the historical record — now superseded, see that section's own v0.1.2 note) and is closed as of this build.
- New landmass/territory additions. Armenia
(
am-armenia), the Channel Islands (Guernsey and Jersey, as two separate units — each Bailiwick has its own legislature), the Isle of Man, Gibraltar, and East Thrace (tr-east-thrace, the mandated-covered landmass west of Istanbul, with the rest of Turkey explicitly out of scope). - Ukraine historic splits. The v0.1.0 central-Ukraine catch-all is dissolved into three historically-grounded units: the Cossack Hetmanate core (Poltava+Cherkasy+Chernihiv), Podillia (Vinnytsia+Khmelnytskyi), and Volhynia (Volyn+Rivne+Zhytomyr); Kirovohrad is re-homed to the Dnipro-Zaporizhzhia unit on Zaporozhian settlement-history grounds, reasoned in that region's record.
- Slovakia dipole. Superseding an earlier finer split, Slovakia is now exactly two units: a Bratislava-and-western- Slovakia capital region, and a Košice-Prešov eastern dipole on a Rusyn/Ukrainian-minority basis.
- Rijeka/Kvarner becomes its own Croatian unit (Zagreb/Continental, Istria, Rijeka, Dalmatia — four units where v0.1.0 had fewer).
- Székely Land carved out of Transylvania as its own visible cultural unit (Covasna+Harghita+Mureș), while remaining outside the parliament rule's exception table since no legally-recognized Székely assembly currently exists (section 5 explains the distinction).
- Silesia and Pomerania variant sets — see section 6 — expose the Poland+Czechia cross-border Silesia reading and the Kashubia/Kuyavia/Warmia-Masuria fit gradient behind the default "broad Pomerania" convenience.
- Poles and reach. Every unit now carries a
poleclassification (monopole/dipole/polycentric) with acentral_coordmap marker, and dipoles carry asecondary/secondary_coordpair too (rendered as filled/hollow dots respectively); some units additionally carry areacharray documenting cross-border or cross-region functional influence (Munich, Graz into Slovenian/Carinthian areas, capitals generally). - Beta autarky dimensions — shelter, transportation, hygiene & healthcare, and clothing — are now explicitly labelled as easily importable within the continent, with hygiene & healthcare redefined as production capacity for medical/sanitation wares rather than clinical-quality proxy (section 4).
- Sweden's Norrland split at the Sápmi line: Upper Norrland (Umeå/Luleå) is distinguished from Lower Norrland (Sundsvall/Östersund), mirroring the same-line splits already modeled for Finland and Norway.
- Special-status (dashed) styling is now a first-class schema field, applied to enclaves, microstates, capital city-states, and de-facto-divided or historically-anomalous units (Brussels, Vatican City, Liechtenstein, Vorarlberg's dual orientation, Andorra, Gibraltar, San Marino, Hamburg, Monaco, Ceuta+Melilla, Piedmont's Occitan/ Franco-Provençal valleys, the Crown Dependencies, Cyprus's de-facto division, and East Thrace) — see the live count above.